- 采用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
我的问题是:
- 我用微信公钥模式配置发起请求,响应应该返回微信公钥的Wechatpay-Serial,但为什么返回的Wechatpay-Serial序列号却是微信证书的。
- 怎么才能让微信响应返回微信公钥的序列号?

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