diff --git a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/v3/auth/PublicCertificateVerifier.java b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/v3/auth/PublicCertificateVerifier.java index 8c9c4f3569..ac1dfbca6b 100644 --- a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/v3/auth/PublicCertificateVerifier.java +++ b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/v3/auth/PublicCertificateVerifier.java @@ -24,9 +24,17 @@ public void setOtherVerifier(Verifier verifier) { @Override public boolean verify(String serialNumber, byte[] message, String signature) { + // 如果序列号不包含"PUB_KEY_ID"且有证书验证器,先尝试证书验证 if (!serialNumber.contains("PUB_KEY_ID") && this.certificateVerifier != null) { - return this.certificateVerifier.verify(serialNumber, message, signature); + try { + if (this.certificateVerifier.verify(serialNumber, message, signature)) { + return true; + } + } catch (Exception e) { + // 证书验证失败,继续尝试公钥验证 + } } + // 使用公钥验证(兜底方案,适用于公钥转账等场景) try { Signature sign = Signature.getInstance("SHA256withRSA"); sign.initVerify(publicKey);

AltStyle によって変換されたページ (->オリジナル) /