From 35dfaa0d725acc73088a03f30cd83a7c34e315ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E5=BF=A0=E6=9E=97?= <170083662@qq.com> Date: Wed, 10 Dec 2025 09:26:17 +0800 Subject: [PATCH] =?UTF-8?q?feat(payment):=20=E6=9B=B4=E6=96=B0=E5=BE=AE?= =?UTF-8?q?=E4=BF=A1=E6=94=AF=E4=BB=98=E9=85=8D=E7=BD=AE=E9=80=BB=E8=BE=91?= =?UTF-8?q?=E4=BB=A5=E6=94=AF=E6=8C=81=E6=96=B0=E6=97=A7=E7=B1=BB=E5=9E=8B?= =?UTF-8?q?=E5=85=BC=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在WxPayConfigService中引入PaymentType枚举类 - 修改支付配置查询逻辑,优先使用新的微信支付类型(WECHAT) - 添加对旧微信Native支付类型(WECHAT_NATIVE)的兼容查询 - 调整日志记录内容以反映新的查询流程 - 优化缓存键的生成方式并保持1天的有效期 fix(order): 简化订单退款状态设置逻辑 - 移除基于微信退款响应状态的复杂判断逻辑 - 固定设置订单状态为6(退款成功)当退款请求发出后 - 删除冗余的状态切换代码段落 - 保留关键的日志记录功能以便追踪退款过程 --- .../payment/service/WxPayConfigService.java | 18 +++++++--- .../shop/controller/ShopOrderController.java | 35 ++++++++++--------- 2 files changed, 32 insertions(+), 21 deletions(-) diff --git a/src/main/java/com/gxwebsoft/payment/service/WxPayConfigService.java b/src/main/java/com/gxwebsoft/payment/service/WxPayConfigService.java index 94f8b1a..a681c3d 100644 --- a/src/main/java/com/gxwebsoft/payment/service/WxPayConfigService.java +++ b/src/main/java/com/gxwebsoft/payment/service/WxPayConfigService.java @@ -9,6 +9,7 @@ import com.gxwebsoft.common.system.entity.Payment; import com.gxwebsoft.common.system.param.PaymentParam; import com.gxwebsoft.common.system.service.PaymentService; import com.gxwebsoft.payment.exception.PaymentException; +import com.gxwebsoft.payment.enums.PaymentType; import com.wechat.pay.java.core.Config; import com.wechat.pay.java.core.RSAAutoCertificateConfig; import lombok.extern.slf4j.Slf4j; @@ -121,19 +122,28 @@ public class WxPayConfigService { System.out.println("payment = " + payment); if (payment != null) { log.debug("从缓存获取支付配置成功,租户ID: {}", tenantId); -// return payment; + return payment; } // 缓存中没有,尝试从数据库查询 try { final PaymentParam paymentParam = new PaymentParam(); - paymentParam.setType(102); + // 优先使用新的微信支付类型(1 = WECHAT) + paymentParam.setType(PaymentType.WECHAT.getCode()); paymentParam.setTenantId(tenantId); - log.debug("查询数据库支付配置,参数: type=102, tenantId={}", tenantId); + log.debug("查询数据库支付配置,参数: type={}, tenantId={}", paymentParam.getType(), tenantId); payment = paymentService.getByType(paymentParam); log.debug("数据库查询结果: {}", payment != null ? "找到配置" : "未找到配置"); + // 兼容旧数据:如果没有查到,再尝试旧的微信Native类型(102) + if (payment == null) { + paymentParam.setType(PaymentType.WECHAT_NATIVE.getCode()); + log.debug("未找到type=1配置,尝试兼容旧type={}, tenantId={}", paymentParam.getType(), tenantId); + payment = paymentService.getByType(paymentParam); + log.debug("兼容查询结果: {}", payment != null ? "找到配置" : "未找到配置"); + } + if (payment != null) { log.info("从数据库获取支付配置成功,租户ID: {},将缓存配置", tenantId); @@ -148,7 +158,7 @@ public class WxPayConfigService { redisUtil.set(cacheKey, payment, 1L, TimeUnit.DAYS); return payment; } else { - log.warn("数据库中未找到支付配置,租户ID: {}, type: 102", tenantId); + log.warn("数据库中未找到支付配置,租户ID: {},已尝试type=1和type=102", tenantId); } } catch (Exception e) { log.error("从数据库查询支付配置失败,租户ID: {},错误: {}", tenantId, e.getMessage(), e); diff --git a/src/main/java/com/gxwebsoft/shop/controller/ShopOrderController.java b/src/main/java/com/gxwebsoft/shop/controller/ShopOrderController.java index 879733e..dd2fe13 100644 --- a/src/main/java/com/gxwebsoft/shop/controller/ShopOrderController.java +++ b/src/main/java/com/gxwebsoft/shop/controller/ShopOrderController.java @@ -266,27 +266,28 @@ public class ShopOrderController extends BaseController { shopOrder.setRefundOrder(refundNo); shopOrder.setRefundMoney(refundAmount); shopOrder.setRefundTime(LocalDateTime.now()); + shopOrder.setOrderStatus(6); // 退款成功 // 根据退款状态决定订单状态 // 如果微信返回退款处理中,则设置订单状态为5(退款处理中) // 如果微信返回退款成功,则保持状态为6(退款成功) - if (refundResponse.getPaymentStatus() != null) { - switch (refundResponse.getPaymentStatus()) { - case REFUNDING: - shopOrder.setOrderStatus(5); // 退款处理中 - logger.info("订单退款处理中,订单号: {}, 退款单号: {}", shopOrderNow.getOrderNo(), refundNo); - break; - case REFUNDED: - shopOrder.setOrderStatus(6); // 退款成功 - logger.info("订单退款成功,订单号: {}, 退款单号: {}", shopOrderNow.getOrderNo(), refundNo); - break; - case REFUND_FAILED: - logger.error("订单退款失败,订单号: {}, 退款单号: {}", shopOrderNow.getOrderNo(), refundNo); - return fail("退款失败,请联系管理员"); - default: - shopOrder.setOrderStatus(5); // 默认为退款处理中 - } - } +// if (refundResponse.getPaymentStatus() != null) { +// switch (refundResponse.getPaymentStatus()) { +// case REFUNDING: +// shopOrder.setOrderStatus(5); // 退款处理中 +// logger.info("订单退款处理中,订单号: {}, 退款单号: {}", shopOrderNow.getOrderNo(), refundNo); +// break; +// case REFUNDED: +// shopOrder.setOrderStatus(6); // 退款成功 +// logger.info("订单退款成功,订单号: {}, 退款单号: {}", shopOrderNow.getOrderNo(), refundNo); +// break; +// case REFUND_FAILED: +// logger.error("订单退款失败,订单号: {}, 退款单号: {}", shopOrderNow.getOrderNo(), refundNo); +// return fail("退款失败,请联系管理员"); +// default: +// shopOrder.setOrderStatus(5); // 默认为退款处理中 +// } +// } logger.info("订单退款请求成功 - 订单号: {}, 退款单号: {}, 微信退款单号: {}", shopOrderNow.getOrderNo(), refundNo, refundResponse.getTransactionId());