From ca825fdfe67223b2eb8a3f9c14b4e60e2339efc6 Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期三, 25 九月 2024 11:25:24 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 ruoyi-api/ruoyi-api-payment/src/main/java/com/ruoyi/payment/api/factory/AliPaymentFallbackFactory.java |   39 ++++++++++++++++++++++++++++++++++++---
 1 files changed, 36 insertions(+), 3 deletions(-)

diff --git a/ruoyi-api/ruoyi-api-payment/src/main/java/com/ruoyi/payment/api/factory/AliPaymentFallbackFactory.java b/ruoyi-api/ruoyi-api-payment/src/main/java/com/ruoyi/payment/api/factory/AliPaymentFallbackFactory.java
index a552827..3c7b402 100644
--- a/ruoyi-api/ruoyi-api-payment/src/main/java/com/ruoyi/payment/api/factory/AliPaymentFallbackFactory.java
+++ b/ruoyi-api/ruoyi-api-payment/src/main/java/com/ruoyi/payment/api/factory/AliPaymentFallbackFactory.java
@@ -2,9 +2,13 @@
 
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.payment.api.feignClient.AliPaymentClient;
+import com.ruoyi.payment.api.model.RefundReq;
+import com.ruoyi.payment.api.model.RefundResp;
 import com.ruoyi.payment.api.vo.AliPaymentReq;
 import com.ruoyi.payment.api.vo.AliPaymentResp;
 import com.ruoyi.payment.api.vo.AliQueryOrder;
+import io.seata.core.exception.TransactionException;
+import io.seata.tm.api.GlobalTransactionContext;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.cloud.openfeign.FallbackFactory;
@@ -28,17 +32,46 @@
     
             @Override
             public R<AliPaymentResp> payment(AliPaymentReq req) {
-                throw new RuntimeException("调起支付宝小程序支付失败:" + throwable.getMessage());
+                // 手动进行全局事务回滚
+                try {
+                    GlobalTransactionContext.getCurrent().rollback();
+                } catch (TransactionException e) {
+                    throw new RuntimeException(e);
+                }
+                return R.fail("调起支付宝小程序支付失败:" + throwable.getMessage());
             }
     
             @Override
             public R<AliQueryOrder> query(String outTradeNo) {
-                throw new RuntimeException("查询支付订单失败:" + throwable.getMessage());
+                // 手动进行全局事务回滚
+                try {
+                    GlobalTransactionContext.getCurrent().rollback();
+                } catch (TransactionException e) {
+                    throw new RuntimeException(e);
+                }
+                return R.fail("查询支付订单失败:" + throwable.getMessage());
             }
     
             @Override
             public void close(String outTradeNo) {
-                throw new RuntimeException("关闭支付订单失败:" + throwable.getMessage());
+                // 手动进行全局事务回滚
+                try {
+                    GlobalTransactionContext.getCurrent().rollback();
+                } catch (TransactionException e) {
+                    throw new RuntimeException(e);
+                }
+                R.fail("关闭支付订单失败:" + throwable.getMessage());
+            }
+
+            @Override
+            public R<RefundResp> refund(RefundReq dto) {
+                // 手动进行全局事务回滚
+                try {
+                    GlobalTransactionContext.getCurrent().rollback();
+                } catch (TransactionException e) {
+                    throw new RuntimeException(e);
+                }
+                return R.fail("支付宝退款失败:" + throwable.getMessage());
             }
         };
     }

--
Gitblit v1.7.1