干货!如何设计出款系统(四)
这一节,我们继续来往下讲,出款核心层。
一、什么是出款核心层?
出款核心层的职责是处理最底层的通用交易流程,这部分流程与上游业务场景无关,是所有出款业务都必须经过的流程。起到承接上游业务,下接渠道网关的作用。这一层对应生成出款交易单(transaction id)。
和出款业务层的区别在于,出款业务层处理业务逻辑,且对应生成的是订单(order id )。
我们先来思考一个问题,为什么要区分出款业务层和核心层?
-
从系统灵活性角度看:
业务逻辑和核心通用逻辑分开,可灵活拓展业务场景,新增业务类型只需要在业务层做拓展,而不影响底层通用逻辑。 -
从用户体验角度看:
1. 对外面向用户/商户展示订单维度的信息,对外错误码可经过转译后再展示友好失败原因说明和操作引导;对内运营人员需要了解每一笔交易单的信息,分析问题时可根据最底层的错误码进行排查和定位问题。就是所,对外和对内所需要的信息是不同的。
2. 对于因系统原因或底层渠道原因导致交易失败的情况,可重新生成交易单(transaction id),而订单号(order id )不变,提高订单维度的成功率,从而提升用户/商户的使用体验。
出款核心层的主要流程包括:
事中:
1. 接受出款业务层的请求,对应生成出款交易单。
2. 出款审核,审核出款通道余额是否大于当前交易金额。
3. 审核通过后发往通道网关,由通道网关外发交易指令到银行/外部通道。
4. 补偿机制:对于超过一定时间未收到交易结果通知的交易单,定时查询交易结果,直到获取到交易终态(成功/失败)为止。
事后:
出款对账:将我方交易流水和外部通道提供的交易流水对账单进行核对,并对差异部分进行处理。
其中两个最重要的功能模块是出款审核和出款对账,下面分别进行介绍。
二、出款审核
出款审核,主要审核的是资金是否充足。就是说,通道余额是否大于当前这笔交易的金额。
和收款交易不同,出款交易的资金方向是,从支付机构在通道的账户余额(客户备付金)扣款,付到用户/商户指定的银行卡/对公账户,因此,发往渠道前需保证通道余额足够。否则,余额不足会导致交易失败。
另一方面,如果外部通道处于维护中且没有其他备份通道可用时,可以通过关闭出款审核,控制交易暂时不外发,等通道恢复正常后再打开审核开关。 这样的好处是,业务层可以正常收单,不影响用户/商户发起出款请求;另一方面,也不会因为渠道故障导致大批量交易失败。
出款审核的方式:
按审核类型区分,可分为人工审核和系统自动审核。
- 人工审核是指,财务人工查看当前渠道余额是多少,判断交易金额小于渠道余额,则审核通过;否则等到余额足够后,再审核通过。为了减少人工操作,系统可自动按渠道维度,打包成若干个批次。财务只需要判断整个批次的出款金额是否小于渠道余额就可以了。
- 系统自动审核是指,当有交易发往出款审核模块时,系统自动查询当前渠道余额并判断余额是否足够,足够则审核通过该笔交易;如果不足,则继续处于待审核状态,等待余额足够了系统再审核通过。
当然,从审核效率上看,自动审核要远高于人工审核,还可以避免人为差错和节省人力。但是人工审核的优势是:财务可严格控制出款金额,并可人工控制出款优先级。
支付机构可根据自身需求,设计为全自动审核;或自动审核为主,人工审核为辅。
三、出款对账
出款对账是指支付机构将系统内部记录的交易流水与外部通道(如银联/网联)提供的交易明细对账文件进行核对,人工对差错部分进行处理。
交易对账是交易中非常重要的一环,为什么这么说呢?
首先先来看看出款核心、渠道网关、外部通道之间的交互流程:
可见,当外部通道和渠道网关之间交互出现问题时,如:外部通道没有成功收到支付系统的出款请求;或者支付机构的渠道网关没有接收到外部通道的交易结果通知,就会导致出款核心的交易单状态和通道的实际处理结果有差异。通过对账:
1. 可以核实我方记录为成功的交易在外部通道侧是否确实成功
2. 可以核实我方未收到交易结果或处理中的交易,在外部通道侧是成功或失败。
下面是出款对账的主要流程:
一般来说,交易处理结果都是以外部通道提供的对账文件为准,对账文件一般是以交易明细的形式呈现。有些外部通道只提供成功的交易明细,有些则会提供所有交易状态的交易明细。
T+1日,对账系统拿到T日的外部通道对账文件后,会和内部的T日交易流水进行核对,核对的方法一般是:取我方成功及处理中的交易与外部通道对账文件中成功的交易进行核对。核对交易后可能会产生差错。
差错类型包括以下三种情况:
1. 长款差错,包括两种情况:
-
我方交易状态为处理中,外部通道提供的对账文件为成功。
出现这种差错一般是因为我方没有收到通道的交易结果通知导致的。
对于这种情况,差错处理办法是,将该笔交易更新为成功。 -
我方交易状态为失败,外部通道提供的对账文件中为成功。
但这种情况一般不会发生,如果一开始通道返回了交易超时等非明确失败的错误描述,一般先当作交易处理中,再以对账文件为准更新交易结果。因为出款交易涉及到用户/商户账户余额变动,以及客户备付金流出,为避免资损,在交易状态更新上会比较谨慎。
如果通道一开始返回明确失败,对账文件中却告知成功,那么需要线下与通道核实。
2. 短款差错,包括两种情况:
-
我方交易状态为成功,外部通道的对账文件为交易不存在。
出现这种差错一般是因为,支付机构的会计日切时间和外部通道的有差异,导致外部通道T日对账文件未包含该笔交易。
对于这种情况,会先将该交易记为存疑,然后等到T+2日再与外部通道提供的T+1日对账文件进行核对。
如果最终核实外部通道端该笔交易是失败的,那么需要线下与通道协商,如已从备付金扣款,需退回对应金额到备付金账户。 -
我方交易状态为处理中,外部通道的对账文件为交易不存在或失败。
出现这种差错一般是因为我方没有收到通道的交易结果通知,或者是原本返回的交易结果为超时等非明确失败报错,我方为了保证资金安全,暂时认为交易处理中。
对于这种情况, 差错处理办法是,将该笔交易更新为失败。
3. 金额不符:
是指我方记录的交易金额和对账文件中金额不一致。这种情况基本不会发生,如果真的发生了,需要线下找外部通道查明原因了。
下一篇文章,将会介绍渠道网关和出款渠道,敬请关注哦。
我的文章也会同步更新在微信公众号,快来长按以下二维码,关注我的公众号吧~
如果你觉得文章对你有一点价值,拜托点击下方的“赞同”按钮呀,谢谢~