收藏
回答

微信小程序支付下单,响应验签失败

  1. 采用api版本:
com.github.wechatpay-apiv3wechatpay-java0.2.17

2.配置采用微信公钥模式

public Config getMerchantConfig(){
    Config config = new RSAPublicKeyConfig.Builder()
            .merchantId(merchantConfig.getString("merchantId"))
            .privateKeyFromPath(merchantConfig.getString("privateKeyFromPath"))
            .publicKeyFromPath(merchantConfig.getString("publicKeyPath"))
            .publicKeyId(merchantConfig.getString("publicKeyId"))
            .merchantSerialNumber(merchantConfig.getString("merchantSerialNumber"))
            .apiV3Key(merchantConfig.getString("apiV3Key"))
            .build();
    return config;

3.响应验签时报错:

2025-11-26 11:33:09.817 ERROR  main com.wechat.pay.java.core.cipher.AbstractVerifier.verify - publicKeyId[PUB_KEY_ID_01157951996120*******192114000002] and serialNumber[2AAD6A561C300C*******7D839865ACC2] are not equal

com.wechat.pay.java.core.exception.ValidationException: Validate response failed,the WechatPay signature is incorrect.

Request-ID[08F2E999C90610A4011889CD8C5820C8EC0428C936-0] responseHeader[Keep-Alive=timeout=8,Wechatpay-Timestamp=1764127986,Server=nginx,X-Content-Type-Options=nosniff,Connection=keep-alive,Date=Wed, 26 Nov 2025 03:33:06 GMT,Wechatpay-Signature-Type=WECHATPAY2-SHA256-RSA2048,Wechatpay-Serial=2AAD6A561C3**********67D839865ACC2,Wechatpay-Nonce=6ed7f089bac707854c4c53faac03d46d,Wechatpay-Signature=ep77krHR+MFFn9EvDcsGC8GFVqfgP4LIimEEx8vu6mlY9t/RRWzE4GrNk7Kpi8R6aOMgnUorb8vs1TpcyhZdtB7x+Yr37IfwN0G9dwJpPDhi+8q2ZDN+IY+wbo5FUCEbPZzgpCAhR1PKa8e+jfCoD+XLs3LJFFChHQ2a********JeK7WUUuNhGB7J63nxWASM4slAZxUKoH0c/2kVFcmQUbaN3FAvsguCagMYAleljTlJc3/ZtOhjw9HNO1NeNFwVoIpufcPyeuStL4RPAzfwEG+7TN4CyHEqeR/dct9nznn29CSMCDdzjp2iwuFBhKR5w==,Cache-Control=no-cache, must-revalidate,Content-Length=52,Request-ID=08F2E999C90610A4011889CD8C5820C8EC0428C936-0,Content-Language=zh-CN,Content-Type=application/json; charset=utf-8

我的问题是:

  1. 我用微信公钥模式配置发起请求,响应应该返回微信公钥的Wechatpay-Serial,但为什么返回的Wechatpay-Serial序列号却是微信证书的。
  2. 怎么才能让微信响应返回微信公钥的序列号?


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

2 个回答

  • Memory (私信不回复)
    Memory (私信不回复)
    11-26

    你是在切换期间还是没有开启切换?

    11-26
    有用
    回复 6
    • heaven
      heaven
      11-26
      商户账号是我接手过来的,之前开通了平台证书模式,切换微信公钥时,显示正在灰度流程中,但是我用管理员账号登录,平台证书界面没有任何操作按钮,看不到任何灰度信息
      11-26
      回复
    • Memory (私信不回复)
      Memory (私信不回复)
      11-26回复heaven
      自己系统做公钥模式+平台证书模式兼容
      11-26
      回复
    • heaven
      heaven
      11-27回复Memory (私信不回复)
      不太明白,我用的配置是微信公钥模式,微信支付不应该用公钥验签吗,为什么还响应平台证书的序列号?微信什么时候会响应微信公钥序列号?
      11-27
      回复
    • Memory (私信不回复)
      Memory (私信不回复)
      11-27回复heaven
      你这截图很明显是在平台证书模式,如果没有切换到公钥模式或者在切换公钥模式流程中是不会返回公钥的签名
      11-27
      回复
    • heaven
      heaven
      11-27回复Memory (私信不回复)
      但是切换公钥模式时,说是在灰度流程中,必须先完成或结束灰度。但是在平台证书页面,有没有灰度信息和任何操作按钮,这怎么才能切换到公钥模式?
      11-27
      回复
    查看更多(1)
  • 智能回答 智能回答 本次回答由AI生成
    11-26
    有用
登录 后发表内容