收藏
回答

微信支付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中是没有以下文档中提到的两个方法的,如下图所示


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

4 个回答

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

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

    2019-01-20
    有用 2
    回复 1
    • 富贵
      富贵
      2019-01-24

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

      2019-01-24
      1
      回复
  • MOSADE
    MOSADE
    2022-02-07

    2022-2-7。下载下来的SDK 使用的是生产的商户信息,跑了一下报错


    java.lang.NullPointerException

    at com.github.wxpay.sdk.WXPayRequest.request(WXPayRequest.java:122)

    at com.github.wxpay.sdk.WXPayRequest.requestWithoutCert(WXPayRequest.java:232)

    at com.github.wxpay.sdk.WXPay.requestWithoutCert(WXPay.java:158)

    at com.github.wxpay.sdk.WXPay.unifiedOrder(WXPay.java:364)

    at com.github.wxpay.sdk.WXPay.unifiedOrder(WXPay.java:340)

    at com.github.wxpay.sdk.Test.main(Test.java:30)

    Disconnected from the target VM, address: '127.0.0.1:52995', transport: 'socket'


    2022-02-07
    有用
    回复
  • A
    A
    2020-07-20

    一开始,我还不相信,经过验证后,我才发现怎么大公司的大佬也能这么不负责了。无奈

    2020-07-20
    有用
    回复
  • 简单
    简单
    2020-07-07

    哥,我是一个java开发初学者,我的微信支付,3.0.9版本的依赖导入不就去(maven镜像是阿里的),你可以给我他的 jar包吗?或者有没有其他方式导入 3.0.9的SDK版本

    2020-07-07
    有用
    回复 2
登录 后发表内容