1
0
mirror of synced 2025-12-22 09:58:07 +08:00

🎨 #3694 统一各模块微信接口请求的基础地址字段命名为apiHostUrl,并完善Spring Boot starter配置支持

This commit is contained in:
水依寒
2025-09-04 09:17:36 +08:00
committed by GitHub
parent 1eefd11e03
commit 8447caa75f
20 changed files with 175 additions and 28 deletions

View File

@@ -54,7 +54,7 @@ public class WxPayConfig {
/**
* 微信支付接口请求地址域名部分.
*/
private String payBaseUrl = DEFAULT_PAY_BASE_URL;
private String apiHostUrl = DEFAULT_PAY_BASE_URL;
/**
* http请求连接超时时间.
@@ -194,28 +194,28 @@ public class WxPayConfig {
private CloseableHttpClient apiV3HttpClient;
/**
* 用于普通支付接口的可复用HttpClient使用连接池
*/
private CloseableHttpClient httpClient;
/**
* 用于需要SSL证书的支付接口的可复用HttpClient使用连接池
*/
private CloseableHttpClient sslHttpClient;
/**
* 支持扩展httpClientBuilder
*/
private HttpClientBuilderCustomizer httpClientBuilderCustomizer;
private HttpClientBuilderCustomizer apiV3HttpClientBuilderCustomizer;
/**
* HTTP连接池最大连接数默认20
*/
private int maxConnTotal = 20;
/**
* HTTP连接池每个路由的最大连接数默认10
*/
@@ -272,12 +272,12 @@ public class WxPayConfig {
*
* @return 微信支付接口请求地址域名
*/
public String getPayBaseUrl() {
if (StringUtils.isEmpty(this.payBaseUrl)) {
public String getApiHostUrl() {
if (StringUtils.isEmpty(this.apiHostUrl)) {
return DEFAULT_PAY_BASE_URL;
}
return this.payBaseUrl;
return this.apiHostUrl;
}
@SneakyThrows
@@ -375,7 +375,7 @@ public class WxPayConfig {
} else {
certificatesVerifier = VerifierBuilder.build(
this.getCertSerialNo(), this.getMchId(), this.getApiV3Key(), merchantPrivateKey, wxPayHttpProxy,
this.getCertAutoUpdateTime(), this.getPayBaseUrl(), this.getPublicKeyId(), publicKey);
this.getCertAutoUpdateTime(), this.getApiHostUrl(), this.getPublicKeyId(), publicKey);
}
WxPayV3HttpClientBuilder wxPayV3HttpClientBuilder = WxPayV3HttpClientBuilder.create()
@@ -531,7 +531,7 @@ public class WxPayConfig {
/**
* 初始化使用连接池的HttpClient
*
*
* @return CloseableHttpClient
* @throws WxPayException 初始化异常
*/
@@ -539,31 +539,31 @@ public class WxPayConfig {
if (this.httpClient != null) {
return this.httpClient;
}
// 创建连接池管理器
PoolingHttpClientConnectionManager connectionManager = new PoolingHttpClientConnectionManager();
connectionManager.setMaxTotal(this.maxConnTotal);
connectionManager.setDefaultMaxPerRoute(this.maxConnPerRoute);
// 创建HttpClient构建器
org.apache.http.impl.client.HttpClientBuilder httpClientBuilder = HttpClients.custom()
.setConnectionManager(connectionManager);
// 配置代理
configureProxy(httpClientBuilder);
// 提供自定义httpClientBuilder的能力
Optional.ofNullable(httpClientBuilderCustomizer).ifPresent(e -> {
e.customize(httpClientBuilder);
});
this.httpClient = httpClientBuilder.build();
return this.httpClient;
}
/**
* 初始化使用连接池且支持SSL的HttpClient
*
*
* @return CloseableHttpClient
* @throws WxPayException 初始化异常
*/
@@ -571,31 +571,31 @@ public class WxPayConfig {
if (this.sslHttpClient != null) {
return this.sslHttpClient;
}
// 初始化SSL上下文
SSLContext sslContext = this.getSslContext();
if (null == sslContext) {
sslContext = this.initSSLContext();
}
// 创建支持SSL的连接池管理器
PoolingHttpClientConnectionManager connectionManager = new PoolingHttpClientConnectionManager();
connectionManager.setMaxTotal(this.maxConnTotal);
connectionManager.setDefaultMaxPerRoute(this.maxConnPerRoute);
// 创建HttpClient构建器配置SSL
org.apache.http.impl.client.HttpClientBuilder httpClientBuilder = HttpClients.custom()
.setConnectionManager(connectionManager)
.setSSLSocketFactory(new SSLConnectionSocketFactory(sslContext, new DefaultHostnameVerifier()));
// 配置代理
configureProxy(httpClientBuilder);
// 提供自定义httpClientBuilder的能力
Optional.ofNullable(httpClientBuilderCustomizer).ifPresent(e -> {
e.customize(httpClientBuilder);
});
this.sslHttpClient = httpClientBuilder.build();
return this.sslHttpClient;
}
@@ -620,7 +620,7 @@ public class WxPayConfig {
/**
* 获取用于普通支付接口的HttpClient
*
*
* @return CloseableHttpClient
*/
public CloseableHttpClient getHttpClient() {
@@ -629,7 +629,7 @@ public class WxPayConfig {
/**
* 获取用于SSL支付接口的HttpClient
*
*
* @return CloseableHttpClient
*/
public CloseableHttpClient getSslHttpClient() {

View File

@@ -217,9 +217,9 @@ public abstract class BaseWxPayServiceImpl implements WxPayService {
if (StringUtils.isNotBlank(this.getConfig().getApiV3Key())) {
throw new WxRuntimeException("微信支付V3 目前不支持沙箱模式!");
}
return this.getConfig().getPayBaseUrl() + "/xdc/apiv2sandbox";
return this.getConfig().getApiHostUrl() + "/xdc/apiv2sandbox";
}
return this.getConfig().getPayBaseUrl();
return this.getConfig().getApiHostUrl();
}
@Override

View File

@@ -936,7 +936,7 @@ public class BaseWxPayServiceImplTest {
WxPayOrderQueryV3Request request = new WxPayOrderQueryV3Request();
request.setOutTradeNo("n1ZvYqjAg3D3LUBa");
WxPayConfig config = this.payService.getConfig();
config.setPayBaseUrl("http://api.mch.weixin.qq.com");
config.setApiHostUrl("http://api.mch.weixin.qq.com");
config.setHttpProxyHost("12.11.1.113");
config.setHttpProxyPort(8015);
WxPayOrderQueryV3Result result = this.payService.queryOrderV3(request);