longz
2026-07-21 700cbb19a285e639bb05404503efa3da9988c083
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);