我们人生中最艰巨的任务就是自我分析,试图领悟我们的人性并化解其中的一切纷争。From 罗伯特·麦基《故事》
上面这段话,其实跟本文没太大关系,只是最近关于这一点感受颇多,所以就放上来了。下面就进入正题。
1 背景
因为要准备支付相关的产品经理的面试,遂在周末找了些资料,学习了一下。然后深刻感受到支付的基础框架是多么的复杂,目前只了解了表层,其各系统之间的联系以及实现的技术还有待之后更进一步去了解。
学习的资料来源:
- 一份不知道从哪里流出的PPT《与阿里金融交流——支付宝架构与技术》,署名是支付宝(中国)网络技术有限公司,时间是2010年3月3日。
地址:http://wenku.baidu.com/view/c141e65465ce05087732131e - 还有来自知乎的一些解答,推荐知乎上一位大牛“梁川”,描述是一位互联网金融从业者。
地址:https://www.zhihu.com/people/chuanliang
所以由于资料年限的限制以及资料来源的分散性,只能作为大致的参考。但也相信,一些基本架构还是变化不大的。
2 支付流程的典型处理模式
先从整体上讲讲我的理解(学习ppt之后):支付是怎样一个流程。
- 互联网商户通过API平台访问到支付平台。
- 连接成功后,将订单信息传给支付平台,进行订单处理。
- 订单在收银台进行支付方式的选择,或者直接进入支付环节。
- 进入支付环节就主要是后端的工作,进行支付处理。
- 支付处理后,要分别进行清算处理和财务会计。
- 清算处理会通过通信前置连接到银行的支付清算网络。同时,清算处理和财务会计处理之后会进入到核算处理。
简单来说,支付流程的关键环节就是以上几步。如下图:
3 关键业务系统
在支付架构里最为关键系统是公共服务中的交易系统和基础业务当中的资金处理平台。其中交易系统对不同属性的订单进行处理,并且对接到不同的后续系统(如支付、红包、产品账、收费等);而资金处理平台,我的理解是对产品内外的资金流通进行处理的一个平台。
3.1 交易系统
交易系统也是一个复杂的系统。这块对于我(技术小白)来说理解上有些复杂。其能力是规定了交易的流程以及规则,从而对交易的情况进行处理,并能将交易的结果反馈到其他地方。其中重要的就是资金的处理。如下图:
概念解释:
1. 流程引擎
流程引擎是工作流引擎的核心,是关系到流程如何正常运转的核心组件,一个流程运行的效率、功能以及正确性均由工作流引擎实现。
2. 规则引擎
规则引擎是网关节点的规则实现与人工节点的任务分配规则的实现。
3.2 支付清算
在交易系统中进行处理之后,产生支付请求就进入到支付系统。支付系统内有各种支付场景的协议,对应协议发出支付指令就进入到财务系统和清算系统。支付指令进入到清算系统就产生清算指令,进行两种方式的处理:文件处理和实时处理。实时处理就对应着各种与银行接入方式,常见的有网银接入、卡通接入以及银企直连。如下图:
一个疑问
1. 为什么从支付指令到清算指令之间同时存在着同步清算处理和异步清算处理?
期待大牛来答答疑。
3.3 财务会计系统
财务系统主要是一个记账子系统,实时记录每一条财务交易流水信息。而且这里所使用的账户是分户账户(外),方便用户的财务实时查询,有完整的信息。而会计系统则分为分录子系统和日终子系统。分户账户(外)的流水信息通过消息系统异步准实时登记到分录子系统中的会计分录流水信息。然后同步到分户账户(内)中。日终子系统就根据分户日余额,在日切时间进行日结,对所有进行科目汇总。
一些疑问和概念:
1. 为什么要设置分户账户(内)与分户账户(外)?
在知乎上查了相关资料,知乎大牛梁川如是说:
分户账户(外)是外围业务系统的账户系统,采用单式记账法。
分户账户(内)是最核心的账户系统,采用复式记账法。
这样做的优势:
1)业务需要,可以保证用户实时查账,也能保证对创新业务进行定制。
2)系统性能及扩展性需要,分户账户(内)由于涉及会计分录等过程,在并发量大的情况下,采用实时记账会造成数据库资源的锁等待、热点账户等问题。
3)财务平衡检查需要。
也有比较简单的解释:
分户账户(外)是信息流同步;分户账户(内)是资金流同步。
分户账户(外)是权责发生制;分户账户(内)是收付实现制。
知乎原题目和回答链接:https://www.zhihu.com/question/34246970
2. 会计分录
会计分录指根据经济业务的内容指明应借、应贷账户的方向、账户名称及其金额的一种会计分录。
3. 锁等待
指的是程序在执行的过程中,点击确定或保存按钮,程序没有响应,也没有出现报错的现象。
4. 热点账户
热点账户即系统中,被高频繁地进行资金的进出操作,频繁出现加锁解锁操作的账户。
3.4 核算系统
经过会计系统的分录以及汇总等操作之后,将这些数据通过消息系统异步准实时登记到流水登记子系统中的入账流水登记表里。此外,银行流水登记系统内有关银行流水的数据也登记到流水登记子系统内银行流水登记表里。两者一起进入到核算处理子系统内,进行流水核算处理,然后进行归档,最后进行银存待结转统计。
一些问题和概念:
1. 会计系统里哪一部分的信息与流水登记子系统里的入账流水登记相对应?
详细说明下问题,会计系统中存在会计分录流水,是这部分信息直接异步准实时登记到入账流水吗?还是说在日终子系统中科目汇总后所形成的报表内容异步准实时登记到入账流水?如果是后者,那是否说明核算中心是以日为单位进行得?
也期待某大牛能够答答疑。
2. 结转
或称为期末结转,指期末结账时将某一账户的余额或差额转入另一账户。
3.5 关键业务系统大图
将上述4个关键业务结构进行了整合,但里面的银行和消息系统仍然各自分离在外。还有待进一步探究其结构。图如下:
4 小结
初步接触支付产品,已经感受到其复杂性扑面而来。其后端所涉及的各模块内容都需要时间去好好深究,特别是技术层面,需要多多去接触和了解。期待有朝一日能够入门。
后续,准备阅读知乎大牛梁川所推荐的一本为数不多的介绍第三方支付的书籍《第三方电子支付探索与实践》。
以上,
请多多指点。
谢谢~