跟着图走,学支付:在线支付系统设计的图解教程

2,367 阅读14分钟

这是《百图解码支付系统设计与实现》专栏系列文章中的第(1)篇。

本系列文章是偏实战的,本章内容讲清楚支付系统是什么,主要解决什么问题,部分核心流程,以及一些后面会频繁使用到的术语。至于支付起源,在线支付发展历程等知识,感兴趣的同学可以参考网络上其它文章或书籍。

专栏地址: 百图解码支付系统设计与实现

1. 基本概念

下面描述的概念大部分做了极致简化,只是用于入门,对于理解概念应该是够用的。真实的实现会复杂非常多,后面的系列文章会展开做详细说明。

后面的描述中,经常混着用“支付系统”、“支付平台”,本质是一个东西。在内部来说,就是一个支付系统,但从和外部机构交互来说,就是一个支付平台。

1.1. 最简支付流程

说明:

  1. 这是一个最简化的支付流程。真实的交互比这个复杂得多,单收银台渲染就可以写一整篇文章。但对于讲清楚支付系统的作用,已经足够。
  2. 从图中可以引申出支付系统最核心的作用:帮商户收钱
  3. 有支付当然就有退款、撤销等逆向操作,复杂的跨境支付还会有外汇交易,跨境结算等业务。这些全部在后面的系列文章中细讲。

1.2. 最简清结算流程

说明:

  1. 这里画的是信息流。
  2. 银行和支付平台之间是机构对机构的关系,通常使用清算概念,因为金融机构之间大部分情况下会有独立的清算机构做清算服务。
  3. 支付平台和商户之间,通常使用结算概念,由支付平台直接打款给商户。
  4. 上面画的是结算到商户开在支付平台的内部账户余额,所以需要商户手动提现,支付平台通常也支持直接结算到卡,这样就不需要商户手动提现。
  5. 清结算三个字还有另外一层含义:清分 + 结算。前者是把钱算清楚,后者是真实打款。

1.3. 最简本对本收单流程

说明:

  1. 所谓本对本收单,就是指商户的商品标价币种、向支付系统的下单币种、用户支付币种、商户结算币种都是同一个币种。不涉及到外汇交易。
  2. 一个中国人拿着中国招商银行信用卡在淘宝或京东买东西,就是标准的本对本收单。

1.4. 最简跨境收单流程

说明:

  1. 所谓跨境收单,就是结算给商户的币种和用户支付的币种不一样,需要经过外汇机构换汇。
  2. 在扣款EUR成功后,支付平台会调用外部的外汇机构进行锁汇(HA)。
  3. 在银行清算后,支付平台再调用外部的外汇机构进行真正的换汇(TA)。
  4. 最后支付平台结算给商户USD。

如果换成时序图,如下:

1.5. 最简信息流与资金流

说明:

  1. 用户在支付平台充值10元,支付平台向银行发起扣款请求,这些指令操作归属于信息交互,属于信息流。
  2. 真实资金流:银行账户余额的变动。比如:银行在内部把用户的余额减10元,给支付平台备付金账户加10元。
  3. 虚拟资金流:支付平台内部账户余额的变动。比如:支付平台内部把银行应收账户加10元,给用户余额账户加10元。
  4. 为什么会有真实资金流和虚拟资金流之分?因为我们真正能拿到钱的地方是银行,在支付系统内看到的只是一个数字,如果想变成真实世界的钱,还得发给银行提现。

1.6. 跨境收单的协议关系

说明:

  1. 这只是跨境收单的一种协议关系,真实场景存在多种形态。
  2. 上述的收单机构是持牌的,但是没有跨境结算的能力,所以需要委托有跨境结算牌照的金融机构代为处理跨境结算业务。
  3. 跨境电商平台只是一个商户平台,没有收单资质,所以需要委托收单机构给它下面的供应商结算打款。
  4. 剩下的协议关系都是一目了然的,只是我们日常没有注意。比如用户和电商平台之间在注册时就会有会员协议要签署。
  5. 特殊的情况下,一些实力雄厚的机构,比如蚂蚁或财付通,下面会成立多个实体(不同的法律主体),然后用不同的实体去申请不同的牌照(收单、银行、外汇、跨境代发等),这样表面上全部是一家公司搞定,但是实际的协议关系仍然是上面这样的,在各实体之间仍然需要签署各种协议。
  6. 如果是本对本收单场景就简单很多,没有外汇和跨境结算这一层关系,如果跨境电商的货品全部是电商实体自营的,那就更简单,没有供应商委托结算的协议。
  7. 一般电商平台在没有牌照情况下是不能开设余额账户的,如果电商想开通余额,可以委托第三方有牌照的公司托管(通常也是收单机构,收单机构一般会同时申请PA、PG牌照),这种情况下,电商平台和收单机构还会签署账户委托协议。

