退款\撤销模型
2024-03-15 17:24:39 0 举报
AI智能生成
退款\撤销模型
作者其他创作
大纲/内容
通用逻辑
参数校验
原交易
交易类型为12,36,62,D2,46,S2
交易状态为部分退款(13)或 成功(10)
成功的支付单对应的支付明细 ——> 预付费卡18 && 子支付方式为预付费卡(非通卡)不支持撤销
撤销交易
交易类型必须为38,39
本次撤销金额
必须大于0
不存在撤销金额为0,撤销原交易所有手续费
必须小于原交易剩余可撤销金额(原交易金额-原交易已撤销金额)
撤销金额全部撤销,手续费部分撤销——>撤销交易成功后,原交易状态为21,剩余手续费无法再撤销
本次撤销原交易手续费
本次撤销交易手续费必须小于原交易手续费
多次部分撤销,可能累计撤销原交易手续费大于原交易手续费,产生资损(目前业务系统自己控制)
同一个资金渠道的多个支付方式组合支付问题
交易系统自动冲正没有问题
根据TransId和PaymentId调用GW的接口,查询成功的渠道指令(T_UTPP_GW_PAY、T_UTPP_GW_PAY_ORDER),发起自动冲正流程
上游发起撤销(38、39)
非指定支付方式
一个撤销支付明细,同一个资金渠道的多个支付方式只有一笔渠道指令
52和02组合支付,按照撤销支付明细顺序排序,生成一条02的支付明细记录,但是02支付明细金额是52的,所以用户帐会失败
指定支付方式
38(UTPP2.0)
N个撤销支付明细,同一个资金渠道的N个支付方式有N笔渠道指令
网关资金渠道有冲退转提现接口,52和02组合支付撤销有问题
顺序:52、02
52不调用该接口,但是把refundType='reveres'放在context中
02调用该接口,把接口查询的结果refundType='withdraw'和oriPaycoreId='4604683662'放在context中
02和52组装支付指令都会用到(2)的结果,都组装提现的指令,执行完52网关指令,再执行02网关指令就会金额超退
后续版本,52修改为只支持冲正
顺序:02、52
02调用该接口,把接口查询的结果refundType='withdraw'和oriPaycoreId='4604683662'放在context中
52不调用该接口,但是把refundType='reveres'放在context中
02和52组装支付指令都会用到(2)的结果,都组装冲正的指令
39
N个撤销支付明细,同一个资金渠道的N个支付方式有2*N笔渠道指令
2*N笔渠道指令是因为组装渠道指令抽象类双层for循环问题
utpp3.0的1115版本已解决
指定支付方式
通用逻辑
逻辑校验
本次撤销支付明细金额总和=本次撤销金额+本次撤销原交易手续费
本次各个指定支付明细的累计撤销总和必须小于原交易对应支付明细金额
获取已撤销成功或进行中的交易
按照支付方式统计已撤销成功或进行中的交易的支付明细总计金额
根据(2)的结果,再累加上本次撤销支付明细金额,得到本次各个指定支付明细的累计撤销总和
本次各个指定支付明细的累计撤销总和必须小于原交易对应支付明细金额
本次撤销支付明细的支付方式必须在原交易支付明细中
撤销支付明细组装
根据本次撤销支付明细顺序和原交易支付明细计算
根据(1)的顺序执行资金渠道
全额撤销
部分撤销
全额退款实例
原交易(62)
交易维度
交易金额
30000
手续费金额
10000
支付维度
分期付(52)
30000
快捷借记(01)
10000
账务维度
账务凭证
OR001
credit交易单
I——》C001(30000)
OR001
credit交易单
I——》C001(10000)
EX001
writeoff交易单
O——》C001(30000)
I——》00户(30000)
EX001
writeoff交易单
O——》C001(10000)
I——》00户(10000)
TF023
O——》00户(30000)
I——》B002(30000)
SR001
O——》00户(10000)
I——》I001(10000)
撤销交易(38)
交易维度
交易金额
30000
原交易单退手续费金额
10000
支付维度
分期付(52)
20000
快捷借记(01)
10000
账务维度
账务凭证
TF023反向
requestType:2
30000
SR001反向
requestType:2
10000
EX001反向
requestType:2
20000
EX001反向
requestType:2
10000
OR001反向
requestType:2
20000
OR001反向
快捷借记(01)冲退转提现,OP001凭证
requestType:0
O——》C001(10000)
00户存留10000
非指定支付方式
通用逻辑
撤销支付明细组装
按照撤销支付明细顺序排序,筛选出原交易所有的支付工具列表
20
09
15
19
03
12
82
35
37
31
28
29
18
01,02,06,07,10,13,14,16,17,22,23,24,32,33,34,52
46,47,48,50,51
04,05
21
43
00
08
11
30
36
81
83
41
44
45
金额列表
已撤销金额
撤销总金额
已撤销金额
本次撤销本金
本次撤销原交易手续费
支付方式撤销金额总和(0)
循环累加原交易的已排序支付方式金额
本次支付方式实际退款金额
模型
循环原交易所有的已排序的支付工具列表
(1)支付方式撤销金额总和 += 原交易的原支付明细金额
(2.1)已撤销金额 >= 支付方式撤销金额总和
该支付方式已经全额退款
(2.2)已撤销金额 >= 撤销总金额
本次撤销交易流程已完成
(3.1)已撤销金额 >= 支付方式撤销金额总和
表示该支付方式金额已经全部撤销过
本次支付方式实际退款金额 = 支付方式撤销金额总和 — 已撤销金额 = 0
已撤销金额 = 支付方式撤销金额总和
(3.2)已撤销金额 < 支付方式撤销金额总和
本次支付方式实际退款金额 = 撤销总金额— 已撤销金额
已撤销金额 += 本次支付方式实际退款金额
(4)组装支付明细
全部撤销
部分撤销
0 条评论
下一页