|  | @@ -1,10 +1,7 @@
 | 
	
		
			
				|  |  |  package com.yonge.toolset.payment.original.wx.config;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  import com.wechat.pay.contrib.apache.httpclient.WechatPayHttpClientBuilder;
 | 
	
		
			
				|  |  | -import com.wechat.pay.contrib.apache.httpclient.auth.PrivateKeySigner;
 | 
	
		
			
				|  |  | -import com.wechat.pay.contrib.apache.httpclient.auth.Verifier;
 | 
	
		
			
				|  |  | -import com.wechat.pay.contrib.apache.httpclient.auth.WechatPay2Credentials;
 | 
	
		
			
				|  |  | -import com.wechat.pay.contrib.apache.httpclient.auth.WechatPay2Validator;
 | 
	
		
			
				|  |  | +import com.wechat.pay.contrib.apache.httpclient.auth.*;
 | 
	
		
			
				|  |  |  import com.wechat.pay.contrib.apache.httpclient.cert.CertificatesManager;
 | 
	
		
			
				|  |  |  import com.wechat.pay.contrib.apache.httpclient.util.PemUtil;
 | 
	
		
			
				|  |  |  import com.yonge.toolset.payment.base.enums.OpenEnum;
 | 
	
	
		
			
				|  | @@ -34,35 +31,50 @@ public class WxpayConfiguration {
 | 
	
		
			
				|  |  |       * @updateTime 2022/5/12 14:16
 | 
	
		
			
				|  |  |       * @return: com.alipay.api.AlipayClient
 | 
	
		
			
				|  |  |       */
 | 
	
		
			
				|  |  | -    //@Bean
 | 
	
		
			
				|  |  | +    @Bean
 | 
	
		
			
				|  |  |      public CloseableHttpClient closeableHttpClient() throws Exception{
 | 
	
		
			
				|  |  |          String merchantId = configPaymentService.getPaymentConfig(OpenEnum.ORIGINAL, WxpayConstant.WX_MERCHANT_ID).getParamValue();
 | 
	
		
			
				|  |  |          String merchantSerialNumber = configPaymentService.getPaymentConfig(OpenEnum.ORIGINAL, WxpayConstant.WX_MERCHANT_SERIAL_NUMBER).getParamValue();
 | 
	
		
			
				|  |  | -        String merchantPrivateKey = configPaymentService.getPaymentConfig(OpenEnum.ORIGINAL, WxpayConstant.WX_MERCHANT_PRIVATE_KEY).getParamValue();
 | 
	
		
			
				|  |  | +        String privateKey = configPaymentService.getPaymentConfig(OpenEnum.ORIGINAL, WxpayConstant.WX_MERCHANT_PRIVATE_KEY).getParamValue();
 | 
	
		
			
				|  |  |          String apiV3Key = configPaymentService.getPaymentConfig(OpenEnum.ORIGINAL, WxpayConstant.WX_API_V3_KEY).getParamValue();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        PrivateKey privateKey = PemUtil
 | 
	
		
			
				|  |  | -                .loadPrivateKey(new ByteArrayInputStream(merchantPrivateKey.getBytes("utf-8")));
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        PrivateKey merchantPrivateKey = PemUtil
 | 
	
		
			
				|  |  | +                .loadPrivateKey(new ByteArrayInputStream(privateKey.getBytes(StandardCharsets.UTF_8)));
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          // 获取证书管理器实例
 | 
	
		
			
				|  |  |          CertificatesManager certificatesManager = CertificatesManager.getInstance();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        WechatPay2Credentials wechatPay2Credentials = new WechatPay2Credentials(merchantId, new PrivateKeySigner(merchantSerialNumber, merchantPrivateKey));
 | 
	
		
			
				|  |  |          // 向证书管理器增加需要自动更新平台证书的商户信息
 | 
	
		
			
				|  |  |          certificatesManager.putMerchant(merchantId,
 | 
	
		
			
				|  |  | -                new WechatPay2Credentials(merchantId,
 | 
	
		
			
				|  |  | -                    new PrivateKeySigner(merchantSerialNumber, privateKey)),
 | 
	
		
			
				|  |  | -                    apiV3Key.getBytes(StandardCharsets.UTF_8)
 | 
	
		
			
				|  |  | +                wechatPay2Credentials,
 | 
	
		
			
				|  |  | +                apiV3Key.getBytes(StandardCharsets.UTF_8)
 | 
	
		
			
				|  |  |          );
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        //e4128409c23499cf24976233c8327696
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |          // 从证书管理器中获取verifier
 | 
	
		
			
				|  |  |          Verifier verifier = certificatesManager.getVerifier(merchantId);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          WechatPayHttpClientBuilder builder = WechatPayHttpClientBuilder.create()
 | 
	
		
			
				|  |  | -                .withMerchant(merchantId, merchantSerialNumber, privateKey)
 | 
	
		
			
				|  |  | +                .withMerchant(merchantId, merchantSerialNumber, merchantPrivateKey)
 | 
	
		
			
				|  |  |                  .withValidator(new WechatPay2Validator(verifier));
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          return builder.build();
 | 
	
		
			
				|  |  | +        /**
 | 
	
		
			
				|  |  | +        // 加载商户私钥(privateKey:私钥字符串)
 | 
	
		
			
				|  |  | +        PrivateKey merchantPrivateKey = PemUtil
 | 
	
		
			
				|  |  | +                .loadPrivateKey(new ByteArrayInputStream(privateKey.getBytes("utf-8")));
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        // 加载平台证书(mchId:商户号,mchSerialNo:商户证书序列号,apiV3Key:V3密钥)
 | 
	
		
			
				|  |  | +        AutoUpdateCertificatesVerifier verifier = new AutoUpdateCertificatesVerifier(
 | 
	
		
			
				|  |  | +                new WechatPay2Credentials(merchantId, new PrivateKeySigner(merchantSerialNumber, merchantPrivateKey)),apiV3Key.getBytes("utf-8"));
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        // 初始化httpClient
 | 
	
		
			
				|  |  | +        CloseableHttpClient build = WechatPayHttpClientBuilder.create()
 | 
	
		
			
				|  |  | +                .withMerchant(merchantId, merchantSerialNumber, merchantPrivateKey)
 | 
	
		
			
				|  |  | +                .withValidator(new WechatPay2Validator(verifier)).build();
 | 
	
		
			
				|  |  | +        return build;
 | 
	
		
			
				|  |  | +        **/
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  }
 |