1.7. 跨境资金方案

说明:

  1. 这是一个典型的跨境资金流案例。用户支付USD,收单机构收到的是USD,但是需要结算RMB给中国境内的商户。
  2. 收单机构(也就是支付平台)需要先将USD兑换成CNH(离岸人民币),再由入境代发机构把RMB结算给中国境内商户。这是所谓的“结汇入境”。
  3. 如果采用“入境结汇”的方式,则收单机构直接结算USD给商户在境外的银行账户中,由商户以USD汇入境内,再兑换成RMB。或者收单机构先把USD汇入境内备付金账户,再兑换成RMB,然后再结算RMB给中国境内商户。
  4. 以上这些不同的资金处理方案,统称为资金方案。

1.8. 简明复式记账

金融机构的记账一定是基于复式记账法。下面以用户通过支付平台使用银行支付500块为例做个简要说明。

假设:支付平台使用CMB做为收单行,在CMB开设有备付金账户。

涉及的支付平台内部账户:

账户类型账户备注
借记账户应收-渠道-CMB应收归属借记账户
贷记账户应付-过渡-网关过渡户应付-平台托管-商户待结算应付-平台托管-商户余额手续费收入-商户-消费应付归属贷记账户手续费意味着所有者权益增加,归属贷记账户

记账步骤:

阶段操作账户金额
第一步资金从渠道到网关过渡户借:应收-渠道-CMB贷:应付-过渡-网关过渡户500
第二步扣除手续费借:应付-过渡-网关过渡户贷:手续费收入-商户-消费10
第三步网关过渡户到商户待结算账户借:应付-过渡-网关过渡户贷:应付-平台托管-商户待结算490
第四步结算给商户借:应付-平台托管-商户待结算贷:应付-平台托管-商户余额490

说明:

  1. 支付系统的记账一定是复式记账法。内部开设了很多账户和科目。

【借记类】账户:资产,应收款等;

【贷记类】账户:负债,所有者权益,应付款等;

  1. 借贷简要公式(不太严谨,但是够用):

【借记类】账户(如资产,应收款),【增加】为【借】,【减少】为【贷】;

【贷记类】账户(如负债和所有者权益,应付款),【增加】为【贷】,【减少】为【借】;

  1. 复式记账的专业书籍很多,这里只摘录几个重要的说明:

复式记账法定义:对每项经济业务按相等的金额在两个或两个以上有关账户中同时进行登记的方法。

记账原则:有借必有贷,借贷必相等。

记账依据:会计恒等式:1. 资产 = 负债 + 所有者权益;2. 利润 = 收入 - 费用。

账户:具有一定格式和结构,能够用来连续、系统、全面的记录反映某种经济业务的增减变化及其结果。

科目:同类财务交易的分类,比如资产、负债、所有者权限、收入或费用等都属于科目。一般科目会分为多级。

账户和科目的区别:科目只有名字,账户包括结构和格式,每个账户对应一个特定的科目。

2. 概要设计

2.1. 简明产品架构图

说明:

  1. 这个图画得比较简单,但是已经涵养一个支付系统最核心的产品能力。
  2. 上面部分是会员或商户感知的产品能力,包括门户、收银台,收单产品,资金产品等。下面部分是支付系统最核心的服务,用于支撑对外的产品能力。

2.2. 极简支付系统架构图

说明:

  1. 这个图很精简,但是基本已经够用,应付本对本交易这种简单的业务是完全没有问题的。
  2. 一些复杂的支付系统可能还有外汇、额度中心、产品中心、卡中心等,甚至一个子系统可能会拆分为多个应用独立部署,比如收单结算就可以拆成收单和结算两个独立的应用。

2.3. 完整支付系统架构图及各子系统简介

