From 7f0f418c272bdaafd8c067a3559f9c38b99a6778 Mon Sep 17 00:00:00 2001
From: “mitao” <“2763622819@qq.com”>
Date: 星期一, 13 四月 2026 15:24:08 +0800
Subject: [PATCH] feat:原微信支付切换为第三方

---
 DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/CallbackController.java |   63 +++++++++++++++++++++++++++++++
 1 files changed, 63 insertions(+), 0 deletions(-)

diff --git a/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/CallbackController.java b/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/CallbackController.java
index 8c9fc2f..eff5bb1 100644
--- a/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/CallbackController.java
+++ b/DriverYKDTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/CallbackController.java
@@ -13,6 +13,7 @@
 import com.stylefeng.guns.modular.system.service.ICompanyService;
 import com.stylefeng.guns.modular.system.service.IDriverService;
 import com.stylefeng.guns.modular.system.service.IReassignService;
+import com.stylefeng.guns.modular.system.util.CbyzxOrderPayHelper;
 import com.stylefeng.guns.modular.system.util.PayMoneyUtil;
 import com.stylefeng.guns.modular.system.util.rongyun.RongYunUtil;
 import com.stylefeng.guns.modular.system.util.rongyun.model.CloudRecordingCallback;
@@ -48,6 +49,9 @@
     @Autowired
     private PayMoneyUtil payMoneyUtil;
 
+    @Autowired
+    private CbyzxOrderPayHelper cbyzxOrderPayHelper;
+
 
     @Autowired
     private IOrderPrivateCarService orderPrivateCarService;
@@ -57,6 +61,58 @@
 
     @Autowired
     private IOrderCrossCityService orderCrossCityService;
+
+    /**
+     * 创博优微信支付统一回调。
+     * out_trade_no 为平台业务单号,用于反解跨城完成支付或改派支付;
+     * trade_no 为创博优支付流水号,用于回填真实支付流水;
+     * trade_status=TRADE_SUCCESS 视为支付成功;
+     * notify_type=directpay.status.sync 表示支付结果通知。
+     */
+    @ResponseBody
+    @PostMapping("/cbyzxPayOrderTaxi")
+    public Map<String, Object> cbyzxPayOrderTaxi(HttpServletRequest request) {
+        try {
+            JSONObject payload = cbyzxOrderPayHelper.parseCallbackRequest(request);
+            if (payload == null) {
+                return buildCbyzxCallbackResponse(1, "invalid request");
+            }
+            if (!cbyzxOrderPayHelper.isPaySuccess(payload)) {
+                return buildCbyzxCallbackResponse(1, cbyzxOrderPayHelper.extractMessage(payload));
+            }
+
+            String outTradeNo = cbyzxOrderPayHelper.extractOutRequestNo(payload);
+            if (ToolUtil.isEmpty(outTradeNo)) {
+                return buildCbyzxCallbackResponse(1, "missing out_trade_no");
+            }
+            String tradeNo = cbyzxOrderPayHelper.extractThirdPartyOrderNo(payload);
+            String orderId = ToolUtil.isNotEmpty(tradeNo) ? tradeNo : outTradeNo;
+
+            if (outTradeNo.startsWith("crossCity_")) {
+                String legacyOutTradeNo = outTradeNo.substring("crossCity_".length());
+                String[] split = legacyOutTradeNo.split("_");
+                if (split.length < 2) {
+                    return buildCbyzxCallbackResponse(1, "invalid crossCity out_trade_no");
+                }
+                orderCrossCityService.payOrderCrossCityCallback(Integer.valueOf(split[0]), orderId, 1);
+                return buildCbyzxCallbackResponse(0, "success");
+            }
+            if (outTradeNo.startsWith("reassign_")) {
+                String legacyOutTradeNo = outTradeNo.substring("reassign_".length());
+                reassignService.payReassign(legacyOutTradeNo, orderId, 1);
+                return buildCbyzxCallbackResponse(0, "success");
+            }
+            if (outTradeNo.startsWith("reassignBatch_")) {
+                String legacyOutTradeNo = outTradeNo.substring("reassignBatch_".length());
+                reassignService.payReassign(legacyOutTradeNo, orderId, 1);
+                return buildCbyzxCallbackResponse(0, "success");
+            }
+            return buildCbyzxCallbackResponse(1, "unsupported out_trade_no");
+        } catch (Exception e) {
+            e.printStackTrace();
+            return buildCbyzxCallbackResponse(1, "fail");
+        }
+    }
 
 
 
@@ -192,4 +248,11 @@
         out.close();
     }
 
+    private Map<String, Object> buildCbyzxCallbackResponse(Integer code, String msg) {
+        Map<String, Object> result = new HashMap<>();
+        result.put("code", code);
+        result.put("msg", msg);
+        return result;
+    }
+
 }

--
Gitblit v1.7.1