From 72fa3b3301967c29031fabdad1574951a19b1c48 Mon Sep 17 00:00:00 2001 From: buaazyl Date: Fri, 9 Jan 2026 14:16:06 +0800 Subject: [PATCH] =?UTF-8?q?:art:=20#3838=20=E3=80=90=E5=BE=AE=E4=BF=A1?= =?UTF-8?q?=E6=94=AF=E4=BB=98=E3=80=91=E4=B8=BAstarter=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E4=BA=86=E9=80=80=E6=AC=BE=E7=BB=93=E6=9E=9C=E5=9B=9E=E8=B0=83?= =?UTF-8?q?=20URL=20=E7=9A=84=E9=85=8D=E7=BD=AE=E6=94=AF=E6=8C=81=EF=BC=8C?= =?UTF-8?q?=E5=85=81=E8=AE=B8=E5=BC=80=E5=8F=91=E8=80=85=E5=9C=A8=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E6=96=87=E4=BB=B6=E4=B8=AD=E7=BB=9F=E4=B8=80=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E9=80=80=E6=AC=BE=E9=80=9A=E7=9F=A5=E5=9C=B0=E5=9D=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 13 ++++++------- .../wxjava/pay/config/WxPayAutoConfiguration.java | 1 + .../wxjava/pay/properties/WxPayProperties.java | 5 +++++ .../wxjava/pay/config/WxPayAutoConfiguration.java | 1 + .../wxjava/pay/properties/WxPayProperties.java | 5 +++++ .../wxpay/bean/request/WxPayRefundRequest.java | 4 +++- .../github/binarywang/wxpay/config/WxPayConfig.java | 6 +++++- .../wxpay/service/impl/BaseWxPayServiceImpl.java | 6 ++++++ 8 files changed, 32 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 54af600be..080b831d1 100644 --- a/README.md +++ b/README.md @@ -133,10 +133,10 @@ **Spring Boot 配置示例:** ```properties -# 使用 HttpClient 5.x(推荐,MP/CP/Channel/QiDian 模块默认) +# 使用 HttpClient 5.x(推荐,MP/MiniApp/CP/Channel/QiDian 模块默认) wx.mp.config-storage.http-client-type=HttpComponents -# 使用 HttpClient 4.x(兼容模式,MiniApp 模块默认) +# 使用 HttpClient 4.x(兼容模式) wx.mp.config-storage.http-client-type=HttpClient # 使用 OkHttp @@ -153,11 +153,10 @@ wx.mp.config-storage.http-client-type=HTTP_COMPONENTS # 注意使用大写下 ``` **注意事项:** -1. **MiniApp 模块**已提供 `HttpComponents`(HttpClient 5.x)类型的配置选项,但当前默认仍为 HttpClient 4.x;如需启用 HttpClient 5.x,请确保所使用的集成模块(如 `wx-java-miniapp-spring-boot-starter`、`wx-java-miniapp-solon-plugin`)版本已支持该选项 -2. **MP、Channel、QiDian 模块**已完整支持 HttpClient 5.x,默认推荐使用 -3. **CP 模块**的支持情况取决于具体使用的 Starter 版本,请参考对应模块文档 -4. 如需使用 OkHttp 或 Jodd-http,需在项目中添加对应的依赖(scope为provided) -5. HttpClient 4.x 和 HttpClient 5.x 可以共存,按需配置即可 +1. **MP、MiniApp、Channel、QiDian 模块**已完整支持 HttpClient 5.x,默认推荐使用 +2. **CP 模块**的支持情况取决于具体使用的 Starter 版本,请参考对应模块文档 +3. 如需使用 OkHttp 或 Jodd-http,需在项目中添加对应的依赖(scope为provided) +4. HttpClient 4.x 和 HttpClient 5.x 可以共存,按需配置即可 --------------------------------- diff --git a/solon-plugins/wx-java-pay-solon-plugin/src/main/java/com/binarywang/solon/wxjava/pay/config/WxPayAutoConfiguration.java b/solon-plugins/wx-java-pay-solon-plugin/src/main/java/com/binarywang/solon/wxjava/pay/config/WxPayAutoConfiguration.java index 94112c7d9..3ef7456da 100644 --- a/solon-plugins/wx-java-pay-solon-plugin/src/main/java/com/binarywang/solon/wxjava/pay/config/WxPayAutoConfiguration.java +++ b/solon-plugins/wx-java-pay-solon-plugin/src/main/java/com/binarywang/solon/wxjava/pay/config/WxPayAutoConfiguration.java @@ -47,6 +47,7 @@ public class WxPayAutoConfiguration { payConfig.setKeyPath(StringUtils.trimToNull(this.properties.getKeyPath())); payConfig.setUseSandboxEnv(this.properties.isUseSandboxEnv()); payConfig.setNotifyUrl(StringUtils.trimToNull(this.properties.getNotifyUrl())); + payConfig.setRefundNotifyUrl(StringUtils.trimToNull(this.properties.getRefundNotifyUrl())); //以下是apiv3以及支付分相关 payConfig.setServiceId(StringUtils.trimToNull(this.properties.getServiceId())); payConfig.setPayScoreNotifyUrl(StringUtils.trimToNull(this.properties.getPayScoreNotifyUrl())); diff --git a/solon-plugins/wx-java-pay-solon-plugin/src/main/java/com/binarywang/solon/wxjava/pay/properties/WxPayProperties.java b/solon-plugins/wx-java-pay-solon-plugin/src/main/java/com/binarywang/solon/wxjava/pay/properties/WxPayProperties.java index 0b035e983..d394fefbd 100644 --- a/solon-plugins/wx-java-pay-solon-plugin/src/main/java/com/binarywang/solon/wxjava/pay/properties/WxPayProperties.java +++ b/solon-plugins/wx-java-pay-solon-plugin/src/main/java/com/binarywang/solon/wxjava/pay/properties/WxPayProperties.java @@ -87,6 +87,11 @@ public class WxPayProperties { */ private String notifyUrl; + /** + * 退款结果异步回调地址,通知url必须为直接可访问的url,不能携带参数. + */ + private String refundNotifyUrl; + /** * 微信支付分授权回调地址 */ diff --git a/spring-boot-starters/wx-java-pay-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/pay/config/WxPayAutoConfiguration.java b/spring-boot-starters/wx-java-pay-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/pay/config/WxPayAutoConfiguration.java index 5a794de7e..758fd929a 100644 --- a/spring-boot-starters/wx-java-pay-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/pay/config/WxPayAutoConfiguration.java +++ b/spring-boot-starters/wx-java-pay-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/pay/config/WxPayAutoConfiguration.java @@ -51,6 +51,7 @@ public class WxPayAutoConfiguration { payConfig.setKeyPath(StringUtils.trimToNull(this.properties.getKeyPath())); payConfig.setUseSandboxEnv(this.properties.isUseSandboxEnv()); payConfig.setNotifyUrl(StringUtils.trimToNull(this.properties.getNotifyUrl())); + payConfig.setRefundNotifyUrl(StringUtils.trimToNull(this.properties.getRefundNotifyUrl())); //以下是apiv3以及支付分相关 payConfig.setServiceId(StringUtils.trimToNull(this.properties.getServiceId())); payConfig.setPayScoreNotifyUrl(StringUtils.trimToNull(this.properties.getPayScoreNotifyUrl())); diff --git a/spring-boot-starters/wx-java-pay-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/pay/properties/WxPayProperties.java b/spring-boot-starters/wx-java-pay-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/pay/properties/WxPayProperties.java index 8212e3b01..25f7d7c02 100644 --- a/spring-boot-starters/wx-java-pay-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/pay/properties/WxPayProperties.java +++ b/spring-boot-starters/wx-java-pay-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/pay/properties/WxPayProperties.java @@ -64,6 +64,11 @@ public class WxPayProperties { */ private String notifyUrl; + /** + * 退款结果异步回调地址,通知url必须为直接可访问的url,不能携带参数 + */ + private String refundNotifyUrl; + /** * 微信支付分回调地址 */ diff --git a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/request/WxPayRefundRequest.java b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/request/WxPayRefundRequest.java index e145644d9..b0cbcf4e7 100644 --- a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/request/WxPayRefundRequest.java +++ b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/request/WxPayRefundRequest.java @@ -230,7 +230,9 @@ public class WxPayRefundRequest extends BaseWxPayRequest { if (StringUtils.isBlank(this.getOpUserId())) { this.setOpUserId(config.getMchId()); } - + if (StringUtils.isBlank(this.getNotifyUrl())) { + this.setNotifyUrl(config.getRefundNotifyUrl()); + } super.checkAndSign(config); } diff --git a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/config/WxPayConfig.java b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/config/WxPayConfig.java index b42451a66..88e544e67 100644 --- a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/config/WxPayConfig.java +++ b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/config/WxPayConfig.java @@ -97,9 +97,13 @@ public class WxPayConfig { */ private String subMchId; /** - * 微信支付异步回掉地址,通知url必须为直接可访问的url,不能携带参数. + * 微信支付异步回调地址,通知url必须为直接可访问的url,不能携带参数. */ private String notifyUrl; + /** + * 退款结果异步回调地址,通知url必须为直接可访问的url,不能携带参数. + */ + private String refundNotifyUrl; /** * 交易类型. *
diff --git a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/service/impl/BaseWxPayServiceImpl.java b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/service/impl/BaseWxPayServiceImpl.java
index 2e896cda7..5347099a0 100644
--- a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/service/impl/BaseWxPayServiceImpl.java
+++ b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/service/impl/BaseWxPayServiceImpl.java
@@ -263,6 +263,9 @@ public abstract class BaseWxPayServiceImpl implements WxPayService {
 
   @Override
   public WxPayRefundV3Result refundV3(WxPayRefundV3Request request) throws WxPayException {
+    if (StringUtils.isBlank(request.getNotifyUrl())) {
+      request.setNotifyUrl(this.getConfig().getRefundNotifyUrl());
+    }
     String url = String.format("%s/v3/refund/domestic/refunds", this.getPayBaseUrl());
     String response = this.postV3WithWechatpaySerial(url, GSON.toJson(request));
     return GSON.fromJson(response, WxPayRefundV3Result.class);
@@ -270,6 +273,9 @@ public abstract class BaseWxPayServiceImpl implements WxPayService {
 
   @Override
   public WxPayRefundV3Result partnerRefundV3(WxPayPartnerRefundV3Request request) throws WxPayException {
+    if (StringUtils.isBlank(request.getNotifyUrl())) {
+      request.setNotifyUrl(this.getConfig().getRefundNotifyUrl());
+    }
     if (StringUtils.isBlank(request.getSubMchid())) {
       request.setSubMchid(this.getConfig().getSubMchId());
     }