说明:

  1. 这是一比较完整的系统架构图,属于逻辑划分。在单体应用中,就是一些模块,在分布式应用中,就是一些子域、子应用或子系统。
  2. 以下是各子系统简单介绍:
    1. 开放网关:主要对接商户,比如下单、支付等接口入口。通常要求有比较高的安全性。部分公司可能会把移动端网关、PC门户网关、商户通知等能力集成在开放网关,也可能会单独拆出部署。
    2. 收单结算:负责把商户的单收下来,并给商户发起结算。承担的收单产品包括有:线上收单,线下收单,担保交易、即时到账等,每个公司的商业策略不同,开出的收单产品会有差异。
    3. 资金产品:承担无买卖标的的纯资金转移能力。典型的有:充值、转账、提现、代发。和支付的区分在于支付是有买卖标的,而资金产品没有。也就是在系统中没有买卖记录发生,但在线下可能有。
    4. 收银核心:渲染可用支付方式。包括查询账户是否有余额,查询营销是否有营销券,查询渠道网关是否有可用的外部渠道,最后组合成可用支付方式,供前端渲染。
    5. 支付引擎:负责真正的扣款或转账。有些公司叫支付核心,或资产交换。个人认为资产交换更合适,因为无论对于支付、退款、充值、转账等各种交易,本质都是把资产从一个账户交换到另外一个账户。
    6. 渠道网关:负责去外部渠道扣款。通常还会提供渠道路由、渠道咨询等能力,做得细的公司可能下面再细分为渠道产品,报文网关和文件网关。
    7. 会员平台:管理会员的注册、登录、密码、实名认证等。
    8. 商户平台:管理商户的入驻、登录、交易管理等。
    9. 产品中心:管理平台对外提供的产品能力。一般大的支付系统才会独立成一个子系统。
    10. 资金账务:负责账户开立,记账等。
    11. 会计中心:会计科目管理、分录管理、日切管理。
    12. 对账中心:负责明细对账和资金对账。
    13. 营销平台:提供满减、红包等营销工具。
    14. 风控平台:针对账户和交易,提供实时、离线风控,控制平台的风险。
    15. 运营平台:订单管理、渠道管理、产品管理等综合运营工具。
    16. 数据平台:主要用于数据汇总和分析。分布式部署后,数据都在各子系统中,需要汇总到数据平台用于经营分析。
    17. 卡中心:负责管理用户的绑卡信息。需要经过PCI认证。
    18. 额度中心:累计用户、商户的额度,通常有日、月、年等各种分类。
    19. 外汇平台:负责外汇报价和兑换。
    20. 流动性与调拨中心:一些跨境支付公司,在多个国家多个银行有头寸,各头寸之间经常需要做流动性管理,提高资金利用率。
    21. 差错中心:负责差错处理。比如渠道退款失败,需要通过其它的方式退给用户。
    22. 拒付中心:处理用户的拒付和举证。在跨境支付场景下,信用卡用户联系发卡行说卡被盗刷或商品没有收到,或商品有问题等,拒绝支付给商户。

2.4. 核心系统依赖图

说明:

  1. 图中画得比较清楚了,没有太多需要补充的。
  2. 其中红色线为支付主链路。

3. 常见术语索引

参考“传送门”中的“行业黑话与术语”篇。

4. 结束语

本章主要讲了一些支付相关的基本概念,支付系统的概要设计框图,部分核心流程,以及一些常见的术语,让同学对支付系统有一个整体的理解。

下一章节将围绕面向商户的收单和结算,请清楚如何给商户收单,又是如何结算给商户的。

5. 传送门

支付系统设计与实现是一个专业性非常强的领域,里面涉及到的很多设计思路和理论也可以应用到其它行业的软件设计中,比如幂等性,加解密,领域设计思想,状态机设计等。

在《百图解码支付系统设计与实现》的知识宇宙,每一篇深入浅出的文章都是一颗既独立但又彼此强关联的星球,有必要提供一个传送门以便让大家即刻到达想要了解的文章。

专栏地址 百图解码支付系统设计与实现

领域相关

行业黑话与术语:支付行业黑话:支付系统必知术语一网打尽

基本概念与概要设计:跟着图走,学支付:在线支付系统设计的图解教程

收单结算设计:支付交易的三重奏:收单、结算与拒付在支付系统中的协奏曲

技术专题

与数据库自增ID不同的业务ID:交易流水号的艺术:掌握支付系统的业务ID生成指南

签名验签:揭密支付安全:为什么你的交易无法被篡改

加密解密:金融密语:揭秘支付系统的加解密艺术

日志格式设计规范:支付系统日志设计完全指南:构建高效监控和问题排查体系的关键基石

幂等性设计:避免重复扣款:分布式支付系统的幂等性原理与实践