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