最近项目用到jsapi 支付 ,服务端下单,都正常,然后按照网页端的参数文档设置参数
注意这里的timeStamp S 是大写
然后根据jssdk wx.chooseWXPay 接口参数
乍一看 都能对号入座
然后就唤起支付了
不幸的是调用失败,报支付验证签名错误
然后就以为是签名错误,到处排查,但是无论怎么验证,签名计算就没问题
后来就用Domo上的WeixinJSBridge 唤起,居然成功了
这样就很奇怪,同样的参数,为什么同样的参数,用jssdk 签名错误,但是WeixinJSBridge 就可以,都是微信的api啊
问了技术客服,客服居然说 支付只支持WeixinJSBridge ,这不明显敷衍嘛
然后我就仔细看了下 jssdk 文档
文档上说,jssdk 中所使用的timestamp S 均为小写,但是后端的计算签名S用大写, 而且appId参数也没了,这也太不规范了,不仔细看谁能注意这个
后来就按照jssdk 文档改正过来 果然成功了,
但是 这个appId 最好要加上,要不然有时候会报appId未填写
fxxk small D