feat 交易流水联调

This commit is contained in:
bootx
2024-06-02 18:32:11 +08:00
parent d673362577
commit 0c8bebb080
7 changed files with 73 additions and 16 deletions

View File

@@ -1,8 +1,25 @@
# CHANGELOG
## [v2.0.7]
- 新增: 资金流水记录功能
- 新增: 分账功能支持分账组分账和自己传接收方进行分账
- 新增: 分账接收的添加、删除、查询接口调用
- 新增: 分账发起、完结、同步功能支持接口调用
- 新增: 支持自动分账和手动发起分账两种
- 新增: 分账通知发送功能
- 新增:
- 优化:
- fix:
- 新增:
- 优化: 对超时订单进行处理(数据库定时同步)
- 优化: 订单金额小于0.01元直接忽略不进行分账,增加新状态,
- 优化: 优化签名注解和上下文初始化注解切面
- 优化: 分账重试会自动根据分账失败和
- 优化: 优化签名注解和上下文初始化注解切面, 更方便初始化上下文
- fix: 对账差异单数据不一致处理异常, 本地待对账订单类型记录错误
- fix: 订单超时任务注册任务错误id改为订单号
- fix: 系统中金额分转元精度异常问题
- fix: 同步回调处理参数订单号接收失败
- fix: 支付和退款消息签名值不一致问题
- fix: 分账发起时错误的使用订单号作为分账号
## [v2.0.6]
- 新增: 下载原始对账单功能,转换为指定格式进行下载
- 新增: 增加对账结果计算和显示,以及对单差异数据查看功能

View File

@@ -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功能
- [ ] 管理端界面支持扫码绑定对账接收方功能
- [ ] 对账提供外部接口调用
- [ ] 下载系统账单
- [ ] 分账结果通知处理
- [ ] 支付宝通知
- [ ] 微信通知
- [ ] 通知记录保存
- [ ] 增加收单收银台功能
- [ ] 增加资金对账单功能
- [ ] 支付通道两个独立的配置进行合并为一个

View File

@@ -12,6 +12,6 @@ import lombok.experimental.Accessors;
@Accessors(chain = true)
public class AllocationLocal {
/** 三方系统分账号 */
/** 通道分账号 */
private String outAllocationNo;
}

View File

@@ -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

View File

@@ -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);
}

View File

@@ -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;
}

View File

@@ -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;
}