From 029d0af8d3e0d32dbfff8dc47fb5e997332bc01d Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期一, 06 十一月 2023 10:10:40 +0800
Subject: [PATCH] 修改bug

---
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/NotifyController.java |   17 ++++++++++-------
 1 files changed, 10 insertions(+), 7 deletions(-)

diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/NotifyController.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/NotifyController.java
index 6e3df59..9c4bc5a 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/NotifyController.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/NotifyController.java
@@ -14,6 +14,8 @@
 import com.google.gson.GsonBuilder;
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.common.core.web.controller.BaseController;
+import com.ruoyi.order.domain.dto.WechatPaymentRefundDto;
+import com.ruoyi.order.domain.dto.WeixinPaymentNotifyDto;
 import com.ruoyi.order.domain.pojo.account.OrderRefund;
 import com.ruoyi.order.domain.vo.ProfitSharingNotifyNewResult;
 import com.ruoyi.order.domain.vo.WeixinPaymentNotifyVo;
@@ -36,6 +38,7 @@
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
 import java.io.PrintWriter;
+import java.math.BigDecimal;
 import java.nio.charset.StandardCharsets;
 import java.security.GeneralSecurityException;
 import java.util.Collection;
@@ -94,7 +97,7 @@
                 PartnerTransactionsResult result = notifyResult.getResult();
                 // 支付通知回调
                 if ("SUCCESS".equals(result.getTradeState())) {
-                    orderService.payBack(result);
+                    orderService.payBack(result, BigDecimal.ONE);
                 }
                 resultMessage = GSON.toJson(notifyResult);
             } else if (WxPayNotifyEventTypeEnum.REFUND_SUCCESS.getCode().equals(eventType)
@@ -229,8 +232,8 @@
 
     @RequestMapping(value = "/wechatPaymentCallback", method = RequestMethod.POST)
     @ApiOperation(value = "微信支付通知(汇付天下)")
-    public void wechatPaymentCallback(@RequestBody JSONObject jsonObject, HttpServletResponse response){
-        R<WeixinPaymentNotifyVo> r = HuiFuTianXiaUtil.weixinPaymentNotify(jsonObject);
+    public void wechatPaymentCallback(WeixinPaymentNotifyDto dto, HttpServletResponse response){
+        R<WeixinPaymentNotifyVo> r = HuiFuTianXiaUtil.weixinPaymentNotify(dto);
         if(r.getCode() == 200){
             WeixinPaymentNotifyVo data = r.getData();
             String transStat = data.getTransStat();
@@ -238,7 +241,7 @@
                 PartnerTransactionsResult transaction = new PartnerTransactionsResult();
                 transaction.setOutTradeNo(data.getReqSeqId());
                 //开始处理业务数据
-                orderService.payBack(transaction);
+                orderService.payBack(transaction, data.getFeeFlag() == 1 ? BigDecimal.ZERO : new BigDecimal(data.getFeeAmount()));
 
                 response.setStatus(200);
                 PrintWriter out = null;
@@ -260,8 +263,8 @@
 
     @RequestMapping(value = "/wechatPaymentRefundCallback", method = RequestMethod.POST)
     @ApiOperation(value = "微信支付退款通知(汇付天下)")
-    public void wechatPaymentRefundCallback(@RequestBody JSONObject jsonObject, HttpServletResponse response){
-        R<WeixinPaymentRefundVo> r = HuiFuTianXiaUtil.weixinPaymentRefundNotify(jsonObject);
+    public void wechatPaymentRefundCallback(WechatPaymentRefundDto dto, HttpServletResponse response){
+        R<WeixinPaymentRefundVo> r = HuiFuTianXiaUtil.weixinPaymentRefundNotify(dto);
         if(r.getCode() == 200){
             WeixinPaymentRefundVo data = r.getData();
             String transStat = data.getTransStat();
@@ -269,7 +272,7 @@
                 //开始处理业务数据
                 String reqSeqId = data.getReqSeqId();
                 OrderRefund orderRefund = orderRefundService.getById(reqSeqId);
-                if(null != orderRefund){
+                if(null != orderRefund && orderRefund.getRefundStatus() != 2){
                     orderRefund.setWxRefundId(data.getPartyOrderId());
                     orderRefund.setBackTime(data.getTransDate() + data.getTransTime());
                     orderRefund.setRefundStatus(2);

--
Gitblit v1.7.1