From 700cbb19a285e639bb05404503efa3da9988c083 Mon Sep 17 00:00:00 2001
From: longz <longzhaoz@qq.com>
Date: 星期二, 21 七月 2026 22:53:55 +0800
Subject: [PATCH] 分账可开关

---
 ruoyi-service/ruoyi-payment/src/main/java/com/ruoyi/payment/controller/IcbcPayController.java |   19 +++++++++++++++++--
 1 files changed, 17 insertions(+), 2 deletions(-)

diff --git a/ruoyi-service/ruoyi-payment/src/main/java/com/ruoyi/payment/controller/IcbcPayController.java b/ruoyi-service/ruoyi-payment/src/main/java/com/ruoyi/payment/controller/IcbcPayController.java
index 54f6821..7e26bcd 100644
--- a/ruoyi-service/ruoyi-payment/src/main/java/com/ruoyi/payment/controller/IcbcPayController.java
+++ b/ruoyi-service/ruoyi-payment/src/main/java/com/ruoyi/payment/controller/IcbcPayController.java
@@ -4,6 +4,7 @@
 import com.alibaba.fastjson.JSONObject;
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.order.api.feignClient.ChargingOrderClient;
+import com.ruoyi.order.api.feignClient.OrderClient;
 import com.ruoyi.payment.api.vo.IcbcPaymentReq;
 import com.ruoyi.payment.api.vo.IcbcPaymentResp;
 import com.ruoyi.payment.api.vo.IcbcRefundReq;
@@ -51,6 +52,9 @@
 
     @Resource
     private ChargingOrderClient chargingOrderClient;
+
+    @Resource
+    private OrderClient orderClient;
 
     @PostMapping("/payment")
     public R<IcbcPaymentResp> payment(@RequestBody IcbcPaymentReq req) {
@@ -242,7 +246,7 @@
                         callback.get("out_trade_no"), callback.get("transaction_id"));
             }
             log.info("工行支付回调解析结果:{}", JSON.toJSONString(callback));
-            dispatchChargingOrderCallback(callback);
+            dispatchPaymentCallback(callback);
             success = true;
         } catch (Exception e) {
             log.error("工行支付回调处理失败,已记录原始请求并返回fail等待重试", e);
@@ -304,7 +308,7 @@
         return values == null || values.length == 0 ? null : values[0];
     }
 
-    private void dispatchChargingOrderCallback(Map<String, String> callback) {
+    void dispatchPaymentCallback(Map<String, String> callback) {
         String outTradeNo = callback.get("out_trade_no");
         String transactionId = callback.get("transaction_id");
         String attach = callback.get("attach");
@@ -312,6 +316,17 @@
             log.info("工行测试支付回调成功,订单号:{},流水号:{},支付类型:{}", outTradeNo, transactionId, attach);
             return;
         }
+        if (outTradeNo != null && outTradeNo.startsWith("HY")) {
+            orderClient.vipCallBack(outTradeNo, transactionId);
+            return;
+        }
+        if (outTradeNo != null && outTradeNo.startsWith("GW")) {
+            orderClient.callBack(outTradeNo, transactionId);
+            return;
+        }
+        if (outTradeNo == null || !outTradeNo.startsWith("CD")) {
+            throw new IllegalArgumentException("工行回调订单类型不支持:" + outTradeNo);
+        }
         Integer paymentType = Integer.valueOf(attach);
         if (Integer.valueOf(1).equals(paymentType)) {
             chargingOrderClient.chargingOrderWXCallback(outTradeNo, transactionId, attach);

--
Gitblit v1.7.1