一个完整的支付系统包含了很多模块或子域,在跳过几家公司后,发现各家支付公司的系统,从逻辑划分上基本大同小异,有些名字不一样,但本质是一样的,因为大家基本都脱胎于银行,而银行就那么几家供应商。
当然,代码实现或技术栈差异非常大,比如RPC框架,数据库,业务流程,部署架构等,那些几十万高并发的处理能力恰好是这些技术栈的组合。
如果是单体应用,就是模块,如果是微服务,就是子域或子应用,本质都是逻辑划分,后面不做区分。
1. 整体概念
1.1. 简明产品架构图
说明:
这个图画得比较简单,但是已经涵盖一个支付系统最核心的产品能力。
上面部分是会员或商户感知的产品能力,包括门户、收银台,收单产品,资金产品等。下面部分是支付系统最核心的服务,用于支撑对外的产品能力。
1.2. 极简系统架构图
说明:
这个图很精简,但是已经能够说清楚支付系统最核心的模块划分。
一些复杂的支付系统可能还有外汇、额度中心、产品中心、卡中心等,甚至一个子系统可能被拆分为多个应用独立部署,比如收单结算就可以拆成收单和结算两个独立的应用。
1.3. 完整系统架构图
说明:
这是一比较完整的系统架构图,属于逻辑划分。在单体应用中就是一些模块,在分布式应用中就是一些子域、子应用或子系统。
2. 收单结算
收单结算域负责把商户的单收下来,并给商户发起结算。
收单模块负责把商户的单收下来。承担的收单产品包括有:线上收单,线下收单,担保交易、即时到账等,每个公司的商业策略不同,开出的收单产品会有差异。
结算模块负责给商户发起结算,有些公司把结算划归到出款中心,对接银企直连的渠道。
3. 资金产品
资金产品承担无买卖标的的纯资金转移能力。典型的有:充值、转账、提现、代发、红包等。
和支付的区分在于支付是有买卖标的(实物商品或虚拟商品),而资金产品没有。也就是在系统中没有买卖记录发生,但在线下可能有。
资金产品一般需要独立的牌照。
4. 收银支付
收银支付负责支付方式渲染和实际的扣款处理。如果细拆可以拆成收银核心和支付引擎。
收银核心负责渲染可用支付方式。包括查询账户是否有余额,查询营销是否有营销券,查询渠道网关是否有可用的外部渠道,最后组合成可用支付方式,供前端渲染。
收银核心就像一个大内总管,收到请求后,找商户平台核实身份,找合约平台核实权限,找会员平台核实用户身份,找收单看一下这笔单是否可以继续支付,找账务中心获取余额信息,营销看看有没有可用的券,找渠道网关看看没有可用的渠道,找额度中心看看是否超限额了,找风控问一下当前支付是否安全,找会员平台校验支付密码 ... ...
支付引擎负责真正的扣款或转账。有些公司叫支付核心,统一支付等。其本质是把资产从一个账户交换到另外一个账户。
如果是余额就调账务扣减余额,如果是红包就调营销做核销,如果是外部银行通道就调渠道网关。
5. 渠道网关
渠道网关负责去外部渠道扣款,通常还会提供渠道路由、渠道咨询等能力。
做得细的公司可能会把渠道核心和报文/文件网关单独拆成独立的子应用,其中渠道核心就提供渠道路由、渠道咨询、渠道开关等服务,报文/文件网关负责报文转换、签名验签等。
6. 会员平台
会员平台管理会员的生命周期,比如注册、注销、登录等。同时还提供核身服务(比如登录密码,支付密码,短信验证码等)、实名认证服务等。
7. 商户平台
管理商户的入驻、登录、交易管理等。
商户平台负责管理商户的生命周期,包括入驻签约、KYB、交易管理等。
8. 账务中心
资金账务:负责账户开立,记账等。
会计中心:会计科目管理、分录管理、日切管理、报表等。
对账中心:负责明细对账和资金对账。
账务负责账户管理,记账,对账等资金管理业务。里面还可以继续细分为账务核心,会计中心,清算结算等模块。
记账服务与会计中心简要关系
为便于理解,这里做了极简化处理。
记账服务负责记账,主要关注账户余额变动等;会计中心负责会计核算,主要关注点在于会计分录、科目汇总、会计报表等。实际情况会比这个复杂。
9. 结束语
上面画的只是逻辑架构,顶多算是PPT架构师或画图架构师,离真正的落地还很远,不过对于讲清楚支付整体结构,抓住主要脉络是已经足够的。意犹未尽的可以参考这篇“一图胜千言”:60张手绘高清大图理清支付系统最核心的概念。
这是《图解支付系统设计与实现》专栏系列文章中的第(51)篇。
深耕境内/跨境支付架构设计十余年,欢迎关注并星标公众号“隐墨星辰”,和我一起深入解码支付系统的方方面面。