收藏
回答

微信支付Java SDK3.0.9 bug

问题:sdk非沙盒环境所有的签名方式都是HMACSHA256,沙盒环境为MD5


描述:在调用官方sdk(java 3.0.9)提供的统一下单api ( unifiedOrder )时,返回签名报错,跟踪了一下代码,发现是官方sdk使用的签名方式错了,在Java sdk 中,只有配置在沙盒模式,才会使用MD5签名,所以如果生产环境则会报错。在微信支付文档中统一下单api签名方式要求为MD5 (文档地址:https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=4_3


具体错误:com.github.wxpay.sdk.WXPay


这里如果配置了沙箱环境,则签名方式为MD5


由于未使用上面的沙箱画家,所以在下面签名时使用了SHA256,导致签名错误



统一下单方法会调用上面的fillRequestData方法


以上,

请官方跟新


ps:官方Java sdk的使用文档太…也应该更新了,比如3.0.9中是没有以下文档中提到的两个方法的,如下图所示


回答关注问题邀请回答
收藏

1 个回答

  • hey树先森
    hey树先森
    2019-01-20

    最新测试,发现不用MD5加密也可以成功……

    2019-01-20
    赞同 2
    回复 1
    • 富贵
      富贵
      2019-01-24

      虽然API可以下单成功,但是当我使用下单成功的数据进行MD5签名后返回给APP端,然后APP使用这些数据去唤起支付页面时会告知签名错误。所以还是需要改成下单前的签名还是需要MD5。这个错误隐藏的挺深的。。。

      2019-01-24
      1
      回复
登录 后发表内容