From 54081fd0df3bdaa5766e5c94eae060abf9a81e20 Mon Sep 17 00:00:00 2001 From: bootx Date: Sat, 27 Apr 2024 23:08:51 +0800 Subject: [PATCH] =?UTF-8?q?ref=20=E5=8F=82=E6=95=B0=E4=BF=AE=E6=94=B9+?= =?UTF-8?q?=E8=81=94=E8=B0=83=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/order/PayOrderController.java | 5 +- .../order/RefundOrderController.java | 5 +- .../record/PayCallbackRecordController.java | 4 +- .../platform/daxpay/code/PayChannelEnum.java | 9 --- .../param/payment/pay/PayCancelParam.java | 2 +- ...onResult.java => PaymentCommonResult.java} | 2 +- .../result/allocation/AllocationResult.java | 4 +- .../daxpay/result/order/PayOrderResult.java | 4 +- .../daxpay/result/pay/PayCloseResult.java | 4 +- .../platform/daxpay/result/pay/PayResult.java | 4 +- .../daxpay/result/pay/RefundResult.java | 4 +- .../daxpay/result/pay/SyncResult.java | 4 +- .../daxpay/util/OrderNoGenerateUtil.java | 15 +++-- .../daxpay/service/annotation/PaymentApi.java | 4 +- .../configuration/DaxPayProperties.java | 8 +++ .../alipay/service/AliPaySyncService.java | 8 +-- .../union/service/UnionPaySyncService.java | 4 +- .../wechat/service/WeChatPayService.java | 2 +- .../wechat/service/WeChatPaySyncService.java | 8 +-- .../service/WechatPayRefundService.java | 6 +- .../allocation/entity/AllocationOrder.java | 8 +-- .../core/order/pay/entity/PayOrder.java | 4 +- .../order/pay/service/PayOrderService.java | 4 ++ .../core/order/refund/entity/RefundOrder.java | 7 +-- .../refund/service/RefundOrderService.java | 5 +- .../close/service/PayCloseService.java | 23 ------- .../common/aop/PaymentVerifySignAop.java | 38 ++++++++--- .../common/service/PaymentSignService.java | 16 +++++ .../service/ClientNoticeAssistService.java | 2 +- .../payment/pay/service/PayAssistService.java | 19 ------ .../reconcile/service/ReconcileService.java | 13 ---- .../refund/service/RefundAssistService.java | 4 +- .../payment/refund/service/RefundService.java | 2 +- .../repair/service/PayRepairService.java | 7 ++- .../repair/service/RefundRepairService.java | 2 +- .../payment/sync/result/PaySyncResult.java | 4 +- .../payment/sync/result/RefundSyncResult.java | 2 +- .../payment/sync/service/PaySyncService.java | 32 ++-------- .../sync/service/RefundSyncService.java | 4 +- .../callback/entity/PayCallbackRecord.java | 4 +- .../record/flow/entity/TradeFlowRecord.java | 8 +-- .../record/sync/entity/PaySyncRecord.java | 4 +- .../report/entity/ChannelProportionPie.java | 29 --------- .../service/dto/order/pay/PayOrderDto.java | 50 +++++++++------ .../dto/order/refund/RefundOrderDto.java | 59 ++++++++++------- .../record/callback/PayCallbackRecordDto.java | 10 +-- .../dto/record/sync/PaySyncRecordDto.java | 2 +- .../exception/PaymentExceptionHandler.java | 36 ----------- .../service/param/order/PayOrderQuery.java | 63 ++++++++++++------- .../mapper/report/CockpitReportMapper.xml | 26 +------- .../src/main/resources/application-dev.yml | 2 + 51 files changed, 264 insertions(+), 331 deletions(-) rename daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/result/{CommonResult.java => PaymentCommonResult.java} (96%) delete mode 100644 daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/report/entity/ChannelProportionPie.java delete mode 100644 daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/handler/exception/PaymentExceptionHandler.java diff --git a/daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/order/PayOrderController.java b/daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/order/PayOrderController.java index c45b312c2..099586cfd 100644 --- a/daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/order/PayOrderController.java +++ b/daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/order/PayOrderController.java @@ -39,8 +39,9 @@ import org.springframework.web.bind.annotation.RestController; public class PayOrderController { private final PayOrderQueryService queryService; private final PayOrderExtraService payOrderExtraService; + private final PayCloseService payCloseService; + - private final PayCloseService PayCloseService; private final PaySyncService paySyncService; private final AllocationService allocationService; @@ -89,7 +90,7 @@ public class PayOrderController { public ResResult close(String orderNo){ PayCloseParam param = new PayCloseParam(); param.setOrderNo(orderNo); - PayCloseService.close(param); + payCloseService.close(param); return Res.ok(); } diff --git a/daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/order/RefundOrderController.java b/daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/order/RefundOrderController.java index c02f7277b..1723e4293 100644 --- a/daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/order/RefundOrderController.java +++ b/daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/order/RefundOrderController.java @@ -8,7 +8,6 @@ import cn.bootx.platform.daxpay.param.payment.refund.RefundSyncParam; import cn.bootx.platform.daxpay.result.pay.SyncResult; import cn.bootx.platform.daxpay.service.core.order.refund.service.RefundOrderQueryService; import cn.bootx.platform.daxpay.service.core.order.refund.service.RefundOrderService; -import cn.bootx.platform.daxpay.service.core.payment.refund.service.RefundService; import cn.bootx.platform.daxpay.service.core.payment.sync.service.RefundSyncService; import cn.bootx.platform.daxpay.service.dto.order.refund.RefundOrderDto; import cn.bootx.platform.daxpay.service.dto.order.refund.RefundOrderExtraDto; @@ -59,8 +58,8 @@ public class RefundOrderController { } @Operation(summary = "退款同步") - @PostMapping("/syncById") - public ResResult syncById(String refundNo){ + @PostMapping("/syncByRefundNo") + public ResResult syncByRefundNo(String refundNo){ RefundSyncParam refundSyncParam = new RefundSyncParam(); refundSyncParam.setRefundNo(refundNo); return Res.ok(refundSyncService.sync(refundSyncParam)); diff --git a/daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/record/PayCallbackRecordController.java b/daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/record/PayCallbackRecordController.java index e96abcb1e..a8970bb52 100644 --- a/daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/record/PayCallbackRecordController.java +++ b/daxpay-single/daxpay-single-admin/src/main/java/cn/bootx/platform/daxpay/admin/controller/record/PayCallbackRecordController.java @@ -34,8 +34,8 @@ public class PayCallbackRecordController { @Operation(summary = "查询单条") @GetMapping("/findById") - public ResResult findById(Long paymentId){ - return Res.ok(service.findById(paymentId)); + public ResResult findById(Long id){ + return Res.ok(service.findById(id)); } } diff --git a/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/code/PayChannelEnum.java b/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/code/PayChannelEnum.java index efffe9186..16e7bc57e 100644 --- a/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/code/PayChannelEnum.java +++ b/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/code/PayChannelEnum.java @@ -5,8 +5,6 @@ import lombok.Getter; import lombok.RequiredArgsConstructor; import java.util.Arrays; -import java.util.Collections; -import java.util.List; import java.util.Objects; /** @@ -44,11 +42,4 @@ public enum PayChannelEnum { .orElseThrow(() -> new PayFailureException("不存在的支付通道")); } - /** 异步支付通道 */ - @Deprecated - public static final List ASYNC_TYPE = Collections.unmodifiableList(Arrays.asList(ALI, WECHAT, UNION_PAY)); - /** 异步支付通道的编码 */ - @Deprecated - public static final List ASYNC_TYPE_CODE = Collections.unmodifiableList(Arrays.asList(ALI.code, WECHAT.code, UNION_PAY.code)); - } diff --git a/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/param/payment/pay/PayCancelParam.java b/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/param/payment/pay/PayCancelParam.java index 9ad177a29..c70cb7244 100644 --- a/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/param/payment/pay/PayCancelParam.java +++ b/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/param/payment/pay/PayCancelParam.java @@ -20,5 +20,5 @@ public class PayCancelParam extends PaymentCommonParam { private String orderNo; @Schema(description = "商户订单号") - private String outTradeNo; + private String bizOrderNo; } diff --git a/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/result/CommonResult.java b/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/result/PaymentCommonResult.java similarity index 96% rename from daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/result/CommonResult.java rename to daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/result/PaymentCommonResult.java index b084b1369..a811b5d0a 100644 --- a/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/result/CommonResult.java +++ b/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/result/PaymentCommonResult.java @@ -16,7 +16,7 @@ import java.time.LocalDateTime; @Data @Accessors(chain = true) @Schema(title = "支付通用返回参数") -public class CommonResult { +public class PaymentCommonResult { @Schema(description = "响应数据签名值") private String sign; diff --git a/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/result/allocation/AllocationResult.java b/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/result/allocation/AllocationResult.java index beeb11d00..00c97db54 100644 --- a/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/result/allocation/AllocationResult.java +++ b/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/result/allocation/AllocationResult.java @@ -1,6 +1,6 @@ package cn.bootx.platform.daxpay.result.allocation; -import cn.bootx.platform.daxpay.result.CommonResult; +import cn.bootx.platform.daxpay.result.PaymentCommonResult; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import lombok.EqualsAndHashCode; @@ -15,7 +15,7 @@ import lombok.experimental.Accessors; @Data @Accessors(chain = true) @Schema(title = "分账请求结果") -public class AllocationResult extends CommonResult { +public class AllocationResult extends PaymentCommonResult { @Schema(description = "分账订单ID") private Long orderId; diff --git a/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/result/order/PayOrderResult.java b/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/result/order/PayOrderResult.java index 3a6cff880..c48a57615 100644 --- a/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/result/order/PayOrderResult.java +++ b/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/result/order/PayOrderResult.java @@ -2,7 +2,7 @@ package cn.bootx.platform.daxpay.result.order; import cn.bootx.platform.daxpay.code.PayChannelEnum; import cn.bootx.platform.daxpay.code.PayStatusEnum; -import cn.bootx.platform.daxpay.result.CommonResult; +import cn.bootx.platform.daxpay.result.PaymentCommonResult; import cn.bootx.platform.daxpay.serializer.LocalDateTimeToTimestampSerializer; import com.fasterxml.jackson.databind.annotation.JsonSerialize; import io.swagger.v3.oas.annotations.media.Schema; @@ -21,7 +21,7 @@ import java.time.LocalDateTime; @Data @Accessors(chain = true) @Schema(title = "支付单响应参数") -public class PayOrderResult extends CommonResult { +public class PayOrderResult extends PaymentCommonResult { /** 支付订单号 */ @Schema(description = "支付订单号") diff --git a/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/result/pay/PayCloseResult.java b/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/result/pay/PayCloseResult.java index 87f1ec341..97a5b03fe 100644 --- a/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/result/pay/PayCloseResult.java +++ b/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/result/pay/PayCloseResult.java @@ -1,6 +1,6 @@ package cn.bootx.platform.daxpay.result.pay; -import cn.bootx.platform.daxpay.result.CommonResult; +import cn.bootx.platform.daxpay.result.PaymentCommonResult; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import lombok.EqualsAndHashCode; @@ -15,5 +15,5 @@ import lombok.experimental.Accessors; @Data @Accessors(chain = true) @Schema(title = "支付关闭响应参数") -public class PayCloseResult extends CommonResult { +public class PayCloseResult extends PaymentCommonResult { } diff --git a/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/result/pay/PayResult.java b/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/result/pay/PayResult.java index b093e6bbe..a261af043 100644 --- a/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/result/pay/PayResult.java +++ b/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/result/pay/PayResult.java @@ -1,6 +1,6 @@ package cn.bootx.platform.daxpay.result.pay; -import cn.bootx.platform.daxpay.result.CommonResult; +import cn.bootx.platform.daxpay.result.PaymentCommonResult; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import lombok.EqualsAndHashCode; @@ -15,7 +15,7 @@ import lombok.experimental.Accessors; @Data @Accessors(chain = true) @Schema(title = "统一下单响应参数") -public class PayResult extends CommonResult { +public class PayResult extends PaymentCommonResult { /** 商户订单号 */ @Schema(description = "商户订单号") diff --git a/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/result/pay/RefundResult.java b/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/result/pay/RefundResult.java index 7b28a1e79..68aa0a3ba 100644 --- a/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/result/pay/RefundResult.java +++ b/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/result/pay/RefundResult.java @@ -1,6 +1,6 @@ package cn.bootx.platform.daxpay.result.pay; -import cn.bootx.platform.daxpay.result.CommonResult; +import cn.bootx.platform.daxpay.result.PaymentCommonResult; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import lombok.EqualsAndHashCode; @@ -15,7 +15,7 @@ import lombok.experimental.Accessors; @Data @Accessors(chain = true) @Schema(title = "退款响应参数") -public class RefundResult extends CommonResult { +public class RefundResult extends PaymentCommonResult { /** 退款号 */ @Schema(description = "退款号") diff --git a/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/result/pay/SyncResult.java b/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/result/pay/SyncResult.java index b8c27acda..77c44e354 100644 --- a/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/result/pay/SyncResult.java +++ b/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/result/pay/SyncResult.java @@ -3,7 +3,7 @@ package cn.bootx.platform.daxpay.result.pay; import cn.bootx.platform.daxpay.code.AllocationOrderStatusEnum; import cn.bootx.platform.daxpay.code.RefundSyncStatusEnum; import cn.bootx.platform.daxpay.code.PaySyncStatusEnum; -import cn.bootx.platform.daxpay.result.CommonResult; +import cn.bootx.platform.daxpay.result.PaymentCommonResult; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import lombok.EqualsAndHashCode; @@ -20,7 +20,7 @@ import static cn.bootx.platform.daxpay.code.PaySyncStatusEnum.FAIL; @Data @Accessors(chain = true) @Schema(title = "同步结果") -public class SyncResult extends CommonResult { +public class SyncResult extends PaymentCommonResult { /** * 支付网关同步状态 diff --git a/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/util/OrderNoGenerateUtil.java b/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/util/OrderNoGenerateUtil.java index 44f588bc0..00d0d8fc6 100644 --- a/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/util/OrderNoGenerateUtil.java +++ b/daxpay-single/daxpay-single-core/src/main/java/cn/bootx/platform/daxpay/util/OrderNoGenerateUtil.java @@ -20,6 +20,9 @@ public class OrderNoGenerateUtil { /** 机器号 */ @Setter private static String machineNo; + /** 环境前缀 */ + @Setter + private static String env; /** * 生成支付订单号 @@ -28,7 +31,7 @@ public class OrderNoGenerateUtil { StringBuilder orderNo = new StringBuilder(); String dateStr = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyMMddHHmmss")); long id = ATOMIC_LONG.incrementAndGet(); - orderNo.append("P").append(dateStr).append(machineNo).append(String.format("%06d", Math.abs(id) % ORDER_MAX_LIMIT)); + orderNo.append(env).append("P").append(dateStr).append(machineNo).append(String.format("%06d", Math.abs(id) % ORDER_MAX_LIMIT)); return orderNo.toString(); } @@ -39,7 +42,7 @@ public class OrderNoGenerateUtil { StringBuilder orderNo = new StringBuilder(); String dateStr = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyMMddHHmmss")); long id = ATOMIC_LONG.incrementAndGet(); - orderNo.append("R").append(dateStr).append(machineNo).append(String.format("%06d", Math.abs(id) % ORDER_MAX_LIMIT)); + orderNo.append(env).append("R").append(dateStr).append(machineNo).append(String.format("%06d", Math.abs(id) % ORDER_MAX_LIMIT)); return orderNo.toString(); } @@ -50,7 +53,7 @@ public class OrderNoGenerateUtil { StringBuilder orderNo = new StringBuilder(); String dateStr = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyMMddHHmmss")); long id = ATOMIC_LONG.incrementAndGet(); - orderNo.append("T").append(dateStr).append(machineNo).append(String.format("%06d", Math.abs(id) % ORDER_MAX_LIMIT)); + orderNo.append(env).append("T").append(dateStr).append(machineNo).append(String.format("%06d", Math.abs(id) % ORDER_MAX_LIMIT)); return orderNo.toString(); } @@ -61,7 +64,7 @@ public class OrderNoGenerateUtil { StringBuilder orderNo = new StringBuilder(); String dateStr = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyMMddHHmmss")); long id = ATOMIC_LONG.incrementAndGet(); - orderNo.append("A").append(dateStr).append(machineNo).append(String.format("%06d", Math.abs(id) % ORDER_MAX_LIMIT)); + orderNo.append(env).append("A").append(dateStr).append(machineNo).append(String.format("%06d", Math.abs(id) % ORDER_MAX_LIMIT)); return orderNo.toString(); } @@ -72,7 +75,7 @@ public class OrderNoGenerateUtil { StringBuilder orderNo = new StringBuilder(); String dateStr = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyMMddHHmmss")); long id = ATOMIC_LONG.incrementAndGet(); - orderNo.append("C").append(dateStr).append(machineNo).append(String.format("%06d", Math.abs(id) % ORDER_MAX_LIMIT)); + orderNo.append(env).append("C").append(dateStr).append(machineNo).append(String.format("%06d", Math.abs(id) % ORDER_MAX_LIMIT)); return orderNo.toString(); } @@ -83,7 +86,7 @@ public class OrderNoGenerateUtil { StringBuilder orderNo = new StringBuilder(); String dateStr = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyMMddHHmmss")); long id = ATOMIC_LONG.incrementAndGet(); - orderNo.append("X").append(dateStr).append(machineNo).append(String.format("%06d", Math.abs(id) % ORDER_MAX_LIMIT)); + orderNo.append(env).append("X").append(dateStr).append(machineNo).append(String.format("%06d", Math.abs(id) % ORDER_MAX_LIMIT)); return orderNo.toString(); } } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/annotation/PaymentApi.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/annotation/PaymentApi.java index e2b7d15df..0c279243a 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/annotation/PaymentApi.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/annotation/PaymentApi.java @@ -3,7 +3,9 @@ package cn.bootx.platform.daxpay.service.annotation; import java.lang.annotation.*; /** - * 支付接口标识,支付方法至少有一个参数,并且需要签名支付参数需要放在第一位 + * 支付接口标识, + * 支付方法至少有一个参数,并且需要签名支付参数需要放在第一位 + * 返回对象必须为 ResResult 格式 * @author xxm * @since 2023/12/22 */ diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/configuration/DaxPayProperties.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/configuration/DaxPayProperties.java index c7fb25f59..2f510a865 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/configuration/DaxPayProperties.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/configuration/DaxPayProperties.java @@ -26,8 +26,16 @@ public class DaxPayProperties { /** 机器码, 用于区分不同机器生成的流水号 */ private String machineNo = "56"; + /** 当前环境,会影响订单号的生成 */ + private String env = ""; + public void setMachineNo(String machineNo) { this.machineNo = machineNo; OrderNoGenerateUtil.setMachineNo(machineNo); } + + public void setEnv(String env) { + this.env = env; + OrderNoGenerateUtil.setEnv(env); + } } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/alipay/service/AliPaySyncService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/alipay/service/AliPaySyncService.java index 1562db6b7..2c3ad88d3 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/alipay/service/AliPaySyncService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/alipay/service/AliPaySyncService.java @@ -53,7 +53,7 @@ public class AliPaySyncService { String tradeStatus = response.getTradeStatus(); syncResult.setSyncInfo(JSONUtil.toJsonStr(response)); // 设置网关订单号 - syncResult.setOutTradeNo(response.getTradeNo()); + syncResult.setOutOrderNo(response.getTradeNo()); // 支付完成 TODO 部分退款也在这个地方, 但无法进行区分, 需要借助对账进行处理 if (Objects.equals(tradeStatus, AliPayCode.NOTIFY_TRADE_SUCCESS) || Objects.equals(tradeStatus, AliPayCode.NOTIFY_TRADE_FINISHED)) { // 支付完成时间 @@ -101,9 +101,9 @@ public class AliPaySyncService { try { AlipayTradeFastpayRefundQueryModel queryModel = new AlipayTradeFastpayRefundQueryModel(); // 退款请求号 - queryModel.setOutRequestNo(String.valueOf(refundOrder.getId())); + queryModel.setOutRequestNo(String.valueOf(refundOrder.getRefundNo())); // 商户订单号 - queryModel.setOutTradeNo(String.valueOf(refundOrder.getRefundNo())); + queryModel.setOutTradeNo(String.valueOf(refundOrder.getOrderNo())); // 设置返回退款完成时间 queryModel.setQueryOptions(Collections.singletonList(GMT_REFUND_PAY)); AlipayTradeFastpayRefundQueryResponse response = AliPayApi.tradeRefundQueryToResponse(queryModel); @@ -121,7 +121,7 @@ public class AliPaySyncService { LocalDateTime localDateTime = LocalDateTimeUtil.of(response.getGmtRefundPay()); return syncResult.setRefundTime(localDateTime).setSyncStatus(RefundSyncStatusEnum.SUCCESS); } else { - return syncResult.setSyncStatus(RefundSyncStatusEnum.FAIL).setErrorMsg("支付宝网关反正退款未成功"); + return syncResult.setSyncStatus(RefundSyncStatusEnum.FAIL).setErrorMsg("支付宝网关退款未成功"); } } catch (AlipayApiException e) { log.error("退款订单同步失败:", e); diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/union/service/UnionPaySyncService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/union/service/UnionPaySyncService.java index 55748a922..a802c71e9 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/union/service/UnionPaySyncService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/union/service/UnionPaySyncService.java @@ -72,7 +72,7 @@ public class UnionPaySyncService { String queryId = MapUtil.getStr(result, QUERY_ID); String timeEnd = MapUtil.getStr(result, TXN_TIME); LocalDateTime time = LocalDateTimeUtil.parse(timeEnd, DatePattern.PURE_DATETIME_PATTERN); - return syncResult.setOutTradeNo(queryId).setPayTime(time).setSyncStatus(PaySyncStatusEnum.SUCCESS); + return syncResult.setOutOrderNo(queryId).setPayTime(time).setSyncStatus(PaySyncStatusEnum.SUCCESS); } // 支付超时 交易不在受理时间范围内 @@ -102,7 +102,7 @@ public class UnionPaySyncService { RefundSyncResult syncResult = new RefundSyncResult(); AssistOrder query = new AssistOrder(); - query.setOutTradeNo(String.valueOf(refundOrder.getId())); + query.setOutTradeNo(String.valueOf(refundOrder.getRefundNo())); Map result = unionPayKit.query(query); diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/wechat/service/WeChatPayService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/wechat/service/WeChatPayService.java index 059f12c5d..b99846f31 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/wechat/service/WeChatPayService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/wechat/service/WeChatPayService.java @@ -190,7 +190,7 @@ public class WeChatPayService { .profit_sharing(payOrder.getAllocation()?"Y":"N") .body(payOrder.getTitle()) .auth_code(authCode) - .out_trade_no(String.valueOf(payOrder.getId())) + .out_trade_no(String.valueOf(payOrder.getOrderNo())) .total_fee(amount) .spbill_create_ip(NetUtil.getLocalhostStr()) .build() diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/wechat/service/WeChatPaySyncService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/wechat/service/WeChatPaySyncService.java index 904c34424..434bbaa59 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/wechat/service/WeChatPaySyncService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/wechat/service/WeChatPaySyncService.java @@ -47,7 +47,7 @@ public class WeChatPaySyncService { .appid(weChatPayConfig.getWxAppId()) .mch_id(weChatPayConfig.getWxMchId()) .nonce_str(WxPayKit.generateStr()) - .out_trade_no(String.valueOf(order.getId())) + .out_trade_no(String.valueOf(order.getOrderNo())) .build() .createSign(weChatPayConfig.getApiKeyV2(), SignType.HMACSHA256); try { @@ -67,7 +67,7 @@ public class WeChatPaySyncService { } // 设置微信支付网关订单号 - syncResult.setOutTradeNo(result.get(TRANSACTION_ID)); + syncResult.setOutOrderNo(result.get(TRANSACTION_ID)); // 查询到订单的状态 String tradeStatus = result.get(WeChatPayCode.TRADE_STATE); // 支付完成 @@ -109,8 +109,8 @@ public class WeChatPaySyncService { .appid(weChatPayConfig.getWxAppId()) .mch_id(weChatPayConfig.getWxMchId()) .nonce_str(WxPayKit.generateStr()) - // 使用退款单号查询, 只返回当前这条, 如果使用支付订单号查询, - .out_refund_no(String.valueOf(refundOrder.getId())) + // 使用退款单号查询, 只返回当前这条, 如果使用支付订单号查询,返回所有相关的 + .out_refund_no(String.valueOf(refundOrder.getRefundNo())) .build() .createSign(weChatPayConfig.getApiKeyV2(), SignType.HMACSHA256); diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/wechat/service/WechatPayRefundService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/wechat/service/WechatPayRefundService.java index d9fe033ff..db7181e61 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/wechat/service/WechatPayRefundService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/channel/wechat/service/WechatPayRefundService.java @@ -37,7 +37,7 @@ public class WechatPayRefundService { * 微信需要同时传输订单金额或退款金额 */ public void refund(RefundOrder refundOrder, WeChatPayConfig weChatPayConfig) { - String refundFee = String.valueOf(refundOrder.getRefundNo()); + String refundFee = String.valueOf(refundOrder.getOrderAmount()); String totalFee = String.valueOf(refundOrder.getAmount()); // 设置退款信息 RefundLocal refundInfo = PaymentContextLocal.get().getRefundInfo(); @@ -45,8 +45,8 @@ public class WechatPayRefundService { .appid(weChatPayConfig.getWxAppId()) .mch_id(weChatPayConfig.getWxMchId()) .notify_url(weChatPayConfig.getNotifyUrl()) - .out_trade_no(String.valueOf(refundOrder.getRefundNo())) - .out_refund_no(String.valueOf(refundOrder.getId())) + .out_trade_no(String.valueOf(refundOrder.getOrderNo())) + .out_refund_no(String.valueOf(refundOrder.getRefundNo())) .total_fee(totalFee) .refund_fee(refundFee) .nonce_str(WxPayKit.generateStr()) diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/entity/AllocationOrder.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/entity/AllocationOrder.java index b9ef89ae9..e85c9547e 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/entity/AllocationOrder.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/allocation/entity/AllocationOrder.java @@ -44,9 +44,9 @@ public class AllocationOrder extends MpBaseEntity implements EntityBaseFunction< private String bizAllocationNo; /** - * 三方系统分账单号 + * 外部分账号 */ - @DbColumn(comment = "网关分账单号") + @DbColumn(comment = "外部分账号") private String outAllocationNo; /** 支付订单ID */ @@ -66,9 +66,9 @@ public class AllocationOrder extends MpBaseEntity implements EntityBaseFunction< private String bizOrderNo; /** - * 三方系统支付订单号 + * 外部系统支付订单号 */ - @DbColumn(comment = "网关支付订单号") + @DbColumn(comment = "外部支付订单号") private String outOrderNo; /** diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/pay/entity/PayOrder.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/pay/entity/PayOrder.java index 5ff0f0b2b..b79f7ec11 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/pay/entity/PayOrder.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/order/pay/entity/PayOrder.java @@ -41,9 +41,9 @@ public class PayOrder extends MpBaseEntity implements EntityBaseFunction) proceed).getData(); + if (data instanceof PaymentCommonResult){ + paymentSignService.sign((PaymentCommonResult) data); + } else { + throw new PayFailureException("支付方法返回类型需要为 ResResult 格式"); + } + } else { + throw new PayFailureException("支付方法返回类型需要为 ResResult 格式"); + } + return proceed; } - } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/common/service/PaymentSignService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/common/service/PaymentSignService.java index 0e957ba0e..22fffa179 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/common/service/PaymentSignService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/common/service/PaymentSignService.java @@ -3,6 +3,7 @@ package cn.bootx.platform.daxpay.service.core.payment.common.service; import cn.bootx.platform.daxpay.code.PaySignTypeEnum; import cn.bootx.platform.daxpay.exception.pay.PayFailureException; import cn.bootx.platform.daxpay.param.PaymentCommonParam; +import cn.bootx.platform.daxpay.result.PaymentCommonResult; import cn.bootx.platform.daxpay.service.common.context.ApiInfoLocal; import cn.bootx.platform.daxpay.service.common.context.PlatformLocal; import cn.bootx.platform.daxpay.service.common.local.PaymentContextLocal; @@ -55,4 +56,19 @@ public class PaymentSignService { } } + /** + * 对对象进行签名 + */ + public void sign(PaymentCommonResult result) { + PlatformLocal platformInfo = PaymentContextLocal.get() + .getPlatformInfo(); + String signType = platformInfo.getSignType(); + if (Objects.equals(PaySignTypeEnum.HMAC_SHA256.getCode(), signType)){ + result.setSign(PaySignUtil.hmacSha256Sign(result, platformInfo.getSignSecret())); + } else if (Objects.equals(PaySignTypeEnum.MD5.getCode(), signType)){ + result.setSign(PaySignUtil.md5Sign(result, platformInfo.getSignSecret())); + } else { + throw new PayFailureException("未获取到签名方式,请检查"); + } + } } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/notice/service/ClientNoticeAssistService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/notice/service/ClientNoticeAssistService.java index 7aeb2e99a..81ea454ac 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/notice/service/ClientNoticeAssistService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/notice/service/ClientNoticeAssistService.java @@ -77,7 +77,7 @@ public class ClientNoticeAssistService { .setRefundNo(order.getRefundNo()) .setChannel(order.getChannel()) .setAmount(order.getAmount()) - .setRefundTime(order.getRefundTime()) + .setRefundTime(order.getFinishTime()) .setCreateTime(order.getCreateTime()) .setStatus(order.getStatus()) .setAttach(orderExtra.getAttach()); diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/service/PayAssistService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/service/PayAssistService.java index 84e130de8..939156532 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/service/PayAssistService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/pay/service/PayAssistService.java @@ -3,7 +3,6 @@ package cn.bootx.platform.daxpay.service.core.payment.pay.service; import cn.bootx.platform.common.core.util.CollUtil; import cn.bootx.platform.common.core.util.LocalDateTimeUtil; import cn.bootx.platform.daxpay.code.PayChannelEnum; -import cn.bootx.platform.daxpay.code.PaySignTypeEnum; import cn.bootx.platform.daxpay.exception.pay.PayFailureException; import cn.bootx.platform.daxpay.param.payment.pay.PayParam; import cn.bootx.platform.daxpay.result.pay.PayResult; @@ -19,7 +18,6 @@ import cn.bootx.platform.daxpay.service.core.order.pay.entity.PayOrderExtra; import cn.bootx.platform.daxpay.service.core.order.pay.service.PayOrderQueryService; import cn.bootx.platform.daxpay.service.core.order.pay.service.PayOrderService; import cn.bootx.platform.daxpay.service.core.payment.sync.service.PaySyncService; -import cn.bootx.platform.daxpay.util.PaySignUtil; import cn.bootx.platform.daxpay.util.PayUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONUtil; @@ -251,23 +249,6 @@ public class PayAssistService { payResult.setPayBody(asyncPayInfo.getPayBody()); } // 签名 - this.sign(payResult); return payResult; } - /** - * 对返回 - */ - public void sign(PayResult payResult) { - // 进行签名 - PlatformLocal platformInfo = PaymentContextLocal.get() - .getPlatformInfo(); - String signType = platformInfo.getSignType(); - if (Objects.equals(PaySignTypeEnum.HMAC_SHA256.getCode(), signType)){ - payResult.setSign(PaySignUtil.hmacSha256Sign(payResult, platformInfo.getSignSecret())); - } else if (Objects.equals(PaySignTypeEnum.MD5.getCode(), signType)){ - payResult.setSign(PaySignUtil.md5Sign(payResult, platformInfo.getSignSecret())); - } else { - throw new PayFailureException("未获取到签名方式,请检查"); - } - } } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/reconcile/service/ReconcileService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/reconcile/service/ReconcileService.java index d33f897b9..68f060979 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/reconcile/service/ReconcileService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/reconcile/service/ReconcileService.java @@ -3,7 +3,6 @@ package cn.bootx.platform.daxpay.service.core.payment.reconcile.service; import cn.bootx.platform.common.core.exception.DataNotExistException; import cn.bootx.platform.common.core.function.CollectorsFunction; import cn.bootx.platform.common.core.util.CollUtil; -import cn.bootx.platform.daxpay.code.PayChannelEnum; import cn.bootx.platform.daxpay.code.ReconcileTradeEnum; import cn.bootx.platform.daxpay.exception.pay.PayFailureException; import cn.bootx.platform.daxpay.service.code.AliPayRecordTypeEnum; @@ -57,12 +56,6 @@ public class ReconcileService { @Transactional(propagation = Propagation.REQUIRES_NEW, rollbackFor = Exception.class) public ReconcileOrder create(LocalDate date, String channel) { - // 获取通道枚举 - PayChannelEnum channelEnum = PayChannelEnum.findByCode(channel); - // 判断是否为为异步通道 - if (!PayChannelEnum.ASYNC_TYPE.contains(channelEnum)){ - throw new PayFailureException("不支持对账的通道, 请检查"); - } // 构建对账策略 AbsReconcileStrategy reconcileStrategy = ReconcileStrategyFactory.create(channel); @@ -173,12 +166,6 @@ public class ReconcileService { // 查询对账单 List reconcileDetails = reconcileDetailManager.findAllByOrderId(reconcileOrder.getId()); - // 获取通道枚举 - if (!PayChannelEnum.ASYNC_TYPE_CODE.contains(reconcileOrder.getChannel())){ - log.error("不支持对账的通道, 请检查, 对账订单ID: {}", reconcileOrder.getId()); - throw new PayFailureException("不支持对账的通道, 请检查"); - } - // 判断是否为为异步通道 // 构建对账策略 AbsReconcileStrategy reconcileStrategy = ReconcileStrategyFactory.create(reconcileOrder.getChannel()); // 初始化参数 diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/refund/service/RefundAssistService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/refund/service/RefundAssistService.java index de4f9447c..09a44e930 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/refund/service/RefundAssistService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/refund/service/RefundAssistService.java @@ -110,6 +110,7 @@ public class RefundAssistService { .setBizOrderNo(payOrder.getBizOrderNo()) .setRefundNo(OrderNoGenerateUtil.refund()) .setBizRefundNo(refundParam.getBizRefundNo()) + .setChannel(payOrder.getChannel()) .setStatus(RefundStatusEnum.PROGRESS.getCode()) .setOrderAmount(payOrder.getAmount()) .setAmount(refundParam.getAmount()) @@ -140,7 +141,7 @@ public class RefundAssistService { // 退款成功更新退款时间 if (Objects.equals(refundOrder.getStatus(), SUCCESS.getCode())){ // TODO 读取网关返回的退款时间和完成时间 - refundOrder.setRefundTime(LocalDateTime.now()); + refundOrder.setFinishTime(LocalDateTime.now()); } refundOrderManager.updateById(refundOrder); } @@ -153,6 +154,7 @@ public class RefundAssistService { RefundLocal refundInfo = PaymentContextLocal.get().getRefundInfo(); refundOrder.setErrorCode(refundInfo.getErrorCode()); refundOrder.setErrorMsg(refundInfo.getErrorMsg()); + refundOrder.setStatus(refundInfo.getStatus().getCode()); refundOrderManager.updateById(refundOrder); } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/refund/service/RefundService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/refund/service/RefundService.java index b89336574..3697ac54b 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/refund/service/RefundService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/refund/service/RefundService.java @@ -1,7 +1,6 @@ package cn.bootx.platform.daxpay.service.core.payment.refund.service; import cn.bootx.platform.common.core.exception.DataNotExistException; -import cn.bootx.platform.common.core.exception.RepetitiveOperationException; import cn.bootx.platform.common.core.util.CollUtil; import cn.bootx.platform.common.core.util.ValidationUtil; import cn.bootx.platform.daxpay.code.PayStatusEnum; @@ -107,6 +106,7 @@ public class RefundService { refundStrategy.doBeforeRefundHandler(); // 退款操作的预处理, 对支付订单进行预扣款, 返回创建成功的退款订单, 成功后才可以进行下一阶段的操作 RefundOrder refundOrder = SpringUtil.getBean(this.getClass()).preRefundMethod(param, payOrder); + refundStrategy.setRefundOrder(refundOrder); try { // 执行退款策略 refundStrategy.doRefundHandler(); diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/repair/service/PayRepairService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/repair/service/PayRepairService.java index 604bdcc93..9cec01fc0 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/repair/service/PayRepairService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/repair/service/PayRepairService.java @@ -109,13 +109,14 @@ public class PayRepairService { * 回调: 将异步支付状态修改为成功 */ private void success(PayOrder order) { + // 读取支付网关中的完成时间 LocalDateTime payTime = PaymentContextLocal.get() .getRepairInfo() .getFinishTime(); // 修改订单支付状态为成功 - order.setStatus(PayStatusEnum.SUCCESS.getCode()); - // 读取支付网关中的时间 - order.setPayTime(payTime); + order.setStatus(PayStatusEnum.SUCCESS.getCode()) + .setPayTime(payTime) + .setCloseTime(null); payOrderService.updateById(order); } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/repair/service/RefundRepairService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/repair/service/RefundRepairService.java index d85c181be..17352c8da 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/repair/service/RefundRepairService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/repair/service/RefundRepairService.java @@ -110,7 +110,7 @@ public class RefundRepairService { } // 设置退款为完成状态和完成时间 refundOrder.setStatus(RefundStatusEnum.SUCCESS.getCode()) - .setRefundTime(repairInfo.getFinishTime()); + .setFinishTime(repairInfo.getFinishTime()); payOrder.setStatus(afterPayRefundStatus.getCode()); diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/sync/result/PaySyncResult.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/sync/result/PaySyncResult.java index ee95e88c5..bf77c8362 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/sync/result/PaySyncResult.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/sync/result/PaySyncResult.java @@ -25,9 +25,9 @@ public class PaySyncResult { private PaySyncStatusEnum syncStatus = FAIL; /** - * 第三方支付网关, 用与将记录关联起来 + * 外部第三方支付系统的交易号, 用与和本地记录关联起来 */ - private String outTradeNo; + private String outOrderNo; /** 支付完成时间(通常用于接收异步支付返回的时间) */ private LocalDateTime payTime; diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/sync/result/RefundSyncResult.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/sync/result/RefundSyncResult.java index 13e9f9139..766392db4 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/sync/result/RefundSyncResult.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/sync/result/RefundSyncResult.java @@ -27,7 +27,7 @@ public class RefundSyncResult { private String syncInfo; /** - * 第三方支付网关生成的退款交易, 用与将记录关联起来 + * 外部三方支付网关生成的退款交易, 用与将记录关联起来 */ private String outRefundNo; diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/sync/service/PaySyncService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/sync/service/PaySyncService.java index 18a26b32a..a45e50c28 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/sync/service/PaySyncService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/sync/service/PaySyncService.java @@ -4,17 +4,14 @@ import cn.bootx.platform.common.core.exception.BizException; import cn.bootx.platform.common.core.exception.RepetitiveOperationException; import cn.bootx.platform.common.core.util.LocalDateTimeUtil; import cn.bootx.platform.daxpay.code.PayChannelEnum; -import cn.bootx.platform.daxpay.code.PaySignTypeEnum; import cn.bootx.platform.daxpay.code.PayStatusEnum; import cn.bootx.platform.daxpay.code.PaySyncStatusEnum; import cn.bootx.platform.daxpay.exception.pay.PayFailureException; import cn.bootx.platform.daxpay.param.payment.pay.PaySyncParam; -import cn.bootx.platform.daxpay.result.CommonResult; import cn.bootx.platform.daxpay.result.pay.SyncResult; import cn.bootx.platform.daxpay.service.code.PayRepairSourceEnum; import cn.bootx.platform.daxpay.service.code.PayRepairWayEnum; import cn.bootx.platform.daxpay.service.code.PaymentTypeEnum; -import cn.bootx.platform.daxpay.service.common.context.PlatformLocal; import cn.bootx.platform.daxpay.service.common.context.RepairLocal; import cn.bootx.platform.daxpay.service.common.local.PaymentContextLocal; import cn.bootx.platform.daxpay.service.core.order.pay.entity.PayOrder; @@ -27,7 +24,6 @@ import cn.bootx.platform.daxpay.service.core.payment.sync.result.PaySyncResult; import cn.bootx.platform.daxpay.service.core.record.sync.entity.PaySyncRecord; import cn.bootx.platform.daxpay.service.core.record.sync.service.PaySyncRecordService; import cn.bootx.platform.daxpay.service.func.AbsPaySyncStrategy; -import cn.bootx.platform.daxpay.util.PaySignUtil; import com.baomidou.lock.LockInfo; import com.baomidou.lock.LockTemplate; import lombok.RequiredArgsConstructor; @@ -68,16 +64,14 @@ public class PaySyncService { */ @Transactional(propagation = Propagation.REQUIRES_NEW, rollbackFor = Exception.class) public SyncResult sync(PaySyncParam param) { - SyncResult syncResult = new SyncResult(); - PayOrder payOrder = payOrderQueryService.findByBizOrOrderNo(param.getBizOrderNo(), param.getOrderNo()) + PayOrder payOrder = payOrderQueryService.findByBizOrOrderNo(param.getOrderNo(), param.getBizOrderNo()) .orElseThrow(() -> new BizException("支付订单不存在")); - // 钱包支付直接返回结果 + // 钱包支付钱包不需要 if (PayChannelEnum.WALLET.getCode().equals(payOrder.getChannel())){ throw new PayFailureException("订单没有异步支付方式,不需要同步"); } // 执行订单同步逻辑 - syncResult = this.syncPayOrder(payOrder); - return syncResult; + return this.syncPayOrder(payOrder); } /** * 同步支付状态, 开启一个新的事务, 不受外部抛出异常的影响 @@ -106,8 +100,8 @@ public class PaySyncService { throw new PayFailureException(syncResult.getErrorMsg()); } // 支付订单的网关订单号是否一致, 不一致进行更新 - if (!Objects.equals(syncResult.getOutTradeNo(), payOrder.getOutOrderNo())){ - payOrder.setOutOrderNo(syncResult.getOutTradeNo()); + if (!Objects.equals(syncResult.getOutOrderNo(), payOrder.getOutOrderNo())){ + payOrder.setOutOrderNo(syncResult.getOutOrderNo()); payOrderService.updateById(payOrder); } // 判断网关状态是否和支付单一致, 同时特定情况下更新网关同步状态 @@ -259,20 +253,4 @@ public class PaySyncService { .setClientIp(PaymentContextLocal.get().getRequestInfo().getClientIp()); paySyncRecordService.saveRecord(paySyncRecord); } - - /** - * 签名 - */ - private void sign(CommonResult result){ - PlatformLocal platformInfo = PaymentContextLocal.get() - .getPlatformInfo(); - String signType = platformInfo.getSignType(); - if (Objects.equals(PaySignTypeEnum.HMAC_SHA256.getCode(), signType)){ - result.setSign(PaySignUtil.hmacSha256Sign(result, platformInfo.getSignSecret())); - } else if (Objects.equals(PaySignTypeEnum.MD5.getCode(), signType)){ - result.setSign(PaySignUtil.md5Sign(result, platformInfo.getSignSecret())); - } else { - throw new PayFailureException("未获取到签名方式,请检查"); - } - } } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/sync/service/RefundSyncService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/sync/service/RefundSyncService.java index fd76704a8..181007535 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/sync/service/RefundSyncService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/payment/sync/service/RefundSyncService.java @@ -91,9 +91,9 @@ public class RefundSyncService { this.saveRecord(refundOrder, syncResult, false, null, syncResult.getErrorMsg()); throw new PayFailureException(syncResult.getErrorMsg()); } - // 支付订单的网关订单号是否一致, 不一致进行更新 + // 订单的外部交易号是否一致, 不一致进行更新 if (Objects.nonNull(syncResult.getOutRefundNo()) && !Objects.equals(syncResult.getOutRefundNo(), refundOrder.getOutRefundNo())){ - refundOrder.setRefundNo(syncResult.getOutRefundNo()); + refundOrder.setOutRefundNo(syncResult.getOutRefundNo()); refundOrderManager.updateById(refundOrder); } // 判断网关状态是否和支付单一致 diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/record/callback/entity/PayCallbackRecord.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/record/callback/entity/PayCallbackRecord.java index 367f4ef8d..4fd225368 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/record/callback/entity/PayCallbackRecord.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/record/callback/entity/PayCallbackRecord.java @@ -33,8 +33,8 @@ public class PayCallbackRecord extends MpCreateEntity implements EntityBaseFunct @DbColumn(comment = "本地交易号") private String tradeNo; - /** 三方支付交易号 */ - @DbColumn(comment = "支付网关订单号") + /** 外部交易号 */ + @DbColumn(comment = "外部交易号") private String outTradeNo; /** diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/record/flow/entity/TradeFlowRecord.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/record/flow/entity/TradeFlowRecord.java index 738476bd7..3230cdc72 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/record/flow/entity/TradeFlowRecord.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/record/flow/entity/TradeFlowRecord.java @@ -45,17 +45,17 @@ public class TradeFlowRecord extends MpCreateEntity { /** 本地交易号 */ @DbColumn(comment = "本地订单号") - private String identifyNo; + private String tradeNo; /** 商户交易号 */ @DbColumn(comment = "商户交易号") - private String bizIdentifyNo; + private String bizTradeNo; /** 三方系统交易号 */ @DbColumn(comment = "三方系统交易号") - private String outIdentifyNo; + private String outTradeNo; /** 网关完成时间 */ @DbColumn(comment = "网关完成时间") - private LocalDateTime gatewayTime; + private LocalDateTime finishTime; } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/record/sync/entity/PaySyncRecord.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/record/sync/entity/PaySyncRecord.java index 923224484..2ce617a5d 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/record/sync/entity/PaySyncRecord.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/record/sync/entity/PaySyncRecord.java @@ -37,8 +37,8 @@ public class PaySyncRecord extends MpCreateEntity implements EntityBaseFunction< @DbColumn(comment = "商户交易号") private String bizTradeNo; - /** 三方支付交易号 */ - @DbColumn(comment = "三方支付交易号") + /** 三方交易号 */ + @DbColumn(comment = "三方交易号") private String outTradeNo; diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/report/entity/ChannelProportionPie.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/report/entity/ChannelProportionPie.java deleted file mode 100644 index 2d0762fa3..000000000 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/core/report/entity/ChannelProportionPie.java +++ /dev/null @@ -1,29 +0,0 @@ -package cn.bootx.platform.daxpay.service.core.report.entity; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import lombok.experimental.Accessors; - -/** - * 支付通道占比饼图 - * @author xxm - * @since 2024/3/17 - */ -@Data -@Accessors(chain = true) -@Schema(title = "支付通道占比饼图") -public class ChannelProportionPie { - - @Schema(description = "通道编码") - private String code; - - @Schema(description = "通道名称") - private String name; - - @Schema(description = "占比") - private Double proportion; - - @Schema(description = "数量") - private Integer count; - -} diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/order/pay/PayOrderDto.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/order/pay/PayOrderDto.java index 6cbf52d8e..c31d51b86 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/order/pay/PayOrderDto.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/order/pay/PayOrderDto.java @@ -2,8 +2,8 @@ package cn.bootx.platform.daxpay.service.dto.order.pay; import cn.bootx.platform.common.core.rest.dto.BaseDto; import cn.bootx.platform.daxpay.code.PayChannelEnum; +import cn.bootx.platform.daxpay.code.PayOrderAllocationStatusEnum; import cn.bootx.platform.daxpay.code.PayStatusEnum; -import cn.bootx.platform.daxpay.code.AllocationOrderStatusEnum; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import lombok.EqualsAndHashCode; @@ -21,42 +21,43 @@ import java.time.LocalDateTime; @Schema(title = "具体支付日志基类") public class PayOrderDto extends BaseDto { - /** 关联的业务号 */ - @Schema(description = "关联的业务号") - private String businessNo; + /** 商户订单号 */ + @Schema(description = "商户订单号") + private String bizOrderNo; - /** 支付网关订单号 */ - @Schema(description = "支付网关订单号") + @Schema(description = "支付订单号") private String orderNo; + /** + * 外部系统交易号 + */ + @Schema(description = "外部支付订单号") + private String outOrderNo; + /** 标题 */ @Schema(description = "标题") private String title; - /** 是否是异步支付 */ - @Schema(description = "是否是异步支付") - private boolean asyncPay; + /** 描述 */ + @Schema(description = "描述") + private String description; - /** 是否是组合支付 */ - @Schema(description = "是否是组合支付") - private boolean combinationPay; - - /** 是否需要分账 */ + /** 是否支持分账 */ @Schema(description = "是否需要分账") private Boolean allocation; /** - * 异步支付通道 + * 支付通道 * @see PayChannelEnum */ @Schema(description = "异步支付通道") - private String asyncChannel; + private String channel; /** - * 如果有异步支付的情况下, 用与将记录关联起来 + * 支付方式 */ - @Schema(description = "关联网关支付号") - private String gatewayOrderNo; + @Schema(description = "支付方式") + private String method; /** 金额 */ @Schema(description = "金额") @@ -75,7 +76,7 @@ public class PayOrderDto extends BaseDto { /** * 分账状态 - * @see AllocationOrderStatusEnum + * @see PayOrderAllocationStatusEnum */ @Schema(description = "分账状态") private String allocationStatus; @@ -92,4 +93,13 @@ public class PayOrderDto extends BaseDto { @Schema(description = "过期时间") private LocalDateTime expiredTime; + /** 错误码 */ + @Schema(description = "错误码") + private String errorCode; + + /** 错误信息 */ + @Schema(description = "错误信息") + private String errorMsg; + + } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/order/refund/RefundOrderDto.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/order/refund/RefundOrderDto.java index 4a0b0c0ad..8f85619d0 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/order/refund/RefundOrderDto.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/order/refund/RefundOrderDto.java @@ -8,7 +8,6 @@ import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; -import java.math.BigDecimal; import java.time.LocalDateTime; /** @@ -23,57 +22,71 @@ import java.time.LocalDateTime; @Schema(title = "退款记录") public class RefundOrderDto extends BaseDto { + /** 支付订单ID */ + @Schema(description = "支付订单ID") + private Long orderId; - @Schema(description = "原支付业务号") - private String businessNo; - - @Schema(description = "原支付订单号") + /** 支付订单号 */ + @Schema(description = "支付订单号") private String orderNo; - @Schema(description = "原支付标题") + /** 商户支付订单号 */ + @Schema(description = "商户支付订单号") + private String bizOrderNo; + + /** 支付标题 */ + @Schema(description = "支付标题") private String title; + /** 退款号 */ @Schema(description = "退款号") private String refundNo; - @Schema(description = "是否含有异步通道") - private boolean asyncPay; + @Schema(description = "商户退款号") + private String bizRefundNo; + + /** 三方支付系统退款交易号 */ + @Schema(description = "三方支付系统退款交易号") + private String outRefundNo; /** - * 异步通道 + * 退款通道 * @see PayChannelEnum */ - @Schema(description = "异步通道") - private String asyncChannel; + @Schema(description = "支付通道") + private String channel; - @Schema(description = "支付网关订单号") - private String gatewayOrderNo; + /** 订单金额 */ + @Schema(description = "订单金额") + private Integer orderAmount; + /** 退款金额 */ @Schema(description = "退款金额") - private BigDecimal amount; - - @Schema(description = "剩余可退") - private BigDecimal refundableBalance; - - @Schema(description = "退款终端ip") - private String clientIp; - - @Schema(description = "退款时间") - private LocalDateTime refundTime; + private Integer amount; /** 退款原因 */ @Schema(description = "退款原因") private String reason; + /** 退款发起时间 */ + @Schema(description = "退款发起时间") + private LocalDateTime refundTime; + + @Schema(description = "退款结束时间") + private LocalDateTime finishTime; + /** + * 退款状态 * @see RefundStatusEnum */ @Schema(description = "退款状态") private String status; + /** 错误码 */ @Schema(description = "错误码") private String errorCode; + /** 错误信息 */ @Schema(description = "错误信息") private String errorMsg; diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/record/callback/PayCallbackRecordDto.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/record/callback/PayCallbackRecordDto.java index 11cb6a795..28eb0117d 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/record/callback/PayCallbackRecordDto.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/record/callback/PayCallbackRecordDto.java @@ -20,11 +20,11 @@ import lombok.experimental.Accessors; @Schema(title = "回调记录") public class PayCallbackRecordDto extends BaseDto { - @Schema(description = "本地订单ID") - private Long orderId; + @Schema(description = "交易号") + private String tradeNo; - @Schema(description = "支付网关订单号") - private String gatewayOrderNo; + @Schema(description = "外部交易号") + private String outTradeNo; /** * 支付通道 * @see PayChannelEnum#getCode() @@ -51,7 +51,7 @@ public class PayCallbackRecordDto extends BaseDto { private String status; @Schema(description = "修复号") - private String repairOrderNo; + private String repairNo; /** 提示信息 */ @Schema(description = "提示信息") diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/record/sync/PaySyncRecordDto.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/record/sync/PaySyncRecordDto.java index 557b191fc..4f19359b6 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/record/sync/PaySyncRecordDto.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/dto/record/sync/PaySyncRecordDto.java @@ -24,7 +24,7 @@ public class PaySyncRecordDto extends BaseDto { /** 本地订单ID */ @Schema(description = "本地订单ID") - private Long orderId; + private String orderId; /** 本地业务号 */ @Schema(description = "本地业务号") diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/handler/exception/PaymentExceptionHandler.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/handler/exception/PaymentExceptionHandler.java deleted file mode 100644 index 09bc51930..000000000 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/handler/exception/PaymentExceptionHandler.java +++ /dev/null @@ -1,36 +0,0 @@ -package cn.bootx.platform.daxpay.service.handler.exception; - -import cn.bootx.platform.common.core.exception.BizException; -import cn.bootx.platform.common.core.rest.Res; -import cn.bootx.platform.common.core.rest.ResResult; -import cn.bootx.platform.daxpay.exception.pay.PayFailureException; -import cn.bootx.platform.daxpay.result.CommonResult; -import lombok.extern.slf4j.Slf4j; -import org.slf4j.MDC; -import org.springframework.core.Ordered; -import org.springframework.core.annotation.Order; -import org.springframework.web.bind.annotation.ExceptionHandler; -import org.springframework.web.bind.annotation.RestControllerAdvice; - -/** - * 过滤SaTokenException,需要运行在 RestExceptionHandler 之前 - * - * @author xxm - * @since 2021/8/5 - */ -@Order(Ordered.LOWEST_PRECEDENCE - 2) -@Slf4j -@RestControllerAdvice -public class PaymentExceptionHandler { - - /** - * 支付异常 - */ - @ExceptionHandler({PayFailureException.class}) - public ResResult handleBusinessException(PayFailureException ex) { - log.info(ex.getMessage(), ex); - CommonResult commonResult = new CommonResult(); - commonResult.setMsg(ex.getMessage()); - return Res.ok(commonResult); - } -} diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/order/PayOrderQuery.java b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/order/PayOrderQuery.java index 1988d6852..9344f1a44 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/order/PayOrderQuery.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/bootx/platform/daxpay/service/param/order/PayOrderQuery.java @@ -3,6 +3,7 @@ package cn.bootx.platform.daxpay.service.param.order; import cn.bootx.platform.common.core.annotation.QueryParam; import cn.bootx.platform.common.core.rest.param.QueryOrder; import cn.bootx.platform.daxpay.code.PayChannelEnum; +import cn.bootx.platform.daxpay.code.PayOrderAllocationStatusEnum; import cn.bootx.platform.daxpay.code.PayStatusEnum; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; @@ -21,44 +22,64 @@ import lombok.experimental.Accessors; @Schema(title = "支付订单查询参数") public class PayOrderQuery extends QueryOrder { - @QueryParam(type = QueryParam.CompareTypeEnum.EQ) - @Schema(description = "支付订单id") - private Long id; + /** 商户订单号 */ + @Schema(description = "商户订单号") + private String bizOrderNo; - /** 关联的业务号 */ - @QueryParam(type = QueryParam.CompareTypeEnum.LIKE) - @Schema(description = "关联的业务号") - private String businessNo; + @Schema(description = "支付订单号") + private String orderNo; + + /** + * 外部系统交易号 + */ + @Schema(description = "外部支付订单号") + private String outOrderNo; /** 标题 */ - @QueryParam(type = QueryParam.CompareTypeEnum.LIKE) @Schema(description = "标题") private String title; - /** 是否是异步支付 */ - @QueryParam(type = QueryParam.CompareTypeEnum.EQ) - @Schema(description = "是否是异步支付") - private Boolean asyncPay; - - /** 是否是组合支付 */ - @QueryParam(type = QueryParam.CompareTypeEnum.EQ) - @Schema(description = "是否是组合支付") - private Boolean combinationPay; + /** 是否支持分账 */ + @Schema(description = "是否需要分账") + private Boolean allocation; /** - * 异步支付通道 + * 支付通道 * @see PayChannelEnum */ - @QueryParam(type = QueryParam.CompareTypeEnum.EQ) @Schema(description = "异步支付通道") - private String asyncChannel; + private String channel; + + /** + * 支付方式 + */ + @Schema(description = "支付方式") + private String method; + + /** 金额 */ + @Schema(description = "金额") + private Integer amount; /** * 支付状态 * @see PayStatusEnum */ - @QueryParam(type = QueryParam.CompareTypeEnum.EQ) @Schema(description = "支付状态") private String status; + /** + * 分账状态 + * @see PayOrderAllocationStatusEnum + */ + @Schema(description = "分账状态") + private String allocationStatus; + + /** 错误码 */ + @Schema(description = "错误码") + private String errorCode; + + /** 错误信息 */ + @Schema(description = "错误信息") + private String errorMsg; + } diff --git a/daxpay-single/daxpay-single-service/src/main/resources/mapper/report/CockpitReportMapper.xml b/daxpay-single/daxpay-single-service/src/main/resources/mapper/report/CockpitReportMapper.xml index 26a0e40ec..baf241150 100644 --- a/daxpay-single/daxpay-single-service/src/main/resources/mapper/report/CockpitReportMapper.xml +++ b/daxpay-single/daxpay-single-service/src/main/resources/mapper/report/CockpitReportMapper.xml @@ -53,7 +53,7 @@ count(*) as count, sum(amount) as sum FROM - pay_channel_order + pay_order WHERE create_time BETWEEN #{startTime} AND #{endTime} AND STATUS IN ( 'success', 'refunding', 'partial_refund', 'refunded' ) @@ -68,33 +68,11 @@ count(*) as count, sum(amount) as sum FROM - pay_refund_channel_order + pay_refund_order WHERE create_time BETWEEN #{startTime} AND #{endTime} AND STATUS = 'success' GROUP BY channel - - - - - - - - diff --git a/daxpay-single/daxpay-single-start/src/main/resources/application-dev.yml b/daxpay-single/daxpay-single-start/src/main/resources/application-dev.yml index 20262fb28..c3f63d01b 100644 --- a/daxpay-single/daxpay-single-start/src/main/resources/application-dev.yml +++ b/daxpay-single/daxpay-single-start/src/main/resources/application-dev.yml @@ -164,6 +164,8 @@ dax-pay: front-web-url: http://localhost:9000/# # 机器号码 machine-no: 63 + # 当前环境,会影响订单号的生成 + env: DEV # 演示模块 demo: # 网关地址