From 25e6e8fd8f8e01256a0486eeb4d2fb208ec9ee58 Mon Sep 17 00:00:00 2001 From: bootx Date: Sun, 11 May 2025 14:48:36 +0800 Subject: [PATCH 1/2] =?UTF-8?q?fix=20=E5=BE=AE=E4=BF=A1=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E5=95=86=E9=80=80=E6=AC=BE=E5=92=8C=E5=9B=9E=E8=B0=83=E5=A4=84?= =?UTF-8?q?=E7=90=86=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/payment/callback/WechatPayCallbackService.java | 2 +- .../service/payment/callback/WechatRefundCallbackService.java | 2 +- .../payment/callback/WechatTransferCallbackService.java | 2 +- .../service/payment/refund/WechatSubRefundV3Service.java | 4 ++++ 4 files changed, 7 insertions(+), 3 deletions(-) diff --git a/daxpay-open-channel/daxpay-open-channel-wechat/src/main/java/org/dromara/daxpay/channel/wechat/service/payment/callback/WechatPayCallbackService.java b/daxpay-open-channel/daxpay-open-channel-wechat/src/main/java/org/dromara/daxpay/channel/wechat/service/payment/callback/WechatPayCallbackService.java index 1c2e7397..72aadc4b 100644 --- a/daxpay-open-channel/daxpay-open-channel-wechat/src/main/java/org/dromara/daxpay/channel/wechat/service/payment/callback/WechatPayCallbackService.java +++ b/daxpay-open-channel/daxpay-open-channel-wechat/src/main/java/org/dromara/daxpay/channel/wechat/service/payment/callback/WechatPayCallbackService.java @@ -73,7 +73,7 @@ public class WechatPayCallbackService { callbackInfo.setCallbackType(TradeTypeEnum.PAY) .setChannel(isv? ChannelEnum.WECHAT_ISV.getCode():ChannelEnum.WECHAT.getCode()); - WechatPayConfig config = wechatPayConfigService.getAndCheckConfig(false); + WechatPayConfig config = wechatPayConfigService.getAndCheckConfig(isv); WxPayService wxPayService = wechatPayConfigService.wxJavaSdk(config); // v2 或 v3 if (Objects.equals(config.getApiVersion(), WechatPayCode.API_V2)) { diff --git a/daxpay-open-channel/daxpay-open-channel-wechat/src/main/java/org/dromara/daxpay/channel/wechat/service/payment/callback/WechatRefundCallbackService.java b/daxpay-open-channel/daxpay-open-channel-wechat/src/main/java/org/dromara/daxpay/channel/wechat/service/payment/callback/WechatRefundCallbackService.java index 8462d895..0044f048 100644 --- a/daxpay-open-channel/daxpay-open-channel-wechat/src/main/java/org/dromara/daxpay/channel/wechat/service/payment/callback/WechatRefundCallbackService.java +++ b/daxpay-open-channel/daxpay-open-channel-wechat/src/main/java/org/dromara/daxpay/channel/wechat/service/payment/callback/WechatRefundCallbackService.java @@ -75,7 +75,7 @@ public class WechatRefundCallbackService { callbackInfo.setCallbackType(TradeTypeEnum.REFUND) .setChannel(isv? ChannelEnum.WECHAT_ISV.getCode():ChannelEnum.WECHAT.getCode()); - WechatPayConfig config = wechatPayConfigService.getAndCheckConfig(false); + WechatPayConfig config = wechatPayConfigService.getAndCheckConfig(isv); WxPayService wxPayService = wechatPayConfigService.wxJavaSdk(config); // v2 或 v3 if (Objects.equals(config.getApiVersion(), WechatPayCode.API_V2)) { diff --git a/daxpay-open-channel/daxpay-open-channel-wechat/src/main/java/org/dromara/daxpay/channel/wechat/service/payment/callback/WechatTransferCallbackService.java b/daxpay-open-channel/daxpay-open-channel-wechat/src/main/java/org/dromara/daxpay/channel/wechat/service/payment/callback/WechatTransferCallbackService.java index a705d48c..d28521a5 100644 --- a/daxpay-open-channel/daxpay-open-channel-wechat/src/main/java/org/dromara/daxpay/channel/wechat/service/payment/callback/WechatTransferCallbackService.java +++ b/daxpay-open-channel/daxpay-open-channel-wechat/src/main/java/org/dromara/daxpay/channel/wechat/service/payment/callback/WechatTransferCallbackService.java @@ -66,7 +66,7 @@ public class WechatTransferCallbackService { CallbackLocal callbackInfo = PaymentContextLocal.get().getCallbackInfo(); callbackInfo.setChannel(isv? ChannelEnum.WECHAT_ISV.getCode():ChannelEnum.WECHAT.getCode()) .setCallbackType(TradeTypeEnum.TRANSFER); - WechatPayConfig config = wechatPayConfigService.getAndCheckConfig(false); + WechatPayConfig config = wechatPayConfigService.getAndCheckConfig(isv); WxPayService wxPayService = wechatPayConfigService.wxJavaSdk(config); // V3 回调接收处理 String body = JakartaServletUtil.getBody(request); diff --git a/daxpay-open-channel/daxpay-open-channel-wechat/src/main/java/org/dromara/daxpay/channel/wechat/service/payment/refund/WechatSubRefundV3Service.java b/daxpay-open-channel/daxpay-open-channel-wechat/src/main/java/org/dromara/daxpay/channel/wechat/service/payment/refund/WechatSubRefundV3Service.java index 127ff4ec..9d8fc1f4 100644 --- a/daxpay-open-channel/daxpay-open-channel-wechat/src/main/java/org/dromara/daxpay/channel/wechat/service/payment/refund/WechatSubRefundV3Service.java +++ b/daxpay-open-channel/daxpay-open-channel-wechat/src/main/java/org/dromara/daxpay/channel/wechat/service/payment/refund/WechatSubRefundV3Service.java @@ -1,5 +1,6 @@ package org.dromara.daxpay.channel.wechat.service.payment.refund; +import cn.hutool.core.util.StrUtil; import org.dromara.daxpay.channel.wechat.entity.config.WechatPayConfig; import org.dromara.daxpay.channel.wechat.enums.WechatRefundStatusEnum; import org.dromara.daxpay.channel.wechat.service.payment.config.WechatPayConfigService; @@ -48,6 +49,9 @@ public class WechatSubRefundV3Service { .setOutTradeNo(refundOrder.getOrderNo()) .setAmount(amount) .setSubMchid(config.getSubMchId()); + if (StrUtil.isBlank(request.getReason())){ + request.setReason("退款"); + } try { WxPayRefundV3Result result = wxPayService.refundV3(request); From 94aa9e13a45bd97ec6e541b12fc76fc72db0e22b Mon Sep 17 00:00:00 2001 From: bootx Date: Sun, 18 May 2025 15:04:29 +0800 Subject: [PATCH 2/2] =?UTF-8?q?fix=20=E4=BC=98=E5=8C=96=E5=A4=84=E7=90=86?= =?UTF-8?q?=E9=80=9A=E7=9F=A5=E5=92=8C=E5=9B=9E=E8=B0=83=E6=B6=88=E6=81=AF?= =?UTF-8?q?=E7=AD=BE=E5=90=8D=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dromara/daxpay/core/result/DaxResult.java | 6 ++---- .../service/common/aop/PaymentVerifyAspect.java | 6 ++++++ .../callback/MerchantCallbackSendService.java | 16 ++++++++++------ .../notice/notify/MerchantNotifySendService.java | 4 ++++ 4 files changed, 22 insertions(+), 10 deletions(-) diff --git a/daxpay-open/daxpay-open-core/src/main/java/org/dromara/daxpay/core/result/DaxResult.java b/daxpay-open/daxpay-open-core/src/main/java/org/dromara/daxpay/core/result/DaxResult.java index 02f246a6..b8719f04 100644 --- a/daxpay-open/daxpay-open-core/src/main/java/org/dromara/daxpay/core/result/DaxResult.java +++ b/daxpay-open/daxpay-open-core/src/main/java/org/dromara/daxpay/core/result/DaxResult.java @@ -1,10 +1,8 @@ package org.dromara.daxpay.core.result; -import cn.bootx.platform.core.code.CommonCode; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import lombok.NoArgsConstructor; -import org.slf4j.MDC; import java.time.LocalDateTime; @@ -35,11 +33,11 @@ public class DaxResult{ private String sign; @Schema(description = "响应时间") - private LocalDateTime resTime = LocalDateTime.now(); + private LocalDateTime resTime; /** 追踪ID */ @Schema(description = "追踪ID") - private String traceId = MDC.get(CommonCode.TRACE_ID); + private String traceId; public DaxResult(int successCode, T data, String msg) { this.code = successCode; diff --git a/daxpay-open/daxpay-open-service/src/main/java/org/dromara/daxpay/service/common/aop/PaymentVerifyAspect.java b/daxpay-open/daxpay-open-service/src/main/java/org/dromara/daxpay/service/common/aop/PaymentVerifyAspect.java index 99119050..c013336e 100644 --- a/daxpay-open/daxpay-open-service/src/main/java/org/dromara/daxpay/service/common/aop/PaymentVerifyAspect.java +++ b/daxpay-open/daxpay-open-service/src/main/java/org/dromara/daxpay/service/common/aop/PaymentVerifyAspect.java @@ -1,5 +1,6 @@ package org.dromara.daxpay.service.common.aop; +import cn.bootx.platform.core.code.CommonCode; import cn.bootx.platform.core.exception.BizException; import cn.bootx.platform.core.exception.ValidationFailedException; import cn.bootx.platform.core.util.ValidationUtil; @@ -12,9 +13,12 @@ import lombok.extern.slf4j.Slf4j; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; +import org.slf4j.MDC; import org.springframework.core.annotation.Order; import org.springframework.stereotype.Component; +import java.time.LocalDateTime; + /** * 支付签名切面, 用于对支付参数进行校验和签名 * 执行顺序: 过滤器 -> 拦截器 -> 切面 -> 方法 @@ -60,6 +64,8 @@ public class PaymentVerifyAspect { proceed = pjp.proceed(); } catch (BizException ex) { DaxResult result = new DaxResult<>(ex.getCode(), ex.getMessage()); + result.setTraceId(MDC.get(CommonCode.TRACE_ID)); + result.setResTime(LocalDateTime.now()); paymentAssistService.sign(result); return result; } diff --git a/daxpay-open/daxpay-open-service/src/main/java/org/dromara/daxpay/service/service/notice/callback/MerchantCallbackSendService.java b/daxpay-open/daxpay-open-service/src/main/java/org/dromara/daxpay/service/service/notice/callback/MerchantCallbackSendService.java index dd1f920e..e5ef6f94 100644 --- a/daxpay-open/daxpay-open-service/src/main/java/org/dromara/daxpay/service/service/notice/callback/MerchantCallbackSendService.java +++ b/daxpay-open/daxpay-open-service/src/main/java/org/dromara/daxpay/service/service/notice/callback/MerchantCallbackSendService.java @@ -1,7 +1,14 @@ package org.dromara.daxpay.service.service.notice.callback; +import cn.bootx.platform.core.code.CommonCode; import cn.bootx.platform.core.util.JsonUtil; import cn.bootx.platform.starter.redis.delay.service.DelayJobService; +import cn.hutool.core.util.StrUtil; +import cn.hutool.http.ContentType; +import cn.hutool.http.HttpResponse; +import cn.hutool.http.HttpUtil; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.dromara.daxpay.core.result.DaxNoticeResult; import org.dromara.daxpay.service.code.DaxPayCode; import org.dromara.daxpay.service.dao.notice.callback.MerchantCallbackRecordManager; @@ -11,12 +18,7 @@ import org.dromara.daxpay.service.entity.notice.callback.MerchantCallbackTask; import org.dromara.daxpay.service.enums.NoticeSendTypeEnum; import org.dromara.daxpay.service.service.assist.PaymentAssistService; import org.dromara.daxpay.service.service.notice.MerchantNoticeAssistService; -import cn.hutool.core.util.StrUtil; -import cn.hutool.http.ContentType; -import cn.hutool.http.HttpResponse; -import cn.hutool.http.HttpUtil; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; +import org.slf4j.MDC; import org.springframework.stereotype.Service; import java.time.LocalDateTime; @@ -62,6 +64,8 @@ public class MerchantCallbackSendService { // 构造通知消息并签名 var daxResult = new DaxNoticeResult>(SUCCESS_CODE, JsonUtil.parseObj(task.getContent()), SUCCESS_MSG) .setAppId(task.getAppId()); + daxResult.setTraceId(MDC.get(CommonCode.TRACE_ID)); + daxResult.setResTime(LocalDateTime.now()); paymentAssistService.sign(daxResult); HttpResponse execute = HttpUtil.createPost(task.getUrl()) .body(JsonUtil.toJsonStr(daxResult), ContentType.JSON.getValue()) diff --git a/daxpay-open/daxpay-open-service/src/main/java/org/dromara/daxpay/service/service/notice/notify/MerchantNotifySendService.java b/daxpay-open/daxpay-open-service/src/main/java/org/dromara/daxpay/service/service/notice/notify/MerchantNotifySendService.java index 82f23d3c..1f145432 100644 --- a/daxpay-open/daxpay-open-service/src/main/java/org/dromara/daxpay/service/service/notice/notify/MerchantNotifySendService.java +++ b/daxpay-open/daxpay-open-service/src/main/java/org/dromara/daxpay/service/service/notice/notify/MerchantNotifySendService.java @@ -1,5 +1,6 @@ package org.dromara.daxpay.service.service.notice.notify; +import cn.bootx.platform.core.code.CommonCode; import cn.bootx.platform.core.util.JsonUtil; import cn.bootx.platform.starter.redis.delay.service.DelayJobService; import org.dromara.daxpay.core.enums.MerchantNotifyTypeEnum; @@ -20,6 +21,7 @@ import cn.hutool.http.HttpResponse; import cn.hutool.http.HttpUtil; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.slf4j.MDC; import org.springframework.stereotype.Service; import java.time.LocalDateTime; @@ -70,6 +72,8 @@ public class MerchantNotifySendService { var daxResult = new DaxNoticeResult>(SUCCESS_CODE, JsonUtil.parseObj(task.getContent()), SUCCESS_MSG) .setAppId(task.getAppId()) .setNoticeType(task.getNotifyType()); + daxResult.setTraceId(MDC.get(CommonCode.TRACE_ID)); + daxResult.setResTime(LocalDateTime.now()); paymentAssistService.sign(daxResult); HttpResponse execute = HttpUtil.createPost(url)