@@ -320,16 +320,7 @@ public CloseableHttpClient initApiV3HttpClient() throws WxPayException {
320320 //构造Http Proxy正向代理
321321 WxPayHttpProxy wxPayHttpProxy = getWxPayHttpProxy ();
322322
323- Verifier certificatesVerifier ;
324- if (publicKey == null ) {
325- certificatesVerifier =
326- new AutoUpdateCertificatesVerifier (
327- new WxPayCredentials (mchId , new PrivateKeySigner (certSerialNo , merchantPrivateKey )),
328- this .getApiV3Key ().getBytes (StandardCharsets .UTF_8 ), this .getCertAutoUpdateTime (),
329- this .getPayBaseUrl (), wxPayHttpProxy );
330- } else {
331- certificatesVerifier = new PublicCertificateVerifier (publicKey , publicKeyId );
332- }
323+ Verifier certificatesVerifier = getVerifier (merchantPrivateKey , wxPayHttpProxy , publicKey );
333324
334325 WxPayV3HttpClientBuilder wxPayV3HttpClientBuilder = WxPayV3HttpClientBuilder .create ()
335326 .withMerchant (mchId , certSerialNo , merchantPrivateKey )
@@ -355,6 +346,19 @@ public CloseableHttpClient initApiV3HttpClient() throws WxPayException {
355346 }
356347 }
357348
349+ private Verifier getVerifier (PrivateKey merchantPrivateKey , WxPayHttpProxy wxPayHttpProxy , PublicKey publicKey ) {
350+ Verifier certificatesVerifier = new AutoUpdateCertificatesVerifier (
351+ new WxPayCredentials (mchId , new PrivateKeySigner (certSerialNo , merchantPrivateKey )),
352+ this .getApiV3Key ().getBytes (StandardCharsets .UTF_8 ), this .getCertAutoUpdateTime (),
353+ this .getPayBaseUrl (), wxPayHttpProxy );
354+ if (publicKey != null ) {
355+ Verifier publicCertificatesVerifier = new PublicCertificateVerifier (publicKey , publicKeyId );
356+ publicCertificatesVerifier .setOtherVerifier (certificatesVerifier );
357+ certificatesVerifier = publicCertificatesVerifier ;
358+ }
359+ return certificatesVerifier ;
360+ }
361+
358362 /**
359363 * 初始化一个WxPayHttpProxy对象
360364 *
@@ -382,7 +386,7 @@ private InputStream loadConfigInputStream(String configString, String configPath
382386 if (configContent != null ) {
383387 return new ByteArrayInputStream (configContent );
384388 }
385-
389+
386390 if (StringUtils .isNotEmpty (configString )) {
387391 configContent = Base64 .getDecoder ().decode (configString );
388392 return new ByteArrayInputStream (configContent );
0 commit comments