mirror of
https://gitee.com/dromara/dax-pay
synced 2026-08-09 06:26:00 +08:00
ref 流程重构
This commit is contained in:
@@ -1,58 +0,0 @@
|
||||
@startuml
|
||||
|
||||
map PayOrder {
|
||||
名称 => 支付订单
|
||||
id => 主键
|
||||
}
|
||||
map PayChannelOrder {
|
||||
名称 => 通道支付订单
|
||||
paymentId => 支付id
|
||||
}
|
||||
map PayOrderExtra {
|
||||
名称 => 支付订单扩展
|
||||
id => 主键
|
||||
}
|
||||
|
||||
map RefundOrder {
|
||||
名称 => 退款订单
|
||||
id => 主键
|
||||
paymentId => 支付id
|
||||
}
|
||||
|
||||
map RefundOrderExtra {
|
||||
名称 => 退款订单扩展
|
||||
id => 主键
|
||||
}
|
||||
|
||||
map RefundChannelOrder {
|
||||
名称 => 通道退款订单
|
||||
refundId => 退款id
|
||||
payChannelId => 通道支付订单id
|
||||
}
|
||||
|
||||
map AllocationOrder {
|
||||
名称 => 分账订单
|
||||
paymentId => 支付id
|
||||
}
|
||||
|
||||
map AllocationOrderDetail {
|
||||
名称 => 分账订单明细
|
||||
allocationId => 分账id
|
||||
}
|
||||
|
||||
'支付订单关联
|
||||
PayOrder::id <-- PayOrderExtra::id: 一对一关联
|
||||
PayOrder::id <-- PayChannelOrder::paymentId: 多对一关联
|
||||
|
||||
'退款订单
|
||||
RefundOrder::id <-- RefundOrderExtra::id: 一对一关联
|
||||
RefundOrder::id <-- RefundChannelOrder::refundId: 多对一关联
|
||||
RefundOrder::paymentId <-- PayOrder::id: 多对一关联
|
||||
RefundChannelOrder::payChannelId --> PayChannelOrder::id: 多对一关联
|
||||
|
||||
'分账订单
|
||||
AllocationOrder::paymentId --> PayOrder::id: 多对一关联
|
||||
AllocationOrder::id --> AllocationOrderDetail::allocationId: 多对一关联
|
||||
|
||||
|
||||
@enduml
|
||||
@@ -1,19 +0,0 @@
|
||||
@startuml
|
||||
|
||||
progress : 支付中
|
||||
success : 成功
|
||||
close : 支付关闭
|
||||
refunding : 退款中
|
||||
partial_refund : 部分退款
|
||||
refunded : 全部退款
|
||||
fail : 失败
|
||||
|
||||
[*] --> progress
|
||||
progress --> success
|
||||
progress --> close
|
||||
progress --> fail
|
||||
success --> refunding
|
||||
refunding --> partial_refund
|
||||
refunding --> refunded
|
||||
|
||||
@enduml
|
||||
@@ -1,45 +0,0 @@
|
||||
@startuml
|
||||
|
||||
object PayOrder
|
||||
object RefundOrder
|
||||
|
||||
map CallbackRecord{
|
||||
名称 => 回调记录
|
||||
orderId => 订单Id
|
||||
}
|
||||
|
||||
map CloseRecord{
|
||||
名称 => 支付订单关闭记录
|
||||
paymentId => 支付id
|
||||
}
|
||||
|
||||
map RepairRecord{
|
||||
名称 => 修复记录
|
||||
orderId => 订单Id(支付/退款)
|
||||
repairNo => 修复号(不唯一)
|
||||
}
|
||||
|
||||
map SyncRecord{
|
||||
名称 => 同步记录
|
||||
orderId => 订单Id(支付/退款)
|
||||
repairOrderNo => 修复号
|
||||
}
|
||||
|
||||
|
||||
'回调记录
|
||||
CallbackRecord::orderId --> PayOrder::id: 多对一关联
|
||||
CallbackRecord::orderId --> RefundOrder::id: 多对一关联
|
||||
|
||||
'支付订单关闭记录
|
||||
CloseRecord::paymentId --> PayOrder::id: 一对一关联
|
||||
|
||||
'修复记录
|
||||
RepairRecord::orderId --> PayOrder::id: 多对一关联
|
||||
RepairRecord::orderId --> RefundOrder::id: 多对一关联
|
||||
|
||||
'同步记录
|
||||
SyncRecord::orderId --> PayOrder::id: 多对一关联
|
||||
SyncRecord::orderId --> RefundOrder::id: 多对一关联
|
||||
SyncRecord::repairNo --> RepairRecord::repairNo: 一对一关联
|
||||
|
||||
@enduml
|
||||
@@ -1,13 +0,0 @@
|
||||
@startuml
|
||||
|
||||
progress : 退款中
|
||||
success : 成功
|
||||
close : 关闭
|
||||
fail : 失败
|
||||
|
||||
[*] --> progress
|
||||
progress --> success
|
||||
progress --> close
|
||||
progress --> fail
|
||||
|
||||
@enduml
|
||||
@@ -1,17 +0,0 @@
|
||||
@startuml
|
||||
autonumber
|
||||
|
||||
actor 客户 as khd
|
||||
participant 控制器 as kzq
|
||||
participant 服务类 as fwl
|
||||
participant DAO as dao
|
||||
|
||||
khd -> kzq: 发送请求
|
||||
skinparam responseMessageBelowArrow true
|
||||
kzq --> fwl ++: 组装参数
|
||||
fwl --> kzq ++: 返回功能
|
||||
kzq --> fwl --: 继续查询
|
||||
kzq --> kzq: 继续查询
|
||||
fwl --> dao ++ : 数据查询
|
||||
dao --> fwl: 查询
|
||||
@enduml
|
||||
@@ -1,17 +0,0 @@
|
||||
@startuml
|
||||
autonumber
|
||||
|
||||
actor 客户 as khd
|
||||
participant 控制器 as kzq
|
||||
participant 服务类 as fwl
|
||||
participant DAO as dao
|
||||
|
||||
khd -> kzq: 发送请求
|
||||
skinparam responseMessageBelowArrow true
|
||||
kzq --> fwl ++: 组装参数
|
||||
fwl --> kzq ++: 返回功能
|
||||
kzq --> fwl --: 继续查询
|
||||
kzq --> kzq: 继续查询
|
||||
fwl --> dao ++ : 数据查询
|
||||
dao --> fwl: 查询
|
||||
@enduml
|
||||
@@ -1,42 +0,0 @@
|
||||
@startuml
|
||||
autonumber
|
||||
skinparam responseMessageBelowArrow true
|
||||
|
||||
title 支付代码时序图-以支付宝支付为例
|
||||
|
||||
actor 客户端 as Client
|
||||
participant PayService
|
||||
participant PayOrderService
|
||||
participant PayAssistService
|
||||
participant AliPayStrategy
|
||||
participant PayStrategyFactory
|
||||
participant AliPayService
|
||||
participant ClientNoticeService
|
||||
|
||||
Client -> PayService: 发送请求
|
||||
PayService --> PayAssistService: 校验支付状态
|
||||
PayService --> PayAssistService: 初始化上下文
|
||||
PayService -> PayService: 调用首次支付方法
|
||||
PayService -> PayAssistService: 创建支付订单和扩展记录并保存
|
||||
PayService <- PayAssistService: 返回支付订单对象
|
||||
PayService -> PayService: 调用支付方法进行发起支付
|
||||
PayService -> PayStrategyFactory: 通过工厂生成对应的策略组
|
||||
PayService <- PayStrategyFactory: 返回支付策略组
|
||||
PayService -> AliPayStrategy: 执行支付前处理动作
|
||||
AliPayStrategy --> AliPayStrategy: 支付宝参数验证和反序列化通道支付参数
|
||||
AliPayStrategy -> AliPayService: 检查并获取支付宝配置, 同时校验支付相关信息
|
||||
AliPayStrategy <- AliPayService: 返回检查结果和支付配置
|
||||
PayService <- AliPayStrategy: 支付前处理完成
|
||||
AliPayStrategy -> AliPayService: 调用网关接口进行进行支付
|
||||
AliPayService -> 支付宝支付网关: 根据情况调用对应类型的支付
|
||||
AliPayService <- 支付宝支付网关: 返回支付调用结果
|
||||
AliPayStrategy <- AliPayService: 返回支付结构体或者支付结果(写到现成变量中)
|
||||
PayService <- AliPayStrategy: 支付调用完成
|
||||
PayService -> AliPayStrategy: 进行支付调用成功后处理
|
||||
AliPayStrategy --> ChannelOrderService: 保存通道支付订单
|
||||
AliPayStrategy --> ChannelOrderService: 如果已经支付完成, 保存流水记录
|
||||
PayService <- AliPayStrategy: 处理完成
|
||||
PayService --> ClientNoticeService: 如果支付成功, 发送通知
|
||||
Client <- PayService: 返回支付结果
|
||||
|
||||
@enduml
|
||||
@@ -1,11 +0,0 @@
|
||||
@startuml
|
||||
'https://plantuml.com/activity-diagram-beta
|
||||
|
||||
start
|
||||
:发起支付;
|
||||
:基础参数校验;
|
||||
switch (订单类型?)
|
||||
|
||||
stop
|
||||
|
||||
@enduml
|
||||
@@ -1,64 +0,0 @@
|
||||
@startuml
|
||||
|
||||
title 对账代码时序图-以支付宝对账为例
|
||||
|
||||
skinparam responseMessageBelowArrow true
|
||||
|
||||
actor 客户端 as Client
|
||||
participant ReconcileService
|
||||
participant ReconcileOrderService
|
||||
participant ReconcileStrategy
|
||||
participant AliPayReconcileService
|
||||
participant ReconcileDiffService
|
||||
participant ReconcileOrderManager
|
||||
participant ReconcileContext
|
||||
participant ReconcileDetailManager
|
||||
participant ReconcileStrategyFactory
|
||||
participant AliGateway as 支付宝网关
|
||||
|
||||
autonumber
|
||||
Client -> ReconcileService: 发起对账请求
|
||||
|
||||
group 1. 创建对账订单
|
||||
autonumber 1
|
||||
ReconcileService -> ReconcileStrategyFactory: 构建对账策略
|
||||
ReconcileService <- ReconcileStrategyFactory: 返回对账策略对象
|
||||
ReconcileService -> ReconcileStrategy: 生成批次号
|
||||
ReconcileService <- ReconcileStrategy: 返回批次号
|
||||
ReconcileService -> ReconcileService: 创建对账订单
|
||||
ReconcileService -> ReconcileOrderManager: 保存对账订单
|
||||
ReconcileService <- ReconcileOrderManager: 返回对账订单
|
||||
end
|
||||
|
||||
group 2. 下载对账单并进行保存
|
||||
autonumber 1
|
||||
ReconcileService -> ReconcileStrategyFactory: 构建对账策略
|
||||
ReconcileService <- ReconcileStrategyFactory: 返回对账策略对象
|
||||
ReconcileService -> ReconcileStrategy: 下载对账单, 并进行解析进行保存
|
||||
ReconcileStrategy -> AliPayReconcileService: 发起对账单下载请求,获取对账单下载地址
|
||||
AliPayReconcileService -> AliGateway: 发起对账单下载请求,获取对账单下载地址
|
||||
AliPayReconcileService <- AliGateway: 返回对账单下载地址
|
||||
AliPayReconcileService -> AliGateway: 下载对账单
|
||||
AliPayReconcileService <- AliGateway: 返回对账单内容
|
||||
AliPayReconcileService -> AliPayReconcileService: 解析对账单, 同时生成通用对账单记录
|
||||
AliPayReconcileService --> ReconcileContext: 将解析后的通用对账单记录放到到上下文
|
||||
ReconcileStrategy <- AliPayReconcileService: 处理结束
|
||||
ReconcileService <- ReconcileStrategy: 处理结束
|
||||
ReconcileService <- ReconcileContext: 获取通用对账单记录
|
||||
ReconcileService --> reconcileDetailManager: 保存明细记录
|
||||
end
|
||||
|
||||
group 3. 对账单比对
|
||||
autonumber 1
|
||||
ReconcileService -> ReconcileStrategyFactory: 构建对账策略
|
||||
ReconcileService <- ReconcileStrategyFactory: 返回对账策略对象
|
||||
ReconcileService <--> ReconcileStrategy: 初始对账策略类
|
||||
ReconcileService <- ReconcileStrategy: 获取本地和网关订单数据
|
||||
ReconcileService -> ReconcileService: 比对本地和网关订单差异
|
||||
ReconcileService --> ReconcileDiffService: 保存差异记录
|
||||
|
||||
end
|
||||
autonumber 2
|
||||
Client <- ReconcileService: 返回对账结束
|
||||
|
||||
@enduml
|
||||
@@ -1,76 +0,0 @@
|
||||
@startuml
|
||||
|
||||
autonumber
|
||||
skinparam responseMessageBelowArrow true
|
||||
|
||||
title 退款代码时序图-以支付宝退款全部退款为例
|
||||
|
||||
actor 客户端 as Client
|
||||
participant RefundService
|
||||
participant RefundStrategyFactory
|
||||
participant AliRefundStrategy
|
||||
participant RefundAssistService
|
||||
participant AlipayConfigService
|
||||
participant AliRefundService
|
||||
participant PayOrderService
|
||||
participant PayChannelOrderManager
|
||||
participant PayChannelOrderService
|
||||
participant AliRecordService
|
||||
participant ClientNoticeService
|
||||
participant 支付宝网关 as AlliGateway
|
||||
|
||||
Client -> RefundService: 发起退款请求
|
||||
|
||||
group 1. 退款发起前准备
|
||||
autonumber 1
|
||||
RefundService -> RefundService: 使用适配方法发起全部退款
|
||||
RefundService <- RefundAssistService: 获取支付订单
|
||||
RefundService --> RefundAssistService: 检查退款参数, 同时补充一些数据
|
||||
RefundService --> RefundAssistService: 上下文初始化
|
||||
|
||||
RefundService -> RefundStrategyFactory: 通过工厂生成对应的策略组
|
||||
RefundService <- RefundStrategyFactory: 返回支付策略组
|
||||
|
||||
RefundService --> AliRefundStrategy: 初始化退款策略的参数
|
||||
AliRefundStrategy --> AliRefundStrategy: 执行初始化退款策略的参数
|
||||
|
||||
RefundService --> AliRefundStrategy: 退款前校验操作
|
||||
RefundService --> AliRefundStrategy: 生成通道退款订单对象
|
||||
|
||||
RefundService --> PayChannelOrderManager: 预扣支付相关订单要退款的金额并进行更新
|
||||
RefundService --> PayOrderService: 更新支付订单退款状态
|
||||
RefundService --> RefundAssistService: 创建退款相关订单,并对数据进行持久化保存
|
||||
|
||||
end
|
||||
|
||||
group 2. 退款操作
|
||||
autonumber 1
|
||||
|
||||
RefundService -> AliRefundStrategy: 退款前准备操作
|
||||
AliRefundStrategy --> AlipayConfigService: 获取并初始化支付配置信息
|
||||
RefundService <- AliRefundStrategy: 退款前准备结束
|
||||
|
||||
RefundService -> AliRefundStrategy: 执行退款策略
|
||||
AliRefundStrategy -> AliRefundService : 执行退款操作
|
||||
AliRefundService --> AlliGateway: 发送退款指令
|
||||
AliRefundService -> AliRefundStrategy: 返回结果
|
||||
RefundService <- AliRefundStrategy: 退款执行结束
|
||||
|
||||
end
|
||||
|
||||
group 3. 退款发起成功后操作
|
||||
autonumber 1
|
||||
RefundService -> AliRefundStrategy: 执行退款发起成功后操作
|
||||
AliRefundStrategy --> AliRefundStrategy: 更新退款订单数据状态
|
||||
AliRefundStrategy --> PayChannelOrderService: 更新支付通道订单中的状态属性
|
||||
AliRefundStrategy --> AliRecordService: 如果退款完成, 保存流水记录
|
||||
RefundService <- AliRefundStrategy: 执行完成
|
||||
|
||||
RefundService --> PayOrderService: 更新支付订单信息
|
||||
RefundService --> RefundAssistService: 更新退款订单和相关通道退款订单
|
||||
RefundService --> ClientNoticeService: 如果支付完成发送退款成功通知
|
||||
|
||||
end
|
||||
autonumber 2
|
||||
Client <- RefundService: 返回退款调用结果
|
||||
@enduml
|
||||
Reference in New Issue
Block a user