收藏
回答

微信支付JAVA-SDK接入问题

使用的官方SDK中的QuickStart

https://github.com/wechatpay-apiv3/wechatpay-java

[{"code":"SIGN_ERROR","detail":{"detail":{"issue":"sign not match"},"field":"signature","location":"authorization","sign_information":{"method":"POST","sign_message_length":255,"truncated_sign_message":"POST\n/v3/pay/transactions/native\n1766483670\nACnh2ue9GIw4pfM68wXMgHe7szDTl9Ma\n{\"appid\"\n","url":"/v3/pay/transactions/native"}},"message":"签名错误,请检查后再试"}]

请问官方有提供签名校验工具吗?下载到本地输入证书,商户号等信息后自动测试的。目前看都是根据指引下载的证书和公钥文件啥的。应该没问题。

现在不知道是文件有问题,密钥有问题还是什么地方有问题!

        // 使用微信支付公钥的RSA配置
        Config config =
                new RSAPublicKeyConfig.Builder()
                        .merchantId(merchantId)
                        .privateKeyFromPath(privateKeyPath)
                        .publicKeyFromPath(publicKeyPath)
                        .publicKeyId(publicKeyId)
                        .merchantSerialNumber(merchantSerialNumber)
                        .apiV3Key(apiV3Key)
                        .build();


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

2 个回答

  • Memory (私信不回复)
    Memory (私信不回复)
    2025-12-23

    官方 sdk 报错签名问题一般是商户私钥给的不对

    2025-12-23
    有用 1
    回复 13
    • y
      y
      2025-12-24
      商户API私钥用的是apiclient_key.pem呀,这个在以前的v2版本接口上还在正常工作,微信商户后台显示有使用次数。


      有根据文档https://pay.weixin.qq.com/doc/v3/merchant/4012072428校验,和微信商户后台显示的有使用次数的商户证书序列号是一致的。


      pub_key.pem也是下载的微信支付公钥和对应的PUB_KEY_ID_011504***


      微信支付商户平台上好像也没有说得重新申请证书来的https://pay.weixin.qq.com/doc/v3/merchant/4012072428


      请问您说的商户私钥给的不对具体有哪些可能的情况?
      2025-12-24
      回复
    • y
      y
      2025-12-24回复y
      商户API证书的截图放错了,上面的是从文档里截的图显示的未申请,实际是已申请且正常有使用的
      2025-12-24
      回复
    • Memory (私信不回复)
      Memory (私信不回复)
      2025-12-24回复y
      API V2 接口除了极少数接口都是不使用商户 API 证书的
      2025-12-24
      回复
    • Memory (私信不回复)
      Memory (私信不回复)
      2025-12-24回复y
      代码中给的商户私钥非本商户或者不是一个正常的私钥
      2025-12-24
      回复
    • y
      y
      2025-12-24回复Memory (私信不回复)
      准备用的是官方最新的v3接口,用sdk接入。测试过商户私钥应该是本商户的,通过openssl看过,商户证书序列号和商户号和商户后台是一致的。
      请问您说的不是一个正常的私钥是什么情况?该如何验证呢?
      2025-12-24
      回复
    查看更多(8)
  • yqqqq
    yqqqq
    2025-12-24

    我也是使用的公钥模式,RSA配置代码和你一样。

    我在.publicKeyFromPath(publicKeyPath)这行报错:
    Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.wechat.pay.java.core.Config]: Factory method 'wechatPayConfigBuild' threw exception with message: Illegal base64 character 2d
    
    请问这是什么问题,公钥证书不对吗?
    


    2025-12-24
    有用
    回复 4
    • y
      y
      2025-12-24
      你这个应该不是吧,看着是用错了publickey,这Illegal base64 character 2d一般是文件不对,公钥地址是不是配错文件了?
      2025-12-24
      回复
    • yqqqq
      yqqqq
      2025-12-24
      publicKeyFromPath这个公钥文件从哪里获取呀,我是从商户平台,API安全下载的,里面有私钥pem文件、 p12 证书、apiclient_cert.pem文件。
      然后我publicKeyFromPath路径用的就是apiclient_cert.pem文件。
      2025-12-24
      回复
    • y
      y
      2025-12-24回复yqqqq
      https://pay.weixin.qq.com/doc/v3/merchant/4012153196也是这里,在商户api证书下面,有一个微信支付公钥
      2025-12-24
      回复
    • yqqqq
      yqqqq
      2025-12-25回复y
      ok,找到了
      2025-12-25
      回复
登录 后发表内容