收藏
回答

平台证书切换成微信支付公钥后, 回调通知解析报错。

平台证书切换成微信支付公钥后,用公钥的方式支付成功,但是支付回调一直无法顺利解析内容。

回调通知解析报错。试了下面这三种模式,都不行。

// 1. 如果你使用的是微信支付公私钥,则使用 RSAPublicKeyNotificationConfig
NotificationConfig config = new RSAPublicKeyNotificationConfig.Builder()
        .publicKeyFromPath(publicKeyPath)
        .publicKeyId(publicKeyId)
        .apiV3Key(apiV3Key)
        .build();

// 2. 如果你仍在使用微信支付平台证书,则使用 RSAAutoCertificateConfig
NotificationConfig config = new RSAAutoCertificateConfig.Builder()
        .merchantId(merchantId)
        .privateKeyFromPath(privateKeyPath)
        .merchantSerialNumber(merchantSerialNumber)
        .apiV3Key(apiV3Key)
        .build();

// 3. 如果你正在进行微信支付平台证书到微信支付公私钥的灰度切换,希望保持切换兼容,则使用 RSACombinedNotificationConfig
NotificationConfig config = new RSACombinedNotificationConfig.Builder()
        .merchantId(merchantId)
        .privateKeyFromPath(privateKeyPath)
        .merchantSerialNumber(merchantSerialNumber)
        .publicKeyFromPath(wechatpayPublicKeyPath)
        .publicKeyId(wechatpayPublicKeyId)
        .apiV3Key(apiV3Key)
        .build();


都会在下面的第二行报错

NotificationParser parser = new NotificationParser(config);
//会在下面这一行报错
Transaction transaction = parser.parse(requestParam, Transaction.class);


报错内容如下,三种config报错内容一样。

com.wechat.pay.java.core.exception.ValidationException: Processing WechatPay notification,signature verification failed,signType[WECHATPAY2-SHA256-RSA2048] serial[***********这里我替换内容了*************] message[1739519644Fri, Feb 14 2025 4:01:03 pm9Wc2VI5mfx1LCDCrMoFHX6BtoQjPCX0p

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

2 个回答

  • 支付社区运营
    支付社区运营
    02-14

    如果是平台证书切换公钥的状态的话,回调的话要按照回调请求头中的Wechatpay-Serial对应的证书/公钥去验签的

    02-14
    有用
    回复
  • Memory
    Memory
    02-14

    签名验证失败,初始化给的平台证书/平台公钥不正确导致的,你看下你接收到的回调中的Wechatpay-Serial和你初始化给的是否一致

    02-14
    有用
    回复
登录 后发表内容