平台证书切换成微信支付公钥后,用公钥的方式支付成功,但是支付回调一直无法顺利解析内容。
回调通知解析报错。试了下面这三种模式,都不行。
// 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
如果是平台证书切换公钥的状态的话,回调的话要按照回调请求头中的Wechatpay-Serial对应的证书/公钥去验签的
签名验证失败,初始化给的平台证书/平台公钥不正确导致的,你看下你接收到的回调中的Wechatpay-Serial和你初始化给的是否一致