From 9dfd9506d0743a22d404046ffe7cda6081404a8a Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Tue, 30 Jun 2026 17:09:36 +0800
Subject: [PATCH] feat(order): 添加XT支付功能和确认收款功能
---
src/main/java/cc/mrbird/febs/mall/controller/dependentStation/ApiMallOrderController.java | 56 +++++++++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 55 insertions(+), 1 deletions(-)
diff --git a/src/main/java/cc/mrbird/febs/mall/controller/dependentStation/ApiMallOrderController.java b/src/main/java/cc/mrbird/febs/mall/controller/dependentStation/ApiMallOrderController.java
index 37cc3cd..2cf681e 100644
--- a/src/main/java/cc/mrbird/febs/mall/controller/dependentStation/ApiMallOrderController.java
+++ b/src/main/java/cc/mrbird/febs/mall/controller/dependentStation/ApiMallOrderController.java
@@ -4,6 +4,7 @@
import cc.mrbird.febs.common.entity.FebsResponse;
import cc.mrbird.febs.common.entity.LimitType;
import cc.mrbird.febs.common.enumerates.OrderStatusEnum;
+import cc.mrbird.febs.common.utils.MallUtils;
import cc.mrbird.febs.common.utils.ValidateEntityUtils;
import cc.mrbird.febs.mall.controller.dependentStation.constant.OrderConstants;
import cc.mrbird.febs.mall.dto.*;
@@ -15,6 +16,7 @@
import cc.mrbird.febs.mall.vo.OrderListVo;
import cc.mrbird.febs.pay.service.IXcxPayService;
import cc.mrbird.febs.pay.service.LwPayService;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse;
@@ -174,6 +176,49 @@
return new FebsResponse().success().data(iXcxPayService.getTemplateId());
}
+ // ==================== XT 支付 ====================
+
+ /**
+ * 创建订单并通过 XT 支付
+ * <p>
+ * 流程:创建订单 → 通过 XT 支付链接
+ * <p>
+ */
+ @ApiOperation(value = "创建订单-XT支付", notes = "创建订单并返回XT支付")
+ @PostMapping(value = "/createOrderByXtPay")
+ @Limit(key = "createOrderByXtPay", period = 1, count = 1, name = "XT下单", prefix = "limit", limitType = LimitType.IP)
+ public FebsResponse createOrderByXtPay(@RequestBody @Validated XtPayCreateOrderDto lwPayDto) {
+ // 1. 创建订单
+ AddOrderDto addOrderDto = lwPayDto.getOrder();
+ Long orderId = mallOrderInfoService.createOrder(addOrderDto);
+
+ // 2. 获取订单详情
+ MallOrderInfo order = mallOrderInfoService.getById(orderId);
+ if (order != null
+ && OrderStatusEnum.WAIT_PAY.getValue() == order.getStatus()
+ ){
+ return mallOrderInfoService.createOrderByXtPay();
+ }
+ return new FebsResponse().fail().message("Payment channel exception");
+ }
+
+ @ApiOperation(value = "XT支付", notes = "XT支付")
+ @PostMapping(value = "/payOrderByXtPay", produces = "application/json")
+ public FebsResponse payOrderByXtPay(@RequestBody @Validated ApiOrderPayDto payDto) {
+
+ Long orderId = payDto.getOrderId();
+ Integer payType = payDto.getPayType();
+ // 2. 获取订单详情
+ MallOrderInfo order = mallOrderInfoService.getById(orderId);
+ if (order != null
+ && OrderConstants.PAY_TYPE_XT == payType
+ && OrderStatusEnum.WAIT_PAY.getValue() == order.getStatus()
+ ){
+ return mallOrderInfoService.createOrderByXtPay();
+ }
+ return new FebsResponse().fail().message("Payment channel exception");
+ }
+
// ==================== LWPAY 支付 ====================
/**
@@ -198,6 +243,7 @@
if (order != null
&& OrderStatusEnum.WAIT_PAY.getValue() == order.getStatus()
){
+
// 3. 调用 LWPAY 代收接口
try {
String payUrl = lwPayService.createPayment(
@@ -237,6 +283,14 @@
&& OrderConstants.PAY_TYPE_SYSTEM == payType
&& OrderStatusEnum.WAIT_PAY.getValue() == order.getStatus()
){
+ String orderNo = MallUtils.getOrderNum();
+ order.setOrderNo(orderNo);
+ mallOrderInfoService.getBaseMapper().update(
+ null,
+ Wrappers.lambdaUpdate(MallOrderInfo.class)
+ .set(MallOrderInfo::getOrderNo, orderNo)
+ .eq(MallOrderInfo::getId, orderId)
+ );
// 3. 调用 LWPAY 代收接口
try {
String payUrl = lwPayService.createPayment(
@@ -249,7 +303,7 @@
result.put("orderNo", order.getOrderNo());
result.put("amount", order.getAmount());
result.put("payUrl", payUrl);
- return new FebsResponse().success().data(result).message("下单成功");
+ return new FebsResponse().success().data(result).message("success");
} catch (Exception e) {
log.error("LWPAY 代收下单失败: orderId={}", orderId, e);
return new FebsResponse().fail().message("Payment channel exception: " + e.getMessage());
--
Gitblit v1.9.1