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());