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

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

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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值