Skip to content

Commit 4d42947

Browse files
authored
🎨 #3728 【微信支付】修复V3支付公钥转账出现的签名验证失败问题
1 parent 9ab6416 commit 4d42947

File tree

1 file changed

+9
-1
lines changed

1 file changed

+9
-1
lines changed

weixin-java-pay/src/main/java/com/github/binarywang/wxpay/v3/auth/PublicCertificateVerifier.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,17 @@ public void setOtherVerifier(Verifier verifier) {
2424

2525
@Override
2626
public boolean verify(String serialNumber, byte[] message, String signature) {
27+
// 如果序列号不包含"PUB_KEY_ID"且有证书验证器,先尝试证书验证
2728
if (!serialNumber.contains("PUB_KEY_ID") && this.certificateVerifier != null) {
28-
return this.certificateVerifier.verify(serialNumber, message, signature);
29+
try {
30+
if (this.certificateVerifier.verify(serialNumber, message, signature)) {
31+
return true;
32+
}
33+
} catch (Exception e) {
34+
// 证书验证失败,继续尝试公钥验证
35+
}
2936
}
37+
// 使用公钥验证(兜底方案,适用于公钥转账等场景)
3038
try {
3139
Signature sign = Signature.getInstance("SHA256withRSA");
3240
sign.initVerify(publicKey);

0 commit comments

Comments
 (0)