微信支付的坑

参数问题
安全目录问题

参数问题

微信支付具体的代码参考官方文档,但是在使用的时候还是遇见一个坑。

写法一(success)

WeixinJSBridge.invoke('getBrandWCPayRequest', payload, function (res) {

});

写法二(failed)

wx.chooseWXPay(payload);

分析学习

使用写法二的时候不能成功唤起支付,调试的时候发现 timeStampundefined ,跟踪发现如下问题:

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,这点错了会导致“签名验证失败”。

你可能感兴趣的:(微信支付)