图3:收款交易范式
上图就是收款的时序图,大家可以结合我的介绍体会下这个处理结果。我就不做赘述了。
2)付款范式(钱抓手里,没有结果,钱就不付)
付款的资金风险就更大了,因为跨行付款即结算钱会直接到别人口袋里面。所以付款的要点就是“把钱抓在自己手里,在渠道没有明确结果之前我就不付款出去”。
基于这个原理,我们来看下图,在付款流程中我们先把客户账户上的付款金额扣下来,直到渠道支付成功后我们才更新本地状态。如果遇到失败,我们就需要通过冲正交易再把钱给客户退回去。
这种先扣款,再转发的方式能够牢牢地把资金抓在自己手里,减少资金损失产生的风险。如果是面对比较大金额的付款我们一般会采用“多级审核”的方式,通过增加人工确认节点来保障资金支付的准确和安全。但是底层的支付流程和结算逻辑是始终不变的。
图4:付款交易范式
四方或企业没有线上账务系统怎么处理?
其实更简单,去掉账务处理部分,在处理中状态下不允许客户再次支付就可以了。结算资金通过事后的账实核对完成财务系统入账即可。
1.3.2 跨系统三态
现在我们普遍采用了网络的方式将不同的系统连接在一起,由于网络通讯存在超时和异常中断情况,因此所有需要跨系统进行处理的业务都要把这种异常情况考虑在内,所以,涉及跨系统的业务处理都要设计“成功”、“失败”和“处理中”这三个状态,保持各系统间信息是一致的。这三个状态按他生命周期又分为了“终态和运行态”。
1)终态:
终态就是生命周期结算的状态。成功、失败均为终态,在外部支付渠道没有返回结果前均不能推定为终态。
2)运行态:
跨系统支付时需要将状态置为处理中,有明确结果才能置为“终态”。
“处理中”这个状态虽然能够保障资金的安全,但是效率太低,也容易引发用户的恐慌和投诉。因此,人们想到了下面这个方法。
1.3.3 异常查退合一
异常就是“处理中”不明账务结果,需要通过补偿措施来同步内外部系统账务信息,这样才能让交易尽快完成。要同步交易结果,一般是通过订单信息和账务结果两种方式来处理的。
1)订单查证:
这种方式以外部订单状态为准更新本方状态。当出现“处理中”的订单时,系统会自动运行一个查询服务去渠道查询处理结果,并将结果与本地的订单进行更新和同步。
2)账务冲退:
收款场景下,这种方式以本方账务结果为准,让渠道一侧与本方保持一致。一般我们都是发起撤销和退款。
1.3.4 差错三账调平
前面介绍的都是在交易发生时的处理方式,如果联机交易一直无法得到解决,那就要采用事后处理的方式。日终对账之后产生的差错需要“以渠道为准”通过三种账务策略进行调平处理。
- 补账:以渠道为准本方补计账务或者更正订单
- 冲正:以渠道为准,本方账务取消或者逆向记账。
- 挂账:为了不影响正常业务的结算,有些异常账务先挂账到内部户,后面人工处理后进行核销。
关于差错处理的详细策略,我们会在“结算对账”的文章中单独介绍。
二、交易系统介绍基于以上的交易规则我们再来看下交易系统是如何设计的。我们先来看下他在我们之前的业务架构流程中属于什么位置,上下游协作系统又有哪些。
图5:交易在架构中的位置
从上图中我们可以看到,交易处于实时链路的中心位置,它负责接收网关发来的支付请求,将业务信息转化为支付指令分别与“客户系统”、“收银台”、“支付引擎”进行交互完成最终的支付,由此我们可以看到
1)交易即支付
交易系统负责订单信息和支付指令的转换,并且他也负责支付引擎的调用,因此交易与支付是相伴而生的。
2)交易场景化
交易接收来网关转发的业务系统的请求,因此业务系统是什么样的场景,交易系统就要配套的交付服务流程来负责处理。由此可见交易是一个场景化的模块。
3)交易可扩展
我们常用的支付交易包含了“收款、分账、转账、付款”,这些都是基础交易功能,支付交易并不局限于此。
真实的支付交易系统既要实现标准化也需支持可扩展,“消金交易、B2B交易、保证金交易,分销交易”等都只是子交易模块而已,只要和业务系统划分清楚边界,都可以在交易层来扩展。
1. 业务架构
交易系统在整个支付架构中处于承上启下的作用,它从接收订单到订单完成进行全链路的管理。我们的交易服务提供的是“收款、分账、余额、付款”四个基础服务,服务通过交易管理来进行配置,通过订单系统来登记交易和结算信息。整个交易中心分为“接口、服务、接出”三部分,下面我们来一一介绍。
图5:交易中心业务架构
1)交易接口
这一层是对外提供的交易服务接口,收单网关、会员网关、收银台、客户系统都可以通过这些接口来调用交易完成支付处理。
2)交易服务
按业务场景分模块提供对应基础交易服务,这些交易服务根据交易类型按不同的交易链路和流程进行处理。
3)交易接出
根据交易处理流程的调度,对支付服务、客户系统等内部系统进行调用,完成从“支付、订单、算费、验证、回调”等一系列的操作,最终实现用户的收付款和结算处理。
2. 交易功能
交易中心的整体功能包含了“收款、分账、余额”和“付款”三部分基础交易,这些基础功能构成了现在基于电商场景的支付交易。当然这些基础功能也是具有很好的扩展性的,面向企业场景可以提供包装出B2B支付,面向消金场景可以包装出消金支付,面向投资理财可以包装出理财支付产品。怎么包装会在后面的场景案例中单独介绍,这里我们先来熟悉最基础的交易产品。