From 7b55e2cd82647b87d79a778ed70fdbddb39ac00a Mon Sep 17 00:00:00 2001
From: luodangjia <luodangjia>
Date: 星期二, 24 九月 2024 13:44:26 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 ruoyi-api/ruoyi-api-payment/src/main/java/com/ruoyi/payment/api/factory/AliPaymentFallbackFactory.java |   34 ++++++++++++++++++++++++++++++----
 1 files changed, 30 insertions(+), 4 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 97ebf3e..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
@@ -7,6 +7,8 @@
 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;
@@ -30,22 +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) {
-                throw new RuntimeException("支付宝退款失败:" + throwable.getMessage());
+                // 手动进行全局事务回滚
+                try {
+                    GlobalTransactionContext.getCurrent().rollback();
+                } catch (TransactionException e) {
+                    throw new RuntimeException(e);
+                }
+                return R.fail("支付宝退款失败:" + throwable.getMessage());
             }
         };
     }

--
Gitblit v1.7.1