微信支付前端对接流程
以vue spa项目为例,测试微信支付对接。
- 在index.html中添加sdk
在main.js中注册wx全局变量
Vue.prototype.$wx = window.wx
特别说明: 如果使用了weixin-js-sdk的npm包,在测试环境会导致wx的值是undefined,在本地环境没问题,具体原因未知,因此还是建议在index.htlm中引入sdk。
- 在支付后台配置支付域名,建议是一级域名,如payment.domain.com,也就是前端的访问域名,主要用于回调跳转。
调试过程中如果遇到微信提示“回调地址未注册”,说明地址配置错了。地址不支持配置192.168类型的地址,因此调试支付的时候,建议放到测试环境或者使用类似ngrok的代理工具。
- 流程说明:获取微信授权code,用code请求后端接口获取openid,openid用于唯一标识当前用户,因此openid是不变的,但是code每次授权都是不一样的并且有时效性,所以应该建议每次打开页面都获取最新的code。
当我点击支付按钮,用当前用户的openid发起支付请求,后端返回我们拉起支付需要的参数(前端不参与加密的任何过程),特别要注意的是timestamp的s是小写,如果支付返回“签名验证失败”可能是这个问题导致的,我被这个问题坑了一下。。。