参数问题
安全目录问题
参数问题
微信支付具体的代码参考官方文档,但是在使用的时候还是遇见一个坑。
写法一(success)
WeixinJSBridge.invoke('getBrandWCPayRequest', payload, function (res) {
});
写法二(failed)
wx.chooseWXPay(payload);
分析学习
使用写法二的时候不能成功唤起支付,调试的时候发现timeStamp
是undefined
,跟踪发现如下问题:
server给的payload
格式如下:
nonceStr: "***"
package: "prepay_id=***"
paySign: "***"
signType: "MD5"
timeStamp: "***"
需要注意的位置是timeStamp
,看文档需要的键名是timeStamp
,但是实际在jssdk中通过f(a)
方法的调用时是通过timestamp
获取的
chooseWXPay: function(a) {
c(p.chooseWXPay, f(a), a)
}
function f(a) {
return {
timeStamp: a.timestamp + "",
nonceStr: a.nonceStr,
"package": a["package"],
paySign: a.paySign,
signType: a.signType || "SHA1"
}
}
解决方案
server给定timestamp,fe手动添加timestamp
回调响应的key也切换为驼峰命名了(2017-08-31更新)
- WeixinJSBridge.invoke
err_msg
- wx.chooseWXPay
errMsg
2017-09-28
spa单页url中新增了其它参数,再继续支付会出现报错 “access_denied”
- 更新wx.config
- 带参数重新加载页面(相当于更新)
安全目录问题
开始调试的时候把 debug: true
很多错误信息真机调试会弹出来,调试起来方便一些。 {errMsg: chooseWXPay:fail}
需要配置一下安全目录。
多个商户号的情况下,一定要找到对应的公众号来配置目录。
小程序关联支付易错问题
服务号已经有了,直接关联的小程序的APPID,这些地方都不会引起问题。关联以后也会生成一个商户号,开发的时候还是使用主商户号就行了。易错点:签名时key不是appSecret,这点错了会导致“签名验证失败”。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。