微信支付 jsapi 安卓报错支付签名验证失败

mac2024-01-24  44

先推荐一个 官方验证签名是不是一样

https://pay.weixin.qq.com/wiki/tools/signverify/

 

我的验证就是不一样,肯定是我这边后台出问题了。

 

然后我发现 我错误的地方很傻逼。

我这边获取到了 perpay_id 然后 返回给前端的时候 还要再生成一次 paysign

结果 我还是 把之前 生成的 paysign的 map 放进去 ,后来发现  要 把返回给前端的  也就是带 prepay_id的map 去生成一次新的paysign

这是第一个错误的地方 然后发现怎么还是不一样 ,结果发现   后面生成 paysign的 key 是固定的

这是我之前错误的 map:

Map<String, String> result2 = new HashMap<>(8); result2.put("app_id", appId); result2.put("time_stamp", result.get("timeStamp")); result2.put("nonce_str", result.get("nonceStr")); result2.put("sign_type", "MD5"); result2.put("package", "prepay_id=" + prepayId);

这是我之后正确的map(注意map 的key 从下划线变成了驼峰):

Map<String, String> result = new HashMap<>(8); result.put("appId", appId); result.put("timeStamp", WXPayUtil.getCurrentTimestamp() + ""); result.put("nonceStr", WXPayUtil.generateNonceStr()); result.put("signType", "MD5"); result.put("package", "prepay_id=" + prepayId);

这下 代码生成的签名和 官方网站生成的签名一摸一样了。

 

另外 如果 你发现你官网的签名和代码的签名一样 那么 恭喜你很可能是另外一个坑了;

可能坑1:1发送的sign_type 不对,看网上说 官网的sdk 是默认HMACSHA256,而 api 说的是默认 MD5

                 2有人用iphone 测 发现 bug 是支付目录无权限,而安卓是支付签名验证失败,这一点要去 微信那改。

最新回复(0)