From f7472da77de586017b1bdbb0f28dcb122a41c94c Mon Sep 17 00:00:00 2001 From: zhangli <123879394@qq.com> Date: Thu, 25 Sep 2025 15:28:58 +0800 Subject: [PATCH] =?UTF-8?q?=E9=80=80=E6=AC=BE=E5=A2=9E=E5=8A=A0=E5=88=A4?= =?UTF-8?q?=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sczx/pay/service/WechatPayService.java | 23 +++++----- .../pay/service/impl/AlipayServiceImpl.java | 42 ++++++++++--------- 2 files changed, 35 insertions(+), 30 deletions(-) diff --git a/src/main/java/com/sczx/pay/service/WechatPayService.java b/src/main/java/com/sczx/pay/service/WechatPayService.java index cea75ba..a8f99da 100644 --- a/src/main/java/com/sczx/pay/service/WechatPayService.java +++ b/src/main/java/com/sczx/pay/service/WechatPayService.java @@ -296,16 +296,19 @@ public class WechatPayService { private void recordRefundInfo(RefundRequest request, CompanyWechatConfig companyConfig, Map result,BigDecimal totalFee) { try { RefundRecord refundRecord = refundRecordMapper.getRefundRecordByOutRefundNo(request.getOutRefundNo()); - if (refundRecord == null) { - refundRecord = new RefundRecord(); - refundRecord.setCompanyId(request.getCompanyId()); - refundRecord.setOutTradeNo(request.getOutTradeNo()); - refundRecord.setOutRefundNo(request.getOutRefundNo()); - refundRecord.setTotalFee(totalFee); - refundRecord.setRefundFee(new BigDecimal(request.getRefundFee()).divide(new BigDecimal(100))); // 转换为元 - refundRecord.setRefundDesc(request.getRefundDesc()); - refundRecord.setCreateTime(new Date()); - refundRecord.setUpdateTime(new Date()); + if (refundRecord != null) { + logger.warn("已存在对应的退款记录,退款单号: {}", request.getOutRefundNo()); + return; + } + refundRecord = new RefundRecord(); + refundRecord.setCompanyId(request.getCompanyId()); + refundRecord.setOutTradeNo(request.getOutTradeNo()); + refundRecord.setOutRefundNo(request.getOutRefundNo()); + refundRecord.setTotalFee(totalFee); + refundRecord.setRefundFee(new BigDecimal(request.getRefundFee()).divide(new BigDecimal(100))); // 转换为元 + refundRecord.setRefundDesc(request.getRefundDesc()); + refundRecord.setCreateTime(new Date()); + refundRecord.setUpdateTime(new Date()); if ("SUCCESS".equals(result.get("result_code"))) { refundRecord.setRefundStatus("PROCESSING"); // 退款处理中 diff --git a/src/main/java/com/sczx/pay/service/impl/AlipayServiceImpl.java b/src/main/java/com/sczx/pay/service/impl/AlipayServiceImpl.java index 6ff2cdc..e9aae05 100644 --- a/src/main/java/com/sczx/pay/service/impl/AlipayServiceImpl.java +++ b/src/main/java/com/sczx/pay/service/impl/AlipayServiceImpl.java @@ -606,28 +606,30 @@ public class AlipayServiceImpl implements AlipayService { */ private void recordRefundInfo(AlipayRefundRequest request) { try { + PaymentRecord paymentRecord = paymentRecordMapper.getPaymentRecordByOutTradeNo(request.getOutTradeNo()); RefundRecord refundRecord = refundRecordMapper.getRefundRecordByOutRefundNo(request.getOutRequestNo()); - if(refundRecord == null){ - PaymentRecord paymentRecord = paymentRecordMapper.getPaymentRecordByOutTradeNo(request.getOutTradeNo()); - refundRecord = new RefundRecord(); - refundRecord.setCompanyId(request.getCompanyId()); - refundRecord.setOutTradeNo(request.getOutTradeNo()); - refundRecord.setOutRefundNo(request.getOutRequestNo()); - refundRecord.setTotalFee(paymentRecord.getTotalFee()); - refundRecord.setRefundFee(new BigDecimal(request.getRefundAmount())); // 转换为元 - refundRecord.setRefundDesc(request.getRefundReason()); - refundRecord.setCreateTime(new Date()); - refundRecord.setUpdateTime(new Date()); - - refundRecord.setRefundStatus("PROCESSING"); // 退款处理中 - refundRecord.setRefundStatusDesc("退款处理中"); - refundRecord.setRefundId(request.getOutRequestNo()); - refundRecord.setPayChannel(PaymentRecord.PayChannel.ALIPAY.name()); - refundRecordMapper.insertRefundRecord(refundRecord); - log.info("退款记录已保存,退款单号: {}", request.getOutRequestNo()); - }else { - log.info("退款记录已存在,退款单号: {}", request.getOutRequestNo()); + if (refundRecord != null) { + log.warn("已存在对应的退款记录,退款单号: {}", request.getOutRequestNo()); + return; } + refundRecord = new RefundRecord(); + refundRecord.setCompanyId(request.getCompanyId()); + refundRecord.setOutTradeNo(request.getOutTradeNo()); + refundRecord.setOutRefundNo(request.getOutRequestNo()); + refundRecord.setTotalFee(paymentRecord.getTotalFee()); + refundRecord.setRefundFee(new BigDecimal(request.getRefundAmount())); // 转换为元 + refundRecord.setRefundDesc(request.getRefundReason()); + refundRecord.setCreateTime(new Date()); + refundRecord.setUpdateTime(new Date()); + + refundRecord.setRefundStatus("PROCESSING"); // 退款处理中 + refundRecord.setRefundStatusDesc("退款处理中"); + refundRecord.setRefundId(request.getOutRequestNo()); + refundRecord.setPayChannel(PaymentRecord.PayChannel.ALIPAY.name()); + + + refundRecordMapper.insertRefundRecord(refundRecord); + log.info("退款记录已保存,退款单号: {}", request.getOutRequestNo()); } catch (Exception e) { log.error("保存退款记录异常,退款单号: {}", request.getOutRequestNo(), e); }