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