在微信支付之后,小程序会主动向服务端发送支付状态.为了防止恶意篡改,必须生成签名发送给服务端进行验证.
签名生成官方文档: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.查看服务端返回结果.
谢谢大家~
网友评论