关于微信APP支付,提示支付验证签名失败
2017-04-12 11:42
1476 查看
最近做微信APP支付,在“统一下单”里加签没有问题,调用成功,但是在 “调起支付”后却提示 支付验证签名失败。
先说一下请求的参数,参数一共有七个:
prepayid(统一下单里返回的标识符),
partnerid(商户号),
appid,
package(微信要求必须有,内容是“Sign=WXPay”),
noncestr(随机数,不适用微信返回的,是重新生成一个,注意统一下单里的参数是nonce_str),
timestamp(时间戳,十位,注意统一下单里的时间是完整的时间,这里是时间戳),
sign(签名,将上述字段重新签名,而不是用统一下单返回的sign)。
这个问题折磨了我一上午,以为统一下单里签名没问题,那么调起支付就不会在加签上出错,最后用微信的签名生成工具对比了一下签名结果发现 程序生成的签名与官网生成的不一样,然后把签名过程输出了下,发现 package 这里出现了问题。
Sign=WXPay,我在加签里对内容进行了utf-8编码,而恰巧,一不小心 “=” 也参与了编码,于是 就变成了 Sign%3DWXPay,然后 错误的package进行了错误的加签,导致签名出错。
解决方案:在加签过程里修改,如果map匹配到 package,那么map的值不参与编码。官方签名校验工具地址:https://pay.weixin.qq.com/wiki/tools/signverify/。
(吐槽一句,微信支付的文档真是一团糟,要啥啥没有,找啥找不到,而且还出现了 多个标准。当然,也可能是我水平太差。。)
先说一下请求的参数,参数一共有七个:
prepayid(统一下单里返回的标识符),
partnerid(商户号),
appid,
package(微信要求必须有,内容是“Sign=WXPay”),
noncestr(随机数,不适用微信返回的,是重新生成一个,注意统一下单里的参数是nonce_str),
timestamp(时间戳,十位,注意统一下单里的时间是完整的时间,这里是时间戳),
sign(签名,将上述字段重新签名,而不是用统一下单返回的sign)。
这个问题折磨了我一上午,以为统一下单里签名没问题,那么调起支付就不会在加签上出错,最后用微信的签名生成工具对比了一下签名结果发现 程序生成的签名与官网生成的不一样,然后把签名过程输出了下,发现 package 这里出现了问题。
Sign=WXPay,我在加签里对内容进行了utf-8编码,而恰巧,一不小心 “=” 也参与了编码,于是 就变成了 Sign%3DWXPay,然后 错误的package进行了错误的加签,导致签名出错。
解决方案:在加签过程里修改,如果map匹配到 package,那么map的值不参与编码。官方签名校验工具地址:https://pay.weixin.qq.com/wiki/tools/signverify/。
(吐槽一句,微信支付的文档真是一团糟,要啥啥没有,找啥找不到,而且还出现了 多个标准。当然,也可能是我水平太差。。)
相关文章推荐
- 微信公众平台支付 一直提示签名认证失败,签名对比正确,却提示签名不正确,关于prepay_id造成签名验证不正确的问题
- 微信公账号支付:签名验证失败的解决办法
- 微信jsapi支付验证签名失败
- 微信支付:服务器(Java)统一下单获取prepay_id成功,前端公众号里调用jsapi提示支付验证签名失败
- 微信小程序支付开发爬坑攻略(支付签名验证失败)
- 微信支付提示支付验证签名失败
- java官方工具包微信H5支付报“支付验证签名失败”
- 关于ThinkPHP框架开发微信公众号在微信后台配置服务器URL提示Token验证失败的解决方案
- 关于百度地图,微信等一系列需要MD5,SHA1验证时出现key校验失败问题。
- 微信刷卡支付_windows server上中文导致签名失败的解决办法
- 微信H5支付 提示"网络环境未能通过安全验证,请稍后再试"
- 关于微信APP支付遇到的坑
- 关于魅族手机 安装APP提示安装失败 更新包不兼容的解决方法
- 关于被微信App支付坑的过程
- 微信公众号支付支付验证签名失败及公众号支付总结
- 微信支付报错“支付签名验证失败”
- 关于android微信app支付
- 支付宝微信app 支付签名后台完整demo
- 微信小程序支付失败 签名失败及签名错误的解析 -- KeeSoft框架
- 关于微信服务商用户调用接口提示签名错误的原因