评论

【经验总结】如何解决微信支付返回签名错误

微信V3支付验签失败经验总结。

搜了一下,发现不少朋友卡在这里了,我自己也被卡了一天多才解决,下面分享下个人经验:

1.检查各参数是否正确,一定要对着微信网站数据过一遍,不要拿中间数据对比,一定要对着微信网站数据过一遍,不要拿中间数据对比,一定要对着微信网站数据过一遍,不要拿中间数据对比。中间别人给的数据,可能已经变了,而没有告知你,这个会浪费不少时间。

2.验证证书是不是对的,这个我也遇到了,拿到的第一版证书也是有问题,幸好后面补发给我了,要不又不知道要卡多久。。证书验证的方法官网有例子,大概命令如下:

openssl x509 -noout -modulus -in wxpay_cert.pem
openssl rsa -noout -modulus -in wxpay_key.pem


两个结果一样就OK的。

3.加密算法可参考官网例子https://wechatpay-api.gitbook.io/wechatpay-api-v3/qian-ming-zhi-nan-1/qian-ming-sheng-cheng,但这个里面有坑,比如哪个随机数,一定不要过长,官网的32位,其实是有问题的,建议拿时间戳(毫秒)试,位数应该有要求。

4.如果还是返回"message":"错误的签名,验签失败",这个时候,你可以拿官网给的两个工具试。链接地址:https://pay.weixin.qq.com/wiki/doc/apiv3/wechatpay/wechatpay6_0.shtml,一个是可以验签的,把自己拼的填进去然后比对工具跑出来的对不对,不对的话,就是加密算法有问题,对了,那就是有参数或者数据拼接格式不对,这个时候可以用第二个工具。第二个工具是个postman的配置,直接按照git上的readme流程走,就可以了,有3个参数需要填:

填好之后,直接发个测试的req,如果还是“错误的签名,验签失败”,那么基本就可以确定你上面3个参数有问题,因为中间计算签名都是微信自己算的,这个我自己测试过,是对的,还是靠谱的。这个时候就回到步骤1,老老实实核对参数,步骤2校验证书吧。

最后一次编辑于  2021-02-24  
点赞 2
收藏
评论

2 个评论

  • 王横
    王横
    2023-01-11

    随机数32位没问题,我们项目一直在用32位的随机数

    2023-01-11
    赞同
    回复
  • 赫
    2021-02-24

    感谢分享

    2021-02-24
    赞同
    回复
登录 后发表内容