杰者的备忘录

当前位置:   网站首页 >> 微信

小程序微信支付的一些要注意的坑

接到一个朋友的电话,说他小程序的微信支付折腾了一个多星期,一直签名错误。由于当时我自己折腾的时候一直很顺利,所以也没当回事。帮他分析了一下,基本就是他没看懂微信的文档导致签名的算法没写对导致的。确实微信官方的文档写作水平很一般。


现在放一些具体的例子在下面给进来的人参考。


首先统一下单里,签名部分因为微信官方文档没有给一个完整的例子,我朋友就掉坑里了。下面提供一个完整的例子(都是必填的参数,排好序的)也就是官方文档里的stringA,注意这里的appid是小程序的appid不是公众号的appid,不要搞错



appid=wxfxxxxxe1a&body=test&mch_id=13000001&nonce_str=khanhbkrff7wgv4e1d46&notify_url=https://wx.xxxxx.com/pay/wxpay/notify.asp&openid=oV7Qxxxxxxx5PpA&out_trade_no=1310000001&spbill_create_ip=119.0.0.0&total_fee=10000&trade_type=JSAPI



然后再把微信支付后台那个自己设置的32位密码用参数名key加在最后面然后MD5,例:


MD5(appid=wxfxxxxxe1a&body=test&mch_id=13000001&nonce_str=khanhbkrff7wgv4e1d46&notify_url=https://wx.xxxxx.com/pay/wxpay/notify.asp&openid=oV7Qxxxxxxx5PpA&out_trade_no=1310000001&spbill_create_ip=119.0.0.0&total_fee=10000&trade_type=JSAPI&key=192006250b4c09247ec02edce69f6a2d)


如果你的MD5出来是小写的,再把它转成大写就OK了。



然后来到wx.requestPayment的那个签名,我朋友又掉坑里了。上面统一下单的签名是用下划线命名法,我朋友以为都一样,就用了相同的方法去处理wx.requestPayment的签名,于是又不对,其实paySign签名是用的驼峰命名法。也就是没有下划线要注意大小写,特别是appId,I是大写的。顺序是:


appId=wxfxxxxx1a&nonceStr=jLHQ2b9v0OpCzcy8&package=prepay_id=wx20171116000000828109&signType=MD5&timeStamp=1510769404854&key=192006250b4c09247ec02edce69f6a2d


还是32位MD5大写就行了。


于是很顺利的解决了朋友折腾了一多星期的问题。我当时没这么折腾啊,就一个多小时全搞定。所以写程序之前多仔细读几遍文档还是很重要滴。


发表我的评论

Hi,您需要填写昵称和邮箱!

  • 必填项