近期调试收付通时遇到问题:小程序调起支付,弹出错误提示框:支付验证签名失败
操作步骤:
按照官方文档:https://pay.weixin.qq.com/wiki/doc/apiv3/wxpay/ecommerce/combine/chapter3_6.shtml
1、根据小程序appid,时间戳,随机字符串nonce以及prepay_id生成待签名串
2、使用商户私钥证书进行SHA256 with RSA签名
3、构造返回数据传给客户端,其中paySign为签名值,signType签名类型为RSA
问题说明:
1、商户证书以及签名算法在其它API调用场景可正常验证通过,并且签名值使用openssl工具核对正常,应该可以排除问题
2、查到客户端调起支付的API文档中描述,signType合法值只能为MD5或HMAC-SHA256(此处与收付通文档矛盾,或是文档未更新?)
3、依照客户端api文档使用MD5签名算法,仍然提示同样的错误信息
相关信息如下,希望大家帮忙解答!
小程序appid = wxe0a0e0d77287cb3d 服务商商户mch_id = 1513200771
问题解决了吗?同样碰到该问题
请按照以下几点进行排查:
1、使用签名检查工具(https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=20_1)校验签名算法是否有误
2、确认秘钥是否有误(服务商模式使用服务商商户号秘钥,秘钥是在商户平台配置,如果同一商户号调用其它接口成功可排除是秘钥问题)
3、确认接口实际的请求参数与生成签名原串的参数一致,不能增加或缺少参数(可通过打印签名原串进行排查)
4、确认参数的大小写,参数名与接口文档一致
5、签名原串的参数值使用原始值,不需要encode
6、接口需要使用UTF-8编码
7、调用“小程序支付API”中appid没有按照文档要求的格式
8、调用“小程序支付API”中signType类型与“统一下单接口”不一致
8、收付通里是合单下单接口,只支持SHA256-RSA
参考https://blog.csdn.net/u011941145/article/details/104925044
{
"code": 200,
"msg": "请求成功",
"data": {
"appid": "wx09f6dc683d4ab4d8",
"timeStamp": 1585017065,
"nonceStr": "uGJowQ5ffD683Mf7vwPQ",
"package": "prepay_id=wx201410272009395522657a690389285100",
"signType": "RSA",
"paySign": "fxrPi4dOyMuxDIneOXLkPwVeSXBYAey9N0awGPxPZ3gbQTABfVy7LBxtcBJIUGdvYNURhYBqARutgUB+MeSz5r9V9Dn/3X7ka9ItAPIhakMi/X1Sd/1Y4YTxyY3cEh7u88QWXCoQ8+JHBp2WNcjCRp8f56FgtroWIKLDEZWdV9hz6PiudQKulb3099MsKTXjuNxgFfryLLkrVCp4ihcHMoKqbVtcTYZZNeBll1cq9pz7RvPiX7+eFhhrxjFEVHYhGXNqwMOl169Mon0Sg/ueMmmXJcmGVUvkdoi0fs78n4WRgFhOvEFOayv9UfSMdmbdjaY2sqkY0XJ6JqXKvFsDdQ=="
}
}