From dd407141b03c102f1aaff878685a7ebd14271147 Mon Sep 17 00:00:00 2001 From: SynchPj <46849861+SynchPj@users.noreply.github.com> Date: Mon, 7 Apr 2025 13:01:53 +0800 Subject: [PATCH] =?UTF-8?q?:art:=20#3530=20=E3=80=90=E5=BE=AE=E4=BF=A1?= =?UTF-8?q?=E6=94=AF=E4=BB=98=E3=80=91=E4=BF=AE=E5=A4=8D=E6=9C=AA=E8=AE=BE?= =?UTF-8?q?=E7=BD=AE=E5=B9=B3=E5=8F=B0=E8=AF=81=E4=B9=A6=E5=BC=95=E8=B5=B7?= =?UTF-8?q?=E7=9A=84v3=E8=AF=B7=E6=B1=82=E6=9E=84=E9=80=A0=E5=BC=82?= =?UTF-8?q?=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../github/binarywang/wxpay/config/WxPayConfig.java | 12 ++++++++---- .../wxpay/v3/auth/PublicCertificateVerifier.java | 2 +- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/config/WxPayConfig.java b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/config/WxPayConfig.java index dedbc6413..7a14ea152 100644 --- a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/config/WxPayConfig.java +++ b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/config/WxPayConfig.java @@ -347,10 +347,14 @@ public class WxPayConfig { } private Verifier getVerifier(PrivateKey merchantPrivateKey, WxPayHttpProxy wxPayHttpProxy, PublicKey publicKey) { - Verifier certificatesVerifier = new AutoUpdateCertificatesVerifier( - new WxPayCredentials(mchId, new PrivateKeySigner(certSerialNo, merchantPrivateKey)), - this.getApiV3Key().getBytes(StandardCharsets.UTF_8), this.getCertAutoUpdateTime(), - this.getPayBaseUrl(), wxPayHttpProxy); + Verifier certificatesVerifier = null; + // 如果配置了平台证书,则初始化验证器以备v2版本接口验签(公钥灰度实现) + if (this.getPrivateCertPath() != null && this.getPrivateKeyPath() != null) { + certificatesVerifier = new AutoUpdateCertificatesVerifier( + new WxPayCredentials(mchId, new PrivateKeySigner(certSerialNo, merchantPrivateKey)), + this.getApiV3Key().getBytes(StandardCharsets.UTF_8), this.getCertAutoUpdateTime(), + this.getPayBaseUrl(), wxPayHttpProxy); + } if (publicKey != null) { Verifier publicCertificatesVerifier = new PublicCertificateVerifier(publicKey, publicKeyId); publicCertificatesVerifier.setOtherVerifier(certificatesVerifier); 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 45f76818c..8c9c4f356 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,7 +24,7 @@ public class PublicCertificateVerifier implements Verifier{ @Override public boolean verify(String serialNumber, byte[] message, String signature) { - if (!serialNumber.contains("PUB_KEY_ID")) { + if (!serialNumber.contains("PUB_KEY_ID") && this.certificateVerifier != null) { return this.certificateVerifier.verify(serialNumber, message, signature); } try {