From d42da8fd62b66da6466168651fc49e14985c8864 Mon Sep 17 00:00:00 2001 From: bootx Date: Sun, 23 Jun 2024 23:11:02 +0800 Subject: [PATCH] =?UTF-8?q?feat=20=E8=BD=AC=E8=B4=A6=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E8=B0=83=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _doc/Task.md | 3 +- daxpay-single-sdk/pom.xml | 6 ++ .../sdk/code/TransferPayeeTypeEnum.java | 10 +-- .../sdk/model/notice/RefundNoticeModel.java | 6 ++ .../model/transfer/TransferOrderModel.java | 3 - .../sdk/param/transfer/TransferParam.java | 1 - .../single/sdk/payment/RefundOrderTest.java | 5 +- .../single/sdk/payment/TransferOrderTest.java | 6 +- .../order/TransferOrderController.java | 12 ++- .../core/code/AllocReceiverTypeEnum.java | 3 +- .../core/code/TransferPayeeTypeEnum.java | 11 +-- .../single/core/code/TransferStatusEnum.java | 3 +- .../single/core/code/TransferTypeEnum.java | 2 +- .../result/order/TransferOrderResult.java | 82 +++++++++++++++++++ .../controller/UniQueryController.java | 7 +- .../alipay/service/AliPayTransferService.java | 9 +- .../core/notice/entity/ClientNoticeTask.java | 2 +- .../order/transfer/entity/TransferOrder.java | 4 - .../service/TransferOrderQueryService.java | 12 ++- .../service/AllocationAssistService.java | 2 +- .../allocation/service/AllocationService.java | 2 +- .../payment/pay/service/PayAssistService.java | 2 +- .../payment/refund/service/RefundService.java | 2 +- .../transfer/service/TransferService.java | 7 +- .../strategy/WeChatTransferStrategy.java | 2 +- .../dto/order/transfer/TransferOrderDto.java | 4 - .../param/order/TransferOrderQuery.java | 3 - 27 files changed, 159 insertions(+), 52 deletions(-) diff --git a/_doc/Task.md b/_doc/Task.md index ca455471a..f573a7d92 100644 --- a/_doc/Task.md +++ b/_doc/Task.md @@ -2,7 +2,7 @@ 2.0.8: 转账/撤销接口和系统优化 - [x] 支持撤销接口 - [x] 增加转账接口功能 -- [ ] 转账订单功能 +- [x] 转账订单前端页面 - [ ] DEMO增加转账演示功能 - [x] 手动发起分账重试参数修正 - [x] 细分各种支付异常类和编码(部分+初版) @@ -42,6 +42,7 @@ - [x] 支付和退款达到终态不可以再回退回之前的状态 - [x] 修复支付关闭参数名称不正确问题 - [X] 去除消息通知模块 +- [x] 退款回调消息字段不一致导致验签不通过问题 2.0.9: 消息通知改版和系统优化 - [ ] 增加类似支付宝应用通知的方式, 先支持http方式通信 diff --git a/daxpay-single-sdk/pom.xml b/daxpay-single-sdk/pom.xml index 73ea41ff5..179a61b5d 100644 --- a/daxpay-single-sdk/pom.xml +++ b/daxpay-single-sdk/pom.xml @@ -85,6 +85,12 @@ ${junit.version} test + + cn.daxpay.single + daxpay-single-core + 2.0.7 + compile + diff --git a/daxpay-single-sdk/src/main/java/cn/daxpay/single/sdk/code/TransferPayeeTypeEnum.java b/daxpay-single-sdk/src/main/java/cn/daxpay/single/sdk/code/TransferPayeeTypeEnum.java index a350e1e1c..899ebcf65 100644 --- a/daxpay-single-sdk/src/main/java/cn/daxpay/single/sdk/code/TransferPayeeTypeEnum.java +++ b/daxpay-single-sdk/src/main/java/cn/daxpay/single/sdk/code/TransferPayeeTypeEnum.java @@ -16,18 +16,16 @@ import java.util.List; @AllArgsConstructor public enum TransferPayeeTypeEnum { /** 微信 个人 */ - WX_PERSONAL("wx_personal","openid", "个人"), + WX_PERSONAL("wx_personal", "OpenId"), /** 支付宝 userId 以2088开头的纯16位数字 */ - ALI_USER_ID("ali_user_id","ALIPAY_USERID", "用户ID"), + ALI_USER_ID("ali_user_id", "用户ID"), /** 支付宝 openId */ - ALI_OPEN_ID("ali_open_id","ALIPAY_OPENID", "openId"), + ALI_OPEN_ID("ali_open_id", "OpenId"), /** 支付宝 账号 支持邮箱和手机号格式 */ - ALI_LOGIN_NAME("ali_login_name","ALIPAY_LOGONID", "账号"); + ALI_LOGIN_NAME("ali_login_name", "账号"); /** 编码 */ private final String code; - /** 外部编码, 三方支付系统使用的编码 */ - private final String outCode; /** 名称 */ private final String name; diff --git a/daxpay-single-sdk/src/main/java/cn/daxpay/single/sdk/model/notice/RefundNoticeModel.java b/daxpay-single-sdk/src/main/java/cn/daxpay/single/sdk/model/notice/RefundNoticeModel.java index 963bf8e63..2b1f23199 100644 --- a/daxpay-single-sdk/src/main/java/cn/daxpay/single/sdk/model/notice/RefundNoticeModel.java +++ b/daxpay-single-sdk/src/main/java/cn/daxpay/single/sdk/model/notice/RefundNoticeModel.java @@ -1,5 +1,6 @@ package cn.daxpay.single.sdk.model.notice; +import cn.daxpay.single.core.code.RefundStatusEnum; import cn.daxpay.single.sdk.code.PayChannelEnum; import cn.daxpay.single.sdk.net.DaxPayResponseModel; import lombok.Getter; @@ -57,6 +58,11 @@ public class RefundNoticeModel extends DaxPayResponseModel { /** 退款创建时间 */ private Long createTime; + /** + * 退款状态 + * @see RefundStatusEnum + */ + private String status; /** 商户扩展参数,回调时会原样返回 */ private String attach; diff --git a/daxpay-single-sdk/src/main/java/cn/daxpay/single/sdk/model/transfer/TransferOrderModel.java b/daxpay-single-sdk/src/main/java/cn/daxpay/single/sdk/model/transfer/TransferOrderModel.java index 687beed2b..ca1c90896 100644 --- a/daxpay-single-sdk/src/main/java/cn/daxpay/single/sdk/model/transfer/TransferOrderModel.java +++ b/daxpay-single-sdk/src/main/java/cn/daxpay/single/sdk/model/transfer/TransferOrderModel.java @@ -51,9 +51,6 @@ public class TransferOrderModel extends DaxPayResponseModel { */ private String transferType; - /** 付款方 */ - private String payer; - /** * 收款人类型 * @see TransferPayeeTypeEnum diff --git a/daxpay-single-sdk/src/main/java/cn/daxpay/single/sdk/param/transfer/TransferParam.java b/daxpay-single-sdk/src/main/java/cn/daxpay/single/sdk/param/transfer/TransferParam.java index 55539eaa0..8aa8db3e5 100644 --- a/daxpay-single-sdk/src/main/java/cn/daxpay/single/sdk/param/transfer/TransferParam.java +++ b/daxpay-single-sdk/src/main/java/cn/daxpay/single/sdk/param/transfer/TransferParam.java @@ -46,7 +46,6 @@ public class TransferParam extends DaxPayRequest { */ private String transferType; - /** * 收款人账号类型 * @see TransferPayeeTypeEnum diff --git a/daxpay-single-sdk/src/test/java/cn/daxpay/single/sdk/payment/RefundOrderTest.java b/daxpay-single-sdk/src/test/java/cn/daxpay/single/sdk/payment/RefundOrderTest.java index 18d611ae8..c8ade40fa 100644 --- a/daxpay-single-sdk/src/test/java/cn/daxpay/single/sdk/payment/RefundOrderTest.java +++ b/daxpay-single-sdk/src/test/java/cn/daxpay/single/sdk/payment/RefundOrderTest.java @@ -39,15 +39,14 @@ public class RefundOrderTest { public void refund(){ RefundParam param = new RefundParam(); param.setBizRefundNo("R" + RandomUtil.randomNumbers(5)); - param.setBizOrderNo("SDK_1715341621498"); + param.setBizOrderNo("P1719153314573"); param.setAmount(1); param.setAttach("{回调参数}"); - param.setNotifyUrl("https://abc.com/callback"); + param.setNotifyUrl("http://127.0.0.1:9000/demo/callback/refundObject"); param.setClientIp("127.0.0.1"); DaxPayResult execute = DaxPayKit.execute(param); System.out.println(JSONUtil.toJsonStr(execute)); - System.out.println(PaySignUtil.verifyHmacSha256Sign(execute.getData(), "123456", execute.getData().getSign())); } diff --git a/daxpay-single-sdk/src/test/java/cn/daxpay/single/sdk/payment/TransferOrderTest.java b/daxpay-single-sdk/src/test/java/cn/daxpay/single/sdk/payment/TransferOrderTest.java index 66ae66c30..8cd27a213 100644 --- a/daxpay-single-sdk/src/test/java/cn/daxpay/single/sdk/payment/TransferOrderTest.java +++ b/daxpay-single-sdk/src/test/java/cn/daxpay/single/sdk/payment/TransferOrderTest.java @@ -10,6 +10,7 @@ import cn.daxpay.single.sdk.param.transfer.TransferParam; import cn.daxpay.single.sdk.response.DaxPayResult; import cn.hutool.json.JSONUtil; import org.junit.Before; +import org.junit.Test; /** * 转账测试 @@ -33,16 +34,19 @@ public class TransferOrderTest { /** * 发起转账操作 */ + @Test public void transfer() { // 构建参数 TransferParam param = new TransferParam(); + param.setBizTransferNo("T"+System.currentTimeMillis()); param.setTitle("测试转账"); param.setReason("我要转个账"); param.setAmount(500); param.setChannel(PayChannelEnum.ALI.getCode()); param.setPayeeType(TransferPayeeTypeEnum.ALI_OPEN_ID.getCode()); + param.setClientIp("127.0.0.1"); // 使用OpenId - param.setPayeeAccount(""); + param.setPayeeAccount("065a9aEjER9Fa__hxYyvgYDlkhUiw_6RINhYHB2oegpWAo5"); // 发起请求 DaxPayResult execute = DaxPayKit.execute(param); System.out.println(JSONUtil.toJsonStr(execute)); diff --git a/daxpay-single/daxpay-single-admin/src/main/java/cn/daxpay/single/admin/controller/order/TransferOrderController.java b/daxpay-single/daxpay-single-admin/src/main/java/cn/daxpay/single/admin/controller/order/TransferOrderController.java index d22874bab..da4f67298 100644 --- a/daxpay-single/daxpay-single-admin/src/main/java/cn/daxpay/single/admin/controller/order/TransferOrderController.java +++ b/daxpay-single/daxpay-single-admin/src/main/java/cn/daxpay/single/admin/controller/order/TransferOrderController.java @@ -8,7 +8,6 @@ import cn.daxpay.single.core.code.PaymentApiCode; import cn.daxpay.single.core.param.payment.transfer.TransferParam; import cn.daxpay.single.service.annotation.InitPaymentContext; import cn.daxpay.single.service.core.order.transfer.service.TransferOrderQueryService; -import cn.daxpay.single.service.core.order.transfer.service.TransferOrderService; import cn.daxpay.single.service.core.payment.transfer.service.TransferService; import cn.daxpay.single.service.dto.order.transfer.TransferOrderDto; import cn.daxpay.single.service.param.order.TransferOrderQuery; @@ -28,7 +27,6 @@ import org.springframework.web.bind.annotation.*; @RequiredArgsConstructor public class TransferOrderController { private final TransferOrderQueryService queryService; - private final TransferOrderService transferOrderService; private final TransferService transferService; @@ -38,12 +36,18 @@ public class TransferOrderController { return Res.ok(queryService.page(pageParam, query)); } - - @Operation(summary = "查询退款订单详情") + @Operation(summary = "根据转账号查询") @GetMapping("/findByTransferNo") public ResResult findByTransferNo(String refundNo){ return Res.ok(queryService.findByTransferNo(refundNo)); } + + @Operation(summary = "根据商户转账号查询") + @GetMapping("/findByBizTransferNo") + public ResResult findByBizTransferNo(String bizTransferNo){ + return Res.ok(queryService.findByBizTransferNo(bizTransferNo)); + } + @Operation(summary = "查询单条") @GetMapping("/findById") public ResResult findById(Long id){ diff --git a/daxpay-single/daxpay-single-core/src/main/java/cn/daxpay/single/core/code/AllocReceiverTypeEnum.java b/daxpay-single/daxpay-single-core/src/main/java/cn/daxpay/single/core/code/AllocReceiverTypeEnum.java index 2be31fc2d..d7db93748 100644 --- a/daxpay-single/daxpay-single-core/src/main/java/cn/daxpay/single/core/code/AllocReceiverTypeEnum.java +++ b/daxpay-single/daxpay-single-core/src/main/java/cn/daxpay/single/core/code/AllocReceiverTypeEnum.java @@ -1,5 +1,6 @@ package cn.daxpay.single.core.code; +import cn.daxpay.single.core.exception.UnsupportedAbilityException; import lombok.AllArgsConstructor; import lombok.Getter; @@ -41,7 +42,7 @@ public enum AllocReceiverTypeEnum { return Arrays.stream(AllocReceiverTypeEnum.values()) .filter(e -> e.getCode().equals(code)) .findFirst() - .orElseThrow(() -> new IllegalArgumentException("未找到对应的分账接收方类型")); + .orElseThrow(() -> new UnsupportedAbilityException("未找到对应的分账接收方类型")); } /** 微信支持类型 */ diff --git a/daxpay-single/daxpay-single-core/src/main/java/cn/daxpay/single/core/code/TransferPayeeTypeEnum.java b/daxpay-single/daxpay-single-core/src/main/java/cn/daxpay/single/core/code/TransferPayeeTypeEnum.java index f6d8b59b4..af5633ce3 100644 --- a/daxpay-single/daxpay-single-core/src/main/java/cn/daxpay/single/core/code/TransferPayeeTypeEnum.java +++ b/daxpay-single/daxpay-single-core/src/main/java/cn/daxpay/single/core/code/TransferPayeeTypeEnum.java @@ -1,5 +1,6 @@ package cn.daxpay.single.core.code; +import cn.daxpay.single.core.exception.UnsupportedAbilityException; import lombok.AllArgsConstructor; import lombok.Getter; @@ -16,13 +17,13 @@ import java.util.List; @AllArgsConstructor public enum TransferPayeeTypeEnum { /** 微信 个人 */ - WX_PERSONAL("wx_personal","openid", "个人"), + WX_PERSONAL("wx_personal","openid", "OpenId"), /** 支付宝 userId 以2088开头的纯16位数字 */ - ALI_USER_ID("ali_user_id","ALIPAY_USERID", "用户ID"), + ALI_USER_ID("ali_user_id","ALIPAY_USER_ID", "用户ID"), /** 支付宝 openId */ - ALI_OPEN_ID("ali_open_id","ALIPAY_OPENID", "openId"), + ALI_OPEN_ID("ali_open_id","ALIPAY_OPEN_ID", "OpenId"), /** 支付宝 账号 支持邮箱和手机号格式 */ - ALI_LOGIN_NAME("ali_login_name","ALIPAY_LOGONID", "账号"); + ALI_LOGIN_NAME("ali_login_name","ALIPAY_LOGON_ID", "账号"); /** 编码 */ private final String code; @@ -38,7 +39,7 @@ public enum TransferPayeeTypeEnum { return Arrays.stream(TransferPayeeTypeEnum.values()) .filter(e -> e.getCode().equals(code)) .findFirst() - .orElseThrow(() -> new IllegalArgumentException("未找到对应的分账接收方类型")); + .orElseThrow(() -> new UnsupportedAbilityException("未找到对应的分账接收方类型")); } /** 微信支持类型 */ diff --git a/daxpay-single/daxpay-single-core/src/main/java/cn/daxpay/single/core/code/TransferStatusEnum.java b/daxpay-single/daxpay-single-core/src/main/java/cn/daxpay/single/core/code/TransferStatusEnum.java index 5e586d62b..72a1ce811 100644 --- a/daxpay-single/daxpay-single-core/src/main/java/cn/daxpay/single/core/code/TransferStatusEnum.java +++ b/daxpay-single/daxpay-single-core/src/main/java/cn/daxpay/single/core/code/TransferStatusEnum.java @@ -14,8 +14,7 @@ public enum TransferStatusEnum { TRANSFERRING("transferring", "转账中"), SUCCESS("success", "转账成功"), - FAIL("fail", "转账失败"), - ; + FAIL("fail", "转账失败"),; private final String code; private final String name; diff --git a/daxpay-single/daxpay-single-core/src/main/java/cn/daxpay/single/core/code/TransferTypeEnum.java b/daxpay-single/daxpay-single-core/src/main/java/cn/daxpay/single/core/code/TransferTypeEnum.java index b9aaf82a5..b7393ede8 100644 --- a/daxpay-single/daxpay-single-core/src/main/java/cn/daxpay/single/core/code/TransferTypeEnum.java +++ b/daxpay-single/daxpay-single-core/src/main/java/cn/daxpay/single/core/code/TransferTypeEnum.java @@ -4,7 +4,7 @@ import lombok.AllArgsConstructor; import lombok.Getter; /** - * 转账类型注解 + * 转账类型 微信使用 * @author xxm * @since 2024/6/6 */ diff --git a/daxpay-single/daxpay-single-core/src/main/java/cn/daxpay/single/core/result/order/TransferOrderResult.java b/daxpay-single/daxpay-single-core/src/main/java/cn/daxpay/single/core/result/order/TransferOrderResult.java index 3c564c524..3ae2ba0e4 100644 --- a/daxpay-single/daxpay-single-core/src/main/java/cn/daxpay/single/core/result/order/TransferOrderResult.java +++ b/daxpay-single/daxpay-single-core/src/main/java/cn/daxpay/single/core/result/order/TransferOrderResult.java @@ -1,11 +1,17 @@ package cn.daxpay.single.core.result.order; +import cn.daxpay.single.core.code.PayChannelEnum; +import cn.daxpay.single.core.code.TransferPayeeTypeEnum; +import cn.daxpay.single.core.code.TransferStatusEnum; +import cn.daxpay.single.core.code.TransferTypeEnum; import cn.daxpay.single.core.result.PaymentCommonResult; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; +import java.time.LocalDateTime; + /** * 转账订单数据 * @author xxm @@ -16,4 +22,80 @@ import lombok.experimental.Accessors; @Accessors(chain = true) @Schema(title = "转账订单数据") public class TransferOrderResult extends PaymentCommonResult { + + /** 商户转账号 */ + @Schema(description = "商户转账号") + private String bizTransferNo; + + /** 转账号 */ + @Schema(description = "转账号") + private String transferNo; + + /** 通道转账号 */ + @Schema(description = "通道转账号") + private String outTransferNo; + + /** + * 支付通道 + * @see PayChannelEnum + */ + @Schema(description = "支付通道") + private String channel; + + /** 转账金额 */ + @Schema(description = "转账金额") + private Integer amount; + + /** 标题 */ + @Schema(description = "标题") + private String title; + + /** 转账原因/备注 */ + @Schema(description = "转账原因/备注") + private String reason; + + /** + * 转账类型, 微信使用 + * @see TransferTypeEnum + */ + @Schema(description = "转账类型, 微信使用") + private String transferType; + + /** + * 收款人类型 + * @see TransferPayeeTypeEnum + */ + @Schema(description = "收款人类型") + private String payeeType; + + /** 收款人账号 */ + @Schema(description = "收款人账号") + private String payeeAccount; + + /** 收款人姓名 */ + @Schema(description = "收款人姓名") + private String payeeName; + + /** + * 状态 + * @see TransferStatusEnum + */ + @Schema(description = "状态") + private String status; + + /** 成功时间 */ + @Schema(description = "成功时间") + private LocalDateTime successTime; + + /** + * 错误码 + */ + @Schema(description = "错误码") + private String errorCode; + + /** + * 错误原因 + */ + @Schema(description = "错误原因") + private String errorMsg; } diff --git a/daxpay-single/daxpay-single-gateway/src/main/java/cn/daxpay/single/gateway/controller/UniQueryController.java b/daxpay-single/daxpay-single-gateway/src/main/java/cn/daxpay/single/gateway/controller/UniQueryController.java index 499d792cd..dda60705d 100644 --- a/daxpay-single/daxpay-single-gateway/src/main/java/cn/daxpay/single/gateway/controller/UniQueryController.java +++ b/daxpay-single/daxpay-single-gateway/src/main/java/cn/daxpay/single/gateway/controller/UniQueryController.java @@ -13,10 +13,12 @@ import cn.daxpay.single.core.result.order.AllocOrderResult; import cn.daxpay.single.core.result.allocation.AllocReceiversResult; import cn.daxpay.single.core.result.order.PayOrderResult; import cn.daxpay.single.core.result.order.RefundOrderResult; +import cn.daxpay.single.core.result.order.TransferOrderResult; import cn.daxpay.single.service.annotation.PaymentVerify; import cn.daxpay.single.service.annotation.InitPaymentContext; import cn.daxpay.single.service.core.order.pay.service.PayOrderQueryService; import cn.daxpay.single.service.core.order.refund.service.RefundOrderQueryService; +import cn.daxpay.single.service.core.order.transfer.service.TransferOrderQueryService; import cn.daxpay.single.service.core.payment.allocation.service.AllocationReceiverService; import cn.daxpay.single.service.core.payment.allocation.service.AllocationService; import cn.daxpay.single.core.util.DaxRes; @@ -43,6 +45,7 @@ public class UniQueryController { private final PayOrderQueryService payOrderQueryService; private final RefundOrderQueryService refundOrderQueryService; + private final TransferOrderQueryService transferOrderQueryService; private final AllocationReceiverService allocationReceiverService; private final AllocationService allocationService; @@ -74,8 +77,8 @@ public class UniQueryController { @InitPaymentContext(PaymentApiCode.QUERY_TRANSFER_ORDER) @Operation(summary = "转账订单查询接口") @PostMapping("/transferOrder") - public DaxResult transferOrder(@RequestBody QueryTransferParam param){ - return DaxRes.ok(); + public DaxResult transferOrder(@RequestBody QueryTransferParam param){ + return DaxRes.ok(transferOrderQueryService.queryTransferOrder(param)); } @PaymentVerify diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/channel/alipay/service/AliPayTransferService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/channel/alipay/service/AliPayTransferService.java index c29707005..9d1864b11 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/channel/alipay/service/AliPayTransferService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/channel/alipay/service/AliPayTransferService.java @@ -1,6 +1,7 @@ package cn.daxpay.single.service.core.channel.alipay.service; import cn.bootx.platform.common.core.util.LocalDateTimeUtil; +import cn.daxpay.single.core.code.TransferPayeeTypeEnum; import cn.daxpay.single.core.code.TransferStatusEnum; import cn.daxpay.single.core.exception.TradeFaileException; import cn.daxpay.single.service.code.AliPayCode; @@ -75,12 +76,16 @@ public class AliPayTransferService { model.setOutBizNo(order.getTransferNo()); // 设置订单总金额 model.setTransAmount(PayUtil.conversionAmount(order.getAmount()).toString()); - // 设置收款方信息 Participant payeeInfo = new Participant(); + // 收款人账号 payeeInfo.setIdentity(order.getPayeeAccount()); + // 收款人姓名 payeeInfo.setName(order.getPayeeName()); - payeeInfo.setIdentityType(order.getPayeeType()); + // 收款人类型 + String identityType = TransferPayeeTypeEnum.findByCode(order.getPayeeType()) + .getOutCode(); + payeeInfo.setIdentityType(identityType); model.setPayeeInfo(payeeInfo); model.setRemark(order.getReason()); request.setBizModel(model); diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/notice/entity/ClientNoticeTask.java b/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/notice/entity/ClientNoticeTask.java index 681a548d0..6bdbbcf6c 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/notice/entity/ClientNoticeTask.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/notice/entity/ClientNoticeTask.java @@ -81,7 +81,7 @@ public class ClientNoticeTask extends MpBaseEntity implements EntityBaseFunction private String url; /** 最后发送时间 */ - @DbColumn(comment = "最后发送时间", isNull = false) + @DbColumn(comment = "最后发送时间") private LocalDateTime latestTime; /** diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/order/transfer/entity/TransferOrder.java b/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/order/transfer/entity/TransferOrder.java index 4e8a4d11b..668af2b20 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/order/transfer/entity/TransferOrder.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/order/transfer/entity/TransferOrder.java @@ -73,10 +73,6 @@ public class TransferOrder extends MpBaseEntity implements EntityBaseFunction new DataNotExistException("转账订单扩展信息不存在")); + .orElseThrow(() -> new DataNotExistException("转账订单信息不存在")); + + } + + /** + * 根据转账号查询 + */ + public TransferOrderDto findByBizTransferNo(String bizTransferNo){ + return transferOrderManager.findByBizTransferNo(bizTransferNo).map(TransferOrder::toDto) + .orElseThrow(() -> new DataNotExistException("转账订单信息不存在")); } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/payment/allocation/service/AllocationAssistService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/payment/allocation/service/AllocationAssistService.java index f92583a19..47754926a 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/payment/allocation/service/AllocationAssistService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/payment/allocation/service/AllocationAssistService.java @@ -22,7 +22,7 @@ public class AllocationAssistService { private final AllocationOrderManager allocationOrderManager; /** - * 根据新传入的分账订单更新订单和扩展信息 + * 根据新传入的分账订单更新订单信息 */ @Transactional(rollbackFor = Exception.class) public void updateOrder(AllocationParam allocationParam, AllocOrder orderExtra) { diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/payment/allocation/service/AllocationService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/payment/allocation/service/AllocationService.java index 2a4035b2b..e34d80060 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/payment/allocation/service/AllocationService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/payment/allocation/service/AllocationService.java @@ -169,7 +169,7 @@ public class AllocationService { allocationStrategy.initParam(order, details); // 分账预处理 allocationStrategy.doBeforeHandler(); - // 更新分账单扩展信息 + // 更新分账单信息 allocationAssistService.updateOrder(param, order); try { // 重复分账处理 diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/payment/pay/service/PayAssistService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/payment/pay/service/PayAssistService.java index 62044c650..7a2dd9213 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/payment/pay/service/PayAssistService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/payment/pay/service/PayAssistService.java @@ -85,7 +85,7 @@ public class PayAssistService { } /** - * 根据新传入的支付订单更新订单和扩展信息 + * 根据新传入的支付订单更新订单信息 */ @Transactional(rollbackFor = Exception.class) public void updatePayOrder(PayParam payParam,PayOrder order) { diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/payment/refund/service/RefundService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/payment/refund/service/RefundService.java index 902972d6e..52ba2959c 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/payment/refund/service/RefundService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/payment/refund/service/RefundService.java @@ -175,7 +175,7 @@ public class RefundService { } /** - * 更新退款订单扩展信息 + * 更新退款订单信息 */ private void updateOrder(RefundParam param, RefundOrder order){ order.setAttach(param.getAttach()) diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/payment/transfer/service/TransferService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/payment/transfer/service/TransferService.java index 85093be22..9a6402123 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/payment/transfer/service/TransferService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/payment/transfer/service/TransferService.java @@ -3,6 +3,7 @@ package cn.daxpay.single.service.core.payment.transfer.service; import cn.daxpay.single.core.code.RefundStatusEnum; import cn.daxpay.single.core.param.payment.transfer.TransferParam; import cn.daxpay.single.core.result.transfer.TransferResult; +import cn.daxpay.single.service.common.context.TransferLocal; import cn.daxpay.single.service.common.local.PaymentContextLocal; import cn.daxpay.single.service.core.order.transfer.dao.TransferOrderManager; import cn.daxpay.single.service.core.order.transfer.entity.TransferOrder; @@ -63,7 +64,11 @@ public class TransferService { */ @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRES_NEW) public void successHandler(TransferOrder order){ - order.setStatus(RefundStatusEnum.SUCCESS.getCode()); + TransferLocal transferInfo = PaymentContextLocal.get() + .getTransferInfo(); + order.setStatus(transferInfo.getStatus().getCode()) + .setSuccessTime(transferInfo.getFinishTime()) + .setOutTransferNo(transferInfo.getOutTransferNo()); transferOrderManager.updateById(order); } } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/payment/transfer/strategy/WeChatTransferStrategy.java b/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/payment/transfer/strategy/WeChatTransferStrategy.java index 69002ddf1..8d31de80c 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/payment/transfer/strategy/WeChatTransferStrategy.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/payment/transfer/strategy/WeChatTransferStrategy.java @@ -48,7 +48,7 @@ public class WeChatTransferStrategy extends AbsTransferStrategy { // 转账接收方类型校验 String payeeType = transferParam.getPayeeType(); if (!Objects.equals(WX_PERSONAL.getCode(), payeeType)){ - throw new ParamValidationFailException("支付宝不支持该类型收款人"); + throw new ParamValidationFailException("微信不支持该类型收款人"); } } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/dto/order/transfer/TransferOrderDto.java b/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/dto/order/transfer/TransferOrderDto.java index 1894d830a..2e3bbcad7 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/dto/order/transfer/TransferOrderDto.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/dto/order/transfer/TransferOrderDto.java @@ -61,10 +61,6 @@ public class TransferOrderDto extends BaseDto { @Schema(description = "转账类型, 微信使用") private String transferType; - /** 付款方 */ - @Schema(description = "付款方") - private String payer; - /** * 收款人类型 * @see TransferPayeeTypeEnum diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/param/order/TransferOrderQuery.java b/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/param/order/TransferOrderQuery.java index ebdb2b59b..5156ac26a 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/param/order/TransferOrderQuery.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/param/order/TransferOrderQuery.java @@ -62,9 +62,6 @@ public class TransferOrderQuery extends QueryOrder { @Schema(description = "转账类型, 微信使用") private String transferType; - /** 付款方 */ - @Schema(description = "付款方") - private String payer; /** * 收款人类型