diff --git a/_doc/ChangeLog.md b/_doc/ChangeLog.md index a66da9a64..8e08b490b 100644 --- a/_doc/ChangeLog.md +++ b/_doc/ChangeLog.md @@ -1,8 +1,25 @@ # CHANGELOG ## [v2.0.7] +- 新增: 资金流水记录功能 +- 新增: 分账功能支持分账组分账和自己传接收方进行分账 +- 新增: 分账接收的添加、删除、查询接口调用 +- 新增: 分账发起、完结、同步功能支持接口调用 +- 新增: 支持自动分账和手动发起分账两种 +- 新增: 分账通知发送功能 - 新增: -- 优化: -- fix: +- 新增: +- 优化: 对超时订单进行处理(数据库定时同步) +- 优化: 订单金额小于0.01元直接忽略不进行分账,增加新状态, +- 优化: 优化签名注解和上下文初始化注解切面 +- 优化: 分账重试会自动根据分账失败和 +- 优化: 优化签名注解和上下文初始化注解切面, 更方便初始化上下文 +- fix: 对账差异单数据不一致处理异常, 本地待对账订单类型记录错误 +- fix: 订单超时任务注册任务错误,id改为订单号 +- fix: 系统中金额分转元精度异常问题 +- fix: 同步回调处理参数订单号接收失败 +- fix: 支付和退款消息签名值不一致问题 +- fix: 分账发起时错误的使用订单号作为分账号 + ## [v2.0.6] - 新增: 下载原始对账单功能,转换为指定格式进行下载 - 新增: 增加对账结果计算和显示,以及对单差异数据查看功能 diff --git a/_doc/Task.md b/_doc/Task.md index eaca2702a..da2758033 100644 --- a/_doc/Task.md +++ b/_doc/Task.md @@ -3,7 +3,7 @@ - [x] 新增资金流水 - [x] 增加对超时订单进行处理(数据库同步) - [x] 支持分账组分账和自己传接收方进行分账 -- [x] 分账组管理提供接口调用 +- [x] 分账提供接口调用 - [x] 添加分账接收方 - [x] 查询分账接收方 - [x] 删除分账接收方 @@ -16,10 +16,6 @@ - [x] 分账同步 - [x] 保存分账同步记录 - [x] SDK支持分账相关接口 -- [ ] 分账结果通知处理 - - [ ] 支付宝通知 - - [ ] 微信通知 - - [ ] 通知记录保存 - [x] 分账重试支持完结失败 - [x] 分账通知发送功能 - [x] 分账支持手动和自动分账两种 @@ -31,13 +27,16 @@ - [x] 同步回调处理参数订单号接收失败 - [x] 支付和退款消息签名值不一致问题 - [x] 分账发起时错误的使用订单号作为分账号 -- [x] 支付宝发起时使用 2.0.7: 对账完善和系统优化 - [ ] DEMO增加获取微信OpenID和支付宝OpenId功能 - [ ] 管理端界面支持扫码绑定对账接收方功能 - [ ] 对账提供外部接口调用 - [ ] 下载系统账单 +- [ ] 分账结果通知处理 + - [ ] 支付宝通知 + - [ ] 微信通知 + - [ ] 通知记录保存 - [ ] 增加收单收银台功能 - [ ] 增加资金对账单功能 - [ ] 支付通道两个独立的配置进行合并为一个 diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/common/context/AllocationLocal.java b/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/common/context/AllocationLocal.java index 15fa11767..5a17bd57c 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/common/context/AllocationLocal.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/common/context/AllocationLocal.java @@ -12,6 +12,6 @@ import lombok.experimental.Accessors; @Accessors(chain = true) public class AllocationLocal { - /** 三方系统分账号 */ + /** 通道分账号 */ private String outAllocationNo; } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/record/flow/entity/TradeFlowRecord.java b/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/record/flow/entity/TradeFlowRecord.java index 22103bf42..5e1a949c2 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/record/flow/entity/TradeFlowRecord.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/record/flow/entity/TradeFlowRecord.java @@ -48,15 +48,15 @@ public class TradeFlowRecord extends MpCreateEntity implements EntityBaseFunctio private String channel; /** 本地交易号 */ - @DbColumn(comment = "本地订单号") + @DbColumn(comment = "本地交易号") private String tradeNo; /** 商户交易号 */ @DbColumn(comment = "商户交易号") private String bizTradeNo; - /** 三方系统交易号 */ - @DbColumn(comment = "三方系统交易号") + /** 通道交易号 */ + @DbColumn(comment = "通道交易号") private String outTradeNo; @Override diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/record/flow/service/TradeFlowRecordService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/record/flow/service/TradeFlowRecordService.java index 2c19e6a55..8658e0f92 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/record/flow/service/TradeFlowRecordService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/record/flow/service/TradeFlowRecordService.java @@ -66,7 +66,7 @@ public class TradeFlowRecordService { .setOutTradeNo(refundOrder.getOutRefundNo()) .setChannel(refundOrder.getChannel()) .setTitle(refundOrder.getTitle()) - .setType(TradeFlowRecordTypeEnum.PAY.getCode()) + .setType(TradeFlowRecordTypeEnum.REFUND.getCode()) .setAmount(refundOrder.getAmount()); tradeFlowRecordManager.save(tradeFlowRecord); } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/dto/record/flow/TradeFlowRecordDto.java b/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/dto/record/flow/TradeFlowRecordDto.java index 31a49fbd9..cd44cc33f 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/dto/record/flow/TradeFlowRecordDto.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/dto/record/flow/TradeFlowRecordDto.java @@ -1,10 +1,12 @@ package cn.daxpay.single.service.dto.record.flow; +import cn.bootx.platform.common.core.rest.dto.BaseDto; import cn.bootx.table.modify.annotation.DbColumn; import cn.daxpay.single.code.PayChannelEnum; import cn.daxpay.single.service.code.TradeFlowRecordTypeEnum; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; +import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; /** @@ -12,10 +14,11 @@ import lombok.experimental.Accessors; * @author xxm * @since 2024/5/17 */ +@EqualsAndHashCode(callSuper = true) @Data @Accessors(chain = true) @Schema(title = "资金流水记录") -public class TradeFlowRecordDto { +public class TradeFlowRecordDto extends BaseDto { /** 订单标题 */ @DbColumn(comment = "标题") @@ -47,7 +50,7 @@ public class TradeFlowRecordDto { @DbColumn(comment = "商户交易号") private String bizTradeNo; - /** 三方系统交易号 */ - @DbColumn(comment = "三方系统交易号") + /** 通道交易号 */ + @DbColumn(comment = "通道交易号") private String outTradeNo; } diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/param/record/TradeFlowRecordQuery.java b/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/param/record/TradeFlowRecordQuery.java index f19278246..d18eb284d 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/param/record/TradeFlowRecordQuery.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/param/record/TradeFlowRecordQuery.java @@ -1,5 +1,8 @@ package cn.daxpay.single.service.param.record; +import cn.bootx.platform.common.core.annotation.QueryParam; +import cn.daxpay.single.code.PayChannelEnum; +import cn.daxpay.single.service.code.TradeFlowRecordTypeEnum; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import lombok.experimental.Accessors; @@ -10,9 +13,44 @@ import lombok.experimental.Accessors; * @since 2024/5/17 */ @Data +@QueryParam(type = QueryParam.CompareTypeEnum.LIKE) @Accessors(chain = true) @Schema(title = "流水记录查询类") public class TradeFlowRecordQuery { + /** 订单标题 */ + @Schema(description = "订单标题") + private String title; + + /** 金额 */ + @Schema(description = "金额") + private Integer amount; + + /** + * 业务类型 + * @see TradeFlowRecordTypeEnum + */ + @QueryParam(type = QueryParam.CompareTypeEnum.EQ) + @Schema(description = "业务类型") + private String type; + + /** + * 支付通道 + * @see PayChannelEnum + */ + @Schema(description = "支付通道") + private String channel; + + /** 本地交易号 */ + @Schema(description = "本地交易号") + private String tradeNo; + + /** 商户交易号 */ + @Schema(description = "商户交易号") + private String bizTradeNo; + + /** 通道交易号 */ + @Schema(description = "通道交易号") + private String outTradeNo; }