From 21347ba3bb614e713d8f00f1e083cdb61e2b5d3d Mon Sep 17 00:00:00 2001
From: longz <longzhaoz@qq.com>
Date: 星期三, 15 七月 2026 11:18:40 +0800
Subject: [PATCH] 支付回调fix

---
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/IcbcAdminFundOperationSupport.java |   26 ++++++++++++++++++++++++--
 1 files changed, 24 insertions(+), 2 deletions(-)

diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/IcbcAdminFundOperationSupport.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/IcbcAdminFundOperationSupport.java
index c6d8f5b..45cd128 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/IcbcAdminFundOperationSupport.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/IcbcAdminFundOperationSupport.java
@@ -1,7 +1,10 @@
 package com.ruoyi.order.service.impl;
 
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
 import com.ruoyi.order.api.model.TChargingOrder;
 import com.ruoyi.order.api.model.TChargingOrderShareRecord;
+import com.ruoyi.payment.api.vo.IcbcPaymentResp;
 import com.ruoyi.payment.api.vo.IcbcRefundReq;
 import com.ruoyi.payment.api.vo.IcbcSubOrderQueryReq;
 import com.ruoyi.payment.api.vo.IcbcSubOrderRefundReq;
@@ -13,15 +16,34 @@
     }
 
     static void validateOrder(TChargingOrder order) {
+        validateIcbcOrder(order);
+        if (!Integer.valueOf(2).equals(order.getRechargePaymentStatus())) {
+            throw new IllegalArgumentException("订单尚未支付成功");
+        }
+    }
+
+    static void validateIcbcOrder(TChargingOrder order) {
         if (order == null) {
             throw new IllegalArgumentException("充电订单不存在");
         }
         if (!"ICBC".equals(order.getSourceName())) {
             throw new IllegalArgumentException("仅支持工商银行支付订单");
         }
-        if (!Integer.valueOf(2).equals(order.getRechargePaymentStatus())) {
-            throw new IllegalArgumentException("订单尚未支付成功");
+    }
+
+    static boolean isBankPaid(IcbcPaymentResp payment) {
+        if (payment == null) {
+            return false;
         }
+        try {
+            JSONObject response = JSON.parseObject(payment.getRawResponse());
+            if (response != null && response.getIntValue("returnCode") == 0
+                    && "0".equals(response.getString("pay_status"))) {
+                return true;
+            }
+        } catch (Exception ignored) {
+        }
+        return "0".equals(payment.getStatus());
     }
 
     static BigDecimal requireAmount(BigDecimal amount) {

--
Gitblit v1.7.1