问题描述:服务商模式替特约商户发起 小程序的微信支付,服务商下单成功,但二次签名之后 小程序调支付返回 “支付验证签名失败”
我通过2种方式都是返回“支付验证签名失败”,具体详细信息如下:
a、MD5方式:签名参数 和 签名结果 都是一样的,但还是返回 “支付验证签名失败” (这里 商户直连方式 签名是没有问题,仅仅是服务商模式下 换成了 服务商的 api 密钥,appId还是唤起小程序支付的 小程序appId)
b、通过RSA 方式:也是返回“支付验证签名失败”,签名过程是 通过 官网下的 demo 示例操作的,过程如下:
签名结果如下:
错误提示:客户端JSAPI调起支付后返回提示:支付验证签名失败
折腾了一下午和一晚上终于解决了。我这边的问题是:我们之前已经对接 过app的微信支付,后台直接返回了
{ "package": "Sign=WXPay", "appid": "wx666", "sign": "7E9360EE36", "partnerid": "1116401", "prepayid": "wx66000", "noncestr": "345332", "timestamp": "1625620895" } 这样的数据各式
我当时的做法是拿着后台返回的这些参数 格式化后直接去调用微信支付。但是注意注意,JSAPI加密sign的方法和app不一样, sign不能混用,它是是 需要把appId , timeStamp, nonceStr,package, signType 5个参数拼接key 以后 再使用md5加密
代码看了看,没发现异常,顺这个思路排查下:1. 二签的时候,字符串叠加时,timestamp的值是什么(需要秒级整数10字节);2. 二签时候,私钥是服务商私钥,看看是不是没给对
寻求大家帮助,谢谢!