微信小程序-微信支付签名验证

微信小程序-微信支付签名验证,第1张

在微信支付之后,小程序会主动向服务端发送支付状态.为了防止恶意篡改,必须生成签名发送给服务端进行验证.

签名生成官方文档:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=4_3

签名验证分为如下几步:

1.与服务端确认上传的签名内容(即上传参数key=value)以及加密方式.并且要到商户平台设置的密钥key.

2.生成随机字符串nonceStr.

3.将要上传的参数,对参数按照key=value的格式,并按照参数名ASCII字典序排序,比如:

假设传送的参数如下: 

appid: wxd930ea5d5a258f4f 

mch_id: 10000100 

device_info: 1000 

body: test 

nonce_str: ibuaiVcKdpRxkhJA

则:stringA="appid=wxd930ea5d5a258f4f&body=test&device_info=1000&mch_id=10000100&nonce_str=ibuaiVcKdpRxkhJA"

4.拼接API密钥,例如:stringSignTemp=stringA+"&key=192006250b4c09247ec02edce69f6a2d" //注:key为商户平台设置的密钥key

5.对拼接秘钥后的字符串进行加密并且转换为大写.(加密方式自定)

6.将参数以及加密得到的sign一起上传给服务端进行验证.

7.查看服务端返回结果.

谢谢大家~

1.下单的签名方式使用MD5方式

2.利用下单获取到的prepay_id,来进行调起支付阶段的paySign的签名

3.如果提示签名验证失败:

        ①首先检查你的5个参数是否完整:timeStamp,nonceStr,package,signType,paySign

        ②signType 必须是MD5,官方demo不是MD5,改为MD5,这也是大坑,当然我自己用python 写的时候直接用的MD5

        ③在做paySign签名的时候,需要6个参数,上述5个参数去掉paySign(不参与签名),加上appId(注意是大写I,这是个大坑,这个错了那签名必然失败)和key

        ④如果上述步骤没问题还是失败,那么去https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=20_1验证以下你的签名是否通过

        ⑤还有一点签名的时候必须把所有英文全部转为大写

4.欢迎评论,多多交流


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12173373.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存