微信支付签名错误解决方法

1.V3签名错误

1.1服务端签名错误(如下单) 参数错误和方式错误无先后顺序

1.1.1 签名方式错误

当签名参数无误时,就是签名的方式有问题,可以使用以下方式检查

使用官方验签工具进行验签,地址:https://pay.weixin.qq.com/wiki/doc/apiv3/wechatpay/download/Product_5.zip

明文填写方式参考官方签名生成文档 ,地址:签名生成-接口规则 | 微信支付商户平台文档中心

注意红色方框内容,【\n】在验签工具明文中是换行的意思,不是字符串,注意一共有5个,所以POST请求在验签工具里面最后一行需要换一行,GET需要换两行,并且GET请求需要在URL末尾附加有’?'和对应的查询字符串
POST请求可参考以下截图

GET请求可参考以下截图,注意【?】为英文状态下的?

1.1.2 签名参数错误(含私钥等参数) 参数错误和方式错误无先后顺序

当签名方式无误时,就是签名的参数有问题,可以使用以下方式检查
使用官方postman脚本进行测试,地址:GitHub - wechatpay-apiv3/wechatpay-postman-script: 微信支付 APIv3 的调试工具
注意:需要先下载脚本后导入postman里进行配置

严格按照官方步骤进行配置,注意这里的配置,Authorization的值就是,不需要自己生成签名

配置好之后先测试下载证书(官方已经配置好,直接可以调用)如果成功下载证书,说明私钥、商户号、证书序列号是没有问题的,根据请求方式选择【证书下载】或者【发放指定批次的代金券】替换一下参数和请求URL即可测试出错的接口

1.1.3 Authorization头部值错误

1.商户号mchid 与使用私钥不匹配或不存在(注意:千万不可以有空格)
2.证书序列号serial_no与当前私钥对应在商户平台查看的证书序列号不匹配(注意:如果不匹配可能会导致系统繁忙,请稍后重试)
3.随机字符串nonce_str与组成签名的明文中的随机字符串一致(注意:千万不可以有空格)
4.时间戳timestamp与组成签名的明文中的时间戳一致(注意:千万不可以有空格)
5.组成请求头时是一行数据,WECHATPAY2-SHA256-RSA2048 mchid=“1900009191”【中间是一个空格,不是换行】

6.无论是下单还是唤起,如果是服务商模式,均使用服务商的参数(私钥、商户号、证书序列号)唤起和下单一定需要使用相同的私钥进行签名

1.2唤起签名错误

1.2.1 签名参数错误

1.严格按照文档需要的参数进行签名,如小程序唤起支付

注意参与签名时不要有空格
2.私钥文件需要和下单时一样,如果是服务商模式,均使用服务商的
3.唤起的参数字段名大小写必须与文档中一致,注意签名方式为RSA
4.测试时以上均无误,则把前端参数写死后测试

1.2.2 签名方式错误(前后端签名方式需一致)

1.签名方式按照文档中的方式进行签名,可用签名验证工具进行验签,明文排放规则如下

这里的【\n】在验签工具明文中是换行的意思,不是字符串注意一共有4个,明文最后一行需换行

2.V2签名错误

2.1服务端签名错误(如下单)

使用官方签名工具验证签名,复制请求的XML请求串,使用api秘钥验签
签名方式按照加密的方式验证,例如MD5

点击校验签名,就会得到验签的结果

使用官方签名工具生成签名,使用postman测试,无需任何配置,复制粘贴请求地址和请求参数,就可以校验参数和秘钥是否正确
注:需要使用证书的接口,可以自行在网上查询如何导入证书
地址:https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=20_1

注意签名方式和字段签名方式需要保持一致,填写时不要有空格,注意大小写需要与文档一致
如果使用验签工具生成签名后请求接口依然提示签名错误,那就是API秘钥有问题,登录商户平台重置秘钥后再重试
秘钥key设置方式:PaySignKey(APIv2密钥)设置方法
如果是服务商模式,均使用服务商的秘钥

2.2唤起签名错误(前后端签名方式需一致)

唤起支付时需要按照文档要求生成签名,不是用下单成功后返回的签名,注意签名的参数大小写需要与文档一致

可以使用验签工具生成签名值写死在前端进行测试,签名方式及秘钥key需要下单时一致
唤起时的签名错误可能有:
1.如参与签名字段的大小写或者不是文档规定使用的参数(有缺少或有多余的参数)
2.生成签名的秘钥key错误,注意一点是在商户平台设置的api秘钥,设置地址:PaySignKey(APIv2密钥)设置方法
服务商模式下单和唤起都需要使用服务商的秘钥
3.前后端交互问题,可能前端传递的参数为空或错误
4.注意唤起的方法里的字段需要与文档中一致,不可以缺少或者多余

字段注意不要有空格,需要真实参数【appId必须是当前唤起主体的appId,例如小程序就必须是当前唤起支付的小程序appId,且和下单时的appId一致】

3.V3验证签名错误

在代码中验签失败的时候,可以使用官方验签工具进行验签,下载地址:https://pay.weixin.qq.com/wiki/doc/apiv3/wechatpay/download/Product_5.zip
验签是需要使用平台证书,不是使用商户证书,平台证书接口文档:平台证书-文档中心-微信支付商户平台
获取到平台证书后需要解密,解密文档:证书和回调报文解密-接口规则 | 微信支付商户平台文档中心
明文和签名填写方式参考官方验证签名文档 ,文档地址:签名验证-接口规则 | 微信支付商户平台文档中心
平台证书、明文、签名都得到之后,可以使用验签工具进行验签,文档中的/n换行在验签工具中是需要手动换行的,所以最后一行也是需要换行。如图

如有其他签名错误及解决方法欢迎补充

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Android应用在集成微信支付时,需要对应用进行签名签名的目的是为了确保应用的身份和安全性。在正常情况下,通过正确的签名,应用可以正常使用微信支付。 然而,如果在Android应用签名之后,出现微信支付签名错误的情况,可能是由以下原因造成的: 1. 签名文件不正确:在签名应用时,可能使用了错误签名文件或者签名文件被篡改,导致签名不匹配,从而引发微信支付签名错误解决方法:确保签名文件的正确性和完整性,可以重新生成一个正确的签名文件,并在微信开放平台更新应用的签名信息。 2. 签名算法不匹配:微信支付使用的签名算法要求和应用的签名算法不一致,导致签名错误解决方法检查微信支付文档中要求的签名算法和应用所使用的签名算法是否一致,如果不一致,需要对应用的签名算法进行调整。 3. 秘钥不正确:在签名过程中,可能使用了错误的私钥或者公钥,导致签名不匹配。 解决方法:确保使用正确的秘钥进行签名,可以重新生成一个正确的私钥和公钥,并在微信开放平台更新应用的签名信息。 总之,当Android应用在签名之后出现微信支付签名错误时,可以通过检查签名文件的正确性,匹配签名算法和秘钥的正确性等来解决问题。如果问题仍然存在,可以联系微信支付技术支持寻求帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

开源商城源码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值