通常我们在开发手机 app 或网站时都会涉及到支付相关的业务场景,用户只需要简单的点击下按钮并输入密码,就完成了整个支付过程。那么今天我们就来简单聊一下一个完整的支付系统由那些功能组成以及设计时需要考虑的因素。
我们先来看下支付过程:
从上图中我们可以看出真实的资金流向。首先当用户产生支付行为时,资金从用户端流向支付系统,退款时则相反,从支付系统回流至用户端。因此在整个交易过程中用户端与支付系统是双向资金的流动方式。对于支付系统而言,资金有进有出。
从支付系统到商户端就比较简单了,在清算完成后支付系统负责将代收的资金结算给商户,通常结算的操作可以在线上来完成(采用支付公司代付接口或者银企直连接口来完成),也可以由公司财务通过线下手工转账的方式来完成,因此这种资金流动的方式是单向的。出于资金安全考虑,大多数公司通常这部分采用线下方式实现。
真实的资金流由支付公司按照约定期限(通常 T+1 )结算到平台公司对公账户中,然后再由平台公司再按照交易明细进行二次清算后结算给对应的商户。
为了能把这件事说清楚,我们先来看个生活中的例子:比如今天我去华堂商场买个 New Balance 的鞋子,我在拿到商家开出的小票后去了收银台刷卡交钱,然后再将小票的副联交给那个出小票的业务员(商户),这时我就可以拿着鞋子走人了。此时华堂的收银台就是我们上面说的支付系统,而 New Balance 就是商户。当我完成交易时钱首先是由华堂代收了,然后它再按照与商户约定的固定周期将资金结算给 New Balance 商户。这样是不是好理解多了?
到此,支付的业务场景我们已经清楚了,现在我们看看作为一个支付系统需要由哪些功能模块组成呢?
一个完整的支付系统应包括的功能:
- 应用管理: 同时支持公司多个业务系统对接。
- 商户管理: 支持商户入驻,商户需要向平台方提供相关的资料备案。
- 渠道管理: 支持微信、支付宝、银联、京东支付等多种渠道。
- 账户管理: 渠道账户管理,支持共享账户(个人商户)及自有账户。
- 支付下单: 生成预支付订单、提供退款服务。
- 通知模块: 处理第三方支付渠道的异步通知,并将处理结果同步至业务系统。
- 对账处理: 实现支付系统的交易数据与第三方支付渠道交易明细的自动核对(通常T+1),确保交易数据的准确性和一致性。
- 商户清算: 计算收款交易中商户的应收与支付系统收益。
- 商户结算: 根据清算结果,将资金划拨至商户对应的资金帐户中。