From 18118188e370e45f6e1bd43e5b33fd4c4a156655 Mon Sep 17 00:00:00 2001
From: lin <sbla5888@163.com>
Date: Mon, 08 Apr 2024 16:01:44 +0800
Subject: [PATCH] 微信支付+获取用户的openid

---
 src/main/java/org/springblade/common/config/WxPayConfig.java |   39 ++++++++++++++++++++++++++++++++-------
 1 files changed, 32 insertions(+), 7 deletions(-)

diff --git a/src/main/java/org/springblade/common/config/WxPayConfig.java b/src/main/java/org/springblade/common/config/WxPayConfig.java
index 1c018b4..3d7edf1 100644
--- a/src/main/java/org/springblade/common/config/WxPayConfig.java
+++ b/src/main/java/org/springblade/common/config/WxPayConfig.java
@@ -18,9 +18,9 @@
 import java.security.PrivateKey;
 
 
-//@Configuration
+@Configuration
 // @PropertySource("classpath:wxpay.properties") //读取配置文件
-//@ConfigurationProperties(prefix = "wxpay") //读取wxpay节点
+@ConfigurationProperties(prefix = "wxpay") //读取wxpay节点
 @Data //使用set方法将wxpay节点中的值填充到当前类的属性中
 @Slf4j
 public class WxPayConfig {
@@ -111,8 +111,8 @@
 	 *
 	 * @return
 	 */
-//	@Bean
-	public ScheduledUpdateCertificatesVerifier getVerifier(String privateKeyPath, String mchSerialNo, String mchId, String apiV3Key) {
+	@Bean
+	public ScheduledUpdateCertificatesVerifier getVerifier() {
 
 		log.info("获取签名验证器");
 
@@ -140,8 +140,8 @@
 	 * @param verifier
 	 * @return
 	 */
-//	@Bean(name = "wxPayClient")
-	public CloseableHttpClient getWxPayClient(String privateKeyPath, String mchSerialNo, String mchId, String apiV3Key) {
+	@Bean(name = "wxPayClient")
+	public CloseableHttpClient getWxPayClient(ScheduledUpdateCertificatesVerifier verifier) {
 
 		log.info("获取httpClient");
 
@@ -150,7 +150,7 @@
 
 		WechatPayHttpClientBuilder builder = WechatPayHttpClientBuilder.create()
 			.withMerchant(mchId, mchSerialNo, privateKey)
-			.withValidator(new WechatPay2Validator(getVerifier(privateKeyPath, mchSerialNo, mchId, apiV3Key)));
+			.withValidator(new WechatPay2Validator(verifier));
 		// ... 接下来,你仍然可以通过builder设置各种参数,来配置你的HttpClient
 
 		// 通过WechatPayHttpClientBuilder构造的HttpClient,会自动的处理签名和验签,并进行证书自动更新
@@ -159,5 +159,30 @@
 		return httpClient;
 	}
 
+	/**
+	 * 获取HttpClient,无需进行应答签名验证,跳过验签的流程
+	 */
+	@Bean(name = "wxPayNoSignClient")
+	public CloseableHttpClient getWxPayNoSignClient() {
+
+		//获取商户私钥
+		PrivateKey privateKey = getPrivateKey(privateKeyPath);
+
+		//用于构造HttpClient
+		WechatPayHttpClientBuilder builder = WechatPayHttpClientBuilder.create()
+			//设置商户信息
+			.withMerchant(mchId, mchSerialNo, privateKey)
+			//无需进行签名验证、通过withValidator((response) -> true)实现
+			.withValidator((response) -> true);
+
+		// 通过WechatPayHttpClientBuilder构造的HttpClient,会自动的处理签名和验签,并进行证书自动更新
+		CloseableHttpClient httpClient = builder.build();
+
+		log.info("== getWxPayNoSignClient END ==");
+
+		return httpClient;
+	}
+
 
 }
+

--
Gitblit v1.9.3