微信签名验证原理

很多人在做微信支付的时候会在生成签名这里遇到困难,主要原因之一是不知道微信签名验证的原理,我这里简单谈一下。

https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_1

这是官方文档,参数可以对照一下。

我们生成的签名字符串是这样子的

appid=appid&attach=attach&body=body&device_info=device_info&mch_id=mch_id&nonce_str=nonce_str&notify_url=notify_ur&openid=openid&out_trade_no=out_trade_no&total_fee=1&trade_type=JSAPI&key=key

然后根据md5算法得到签名,而这个签名在提交支付的时候往往会提示签名是错误的

网上同质化的内容我就不说了,可以自己去百度,我说一下签名验证的原理。

当你把签名字符串传递到微信后,微信会将appid、key两个参数进行替换,微信是知道那个小程序发起的支付请求,所以微信后台知道是那个appid,其次微信后台会根据mch_id得到key,所以会把key替换掉,然后,微信会根据替换后的签名字符串按照md5自己生成一遍签名,最后将你传入的sign和微信后台生成的sign进行比对,如果相等,签名校验成功,如果不等,则校验失败

同时,微信后台也会校验openid是否属于此appid(也就是appid的这个小程序是否有这个用户),如果openid的用户不属于appid的小程序,会提示openid错误。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值