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

如题所述

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

签名生成官方文档: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.查看服务端返回结果.

谢谢大家~