dbaplus社群 02月06日
一文搞懂第三方支付系统架构设计,分分钟搭个支付宝!
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文深入解析第三方支付系统的技术设计,从支付发展历史、第三方支付概述等方面,全面介绍了支付系统的技术全貌。文章详细阐述了第一方、二方、三方、四方支付的概念,并着重介绍了第三方支付系统的角色拆分、账户体系、运作模式以及领域划分。通过对用户账户、商户账户和银行账户的分析,以及对充值、提现、转账等常见支付过程的模拟,帮助读者体系化地掌握支付系统的核心原理和运作机制。

🏦第三方支付系统至少需抽象出用户、商户、银行三种角色,并对应用户账户(User Account)、商户账户(Merchant Account)和银行账户(Bank Account),以承载资金的记录和流转。

💳用户账户行为特点是低并发、低交易频率但余额敏感;商户账户则是高并发、高交易频率但余额敏感度低;银行账户数量有限,金额流水庞大,并发量高,余额不敏感。

🔄第三方支付的运作模式涉及充值、提现、转账等环节,备付金账户和微信账户的变动净额总是相等,所有支付系统余额是所有备付金银行账户余额的映射,系统资金与物理资金需保持平衡,受国家监管。

🛒支付交互涉及用户、商户、银行,微信支付作为桥梁连接各方,实现充值、提现、支付、退款、结算等功能,这些功能在业务领域上可拆分为支付、退款、付款、结算等。

周成 2025-02-06 07:16 广东

全面地带你深入到支付系统的技术设计中,助你体系化掌握支付系统的技术全貌!



分享概要

一、序言

二、支付发展历史

三、第三方支付概述

四、结束语


支付方式的发展历程是怎样的?第一方、二方、三方、四方支付是什么?三方支付系统的背后支撑体系是怎样的?一个第三方支付系统由哪些部分组成?各个组成部分的作用原理是什么?本文作者将细致而全面地带你深入到支付系统的技术设计中,助你体系化掌握支付系统的技术全貌!


一、序言


1、背景


支付方式的发展历程是怎样的?第一方、二方、三方、四方支付是什么?三方支付系统的背后支撑体系是怎样的?一个第三方支付系统由哪些部分组成?各个组成部分的作用原理是什么?我会尽可能以通俗易懂的方式来组织结构,从客观现实需要来引出实现,让读者能够更容易理解这一金融基础设施的内部基本原理。


文章内容仅为个人观点,如有不同看法,敬请指正。


2、专业名词


本节预先介绍一些下文出现的重要专业名词(下划线标注),可快速浏览便于后续返回查阅。


专业名词名词解释
支付工具具有第三方支付能力的应用,如微信支付、支付宝都属于第三方支付工具。何为“第三方”在下文介绍,第三方支付工具后续简称为“支付工具”。
用户在支付工具中注册并开通和使用支付功能的人,就是该支付工具的用户。
商户接入支付工具,对用户提供服务并收款的机构或个人。
用户账户指第三方支付系统中为用户开具的账户,我们用User Account来代指,下文简称U账户。
商户账户指第三方支付系统中为商户开具的账户,我们用Merchant Account来代指,下文简称M账户。
备付金支付机构为办理客户委托的支付业务而实际收到的预收待付货币资金。可以简单理解为用户暂存在支付机构开具的银行账户中的资金。
系统资金指第三方支付系统中登记的账户余额资金,本质上只是一个计算机系统数字记录,并不具备法定货币效力。
物理资金指银行账户中存在的法定货币资金,可以近似认为是等同货币的真实物理资金。
支付狭义的支付仅指用户向商户划转资金,广义的支付还包括充值、转账等功能。
付款指资金从支付机构的备付金账户转出到目的银行账户。如用户将微信余额提现到自己的工行银行卡,此时资金从微信的工行备付金账户转账到用户的工行账户,这是付款的一种典型业务场景。
退款指支付机构将用户支付的款项从商户账户退回到用户账户或银行卡的过程。
结算是支付机构将商户账户中的资金,按照合同约定的时间和费率,收取手续费后转入商户的用户账户的过程。通常支付机构还会为商户提供自动提现到银行卡的附加功能。


二、支付发展历史


我们日常生活中使用的微信支付、支付宝都属于第三方支付应用,那么什么是第三方支付?为什么叫做第三方支付?第一方支付和第二方支付又是什么呢?还有第四方支付吗?我们不妨以支付历史发展进程来对它们进行一一阐述。


1、第一方支付


第一方支付如下图所示:



第一方支付即现金支付,从最早出现货币的时候,我们就开始并长时间依赖于这种支付方式。“第一方”特指买卖双方直接以法定货币进行交易,即一手交钱一手交货,资金不通过任何中间机构。随着商业的发展,大宗交易不再适合使用现金进行支付,第一方支付不再能满足需求。


2、第二方支付


第二方支付如下图所示:



第二方支付是依托于银行的支付方式。买卖双方通过银行来进行资金的划转,避免了大额现金交易带来的安全、携带、保存、清点、验证等问题,使得大额交易变得快捷、方便、安全和简单。由于银行操作存在一定的成本和使用门槛,因此第二方支付逐渐从日常生活和小额市场的支付中淡化并退出,转而在一些巨额的交易和政策性的金融活动中发光发热。


3、第三方支付



第三方支付是指具备一定实力和信誉保障,并获得国家颁发运营牌照的独立机构,采用和各大银行签约的方式,通过与银行相关接口对接而促成交易的网络支付模式。我们熟悉的微信支付和支付宝都属于第三方支付工具。第三方支付工具随着移动设备+互联网的大范围普及而迅速占领日常生活中的各种交易场景,逐渐取代了大部分的中小额现金交易。


4、第四方支付


第四方支付实际上是聚合了多个第三方支付、合作银行的渠道接口,为商户提供一站式的支付解决方案:



第四方支付的优势在将多家第三方支付聚合在一起,给商户提供了一站式的支付解决方案,同时便利了商户和用户。但第四方支付目前缺乏政策资质,存在较大的资金安全风险。


三、第三方支付概述


本章将对第三方支付进行整体性的描述,包括角色拆分、账户体系、原作模式以及领域划分等。


1、领域角色


回到我们第三方支付的介绍图中:



上图中涉及到了4个角色:用户、商户、银行以及第三方支付工具本身。由此可见,第三方支付系统必须至少在内部抽象出3种角色来为用户、商户和银行服务。由于支付主要涉及到的是资金的记录和流转,适合以账户形式承载,因此延伸至第三方支付系统中的3种账户。


2、三种账户


账户是支付机构内部为其服务对象(用户、商户、银行等)创建的物理记录(类似于表格),这些记录包含了对象的关键信息,如机构为对象分配的唯一 ID、对象的余额、交易的流水、账户状态等等。可以说账户是支付机构识别服务对象的根本,所有服务对象都必须要有账户。


根据第三方支付的服务对象,我们将抽象出三种账户:用户账户(User Account)、商户账户(Merchant Account)以及银行账户(Bank Account)。


1)用户账户(User Account)


一个用户的账户需要记录什么信息呢?需要有一个唯一的账户 ID 避免记录混乱,需要为用户记录余额,需要记录账户的资金变动过程(流水)。如下图所示:



用户账户的行为特点是什么?



这些特点是很直观的感受,但对我们后文深入的介绍会有很大影响,此处先做了解和铺垫即可。


2)商户账户(Merchant Account)


商户账户需要记录的最基础信息同用户一样,也是 ID、余额和流水。



商户账户的行为特点是什么呢?



3)银行账户(Bank Account)


Bank 账户映射的是各大银行,其账户如下所示:



银行账户的特点是什么呢?



4)对应关系


上述3种账户和第三方支付角色的对应关系是怎样的呢?是直接一对一吗?如下图所示:



用户只拥有用户账户就足够了,而商户则往往同时拥有商户账户和用户账户,银行则只对应于银行账户。


为什么商户还额外拥有用户账户呢?这是出于资金管理的需要。商户账户中的资金并非全部归属于商户本身,其中有一部分是第三方支付机构将会收取商户的佣金。只有在支付机构收完佣金后的净额才归属于商户本身,才能任其自由使用。


简而言之,商户账户中的资金商户无法直接动用,需要在支付机构收取完佣金后结转到商户的用户账户中才能自由提取。这其实就是结算过程,后续结算卷会有专门的文章讲解,此处仅做简单了解即可。


3、切换视角


以一个常见的菜市场买菜的场景为例,在用户视角,支付过程如下:



用户挑选好蔬菜后,打开微信支付,扫描卖家二维码,输入金额和密码完成支付,拿走货物,用户角度的支付过程到此结束。但从系统的角度来看,支付仅仅只是整个交易链路中的过程之一。在交易的事前事后还需要很多其他过程的协助。


让我们跳出用户视角,思考一些深入的问题: 



由此可见,想要真正了解支付,我们的关注点就不能只停留在用户的角度。


4、运作模式


支付机构本质上还是资金相关的操作,我们知道第三方支付涉及用户、银行和支付机构本身。接下来让我们尝试用上文的账户体系来分析一下常见的支付过程。


1) 初始状态


我们将以一个典型例子来说明,涉及对象的初始状态如下图所示:



涉及的用户有两个,张三和李四,他们分别有自己的微信账户和银行账户,微信也在银行开具了自己的银行账户,称为备付金账户(专业名词章节介绍)。他们各自的余额如上图所示。


2)用户充值


现在假设张三想要通过自己的银行卡充值20元到微信余额,资金变动如下图所示:



首先是张三的银行账户向微信备付金账户划扣20元,成功后微信则给张三的微信余额加20元,充值完成。


PS:用户在微信中绑定了银行卡,因此不需要用户去银行转账,而是通过微信与银行间的接口来自动完成该笔资金的划扣。


3)用户提现


假设李四想要将微信中余额提现10元到自己的银行卡,则资金变动如下:



首先将李四的微信余额减去10元,然后微信支付调用银行接口,从微信备付金账户中转账10元到李四的银行卡中,提现过程结束。


PS:这里减去李四微信余额时并不是直接减掉,而是先冻结,等银行侧成功转账后再实际减去。冻结和解冻的细节和原因将在付款卷中详细介绍。


4)用户转账


假设张三要给李四转账20元,则资金变动如下图:



此时,张三的余额先减20,然后李四的余额加20,转账完成。


PS:微信转账有确认收款的过程,如果我们要用上述账户体系来完成这个功能,可以怎么做呢?这个问题将会在支付卷中探讨。


5)资金变动汇总



从上面的表格我们注意到:备付金账户和微信账户的变动净额总是相等的。



因此,我们可以认为所有支付系统余额是所有备付金银行账户余额的映射。我们称微信余额为系统资金,银行余额为物理资金。如果物理资金小于系统资金,则说明物理资金被挪用,可能会导致用户无法提现。国家会监管持牌支付机构的备付金使用情况,避免这样的情况出现。


5、支付交互


上一节介绍了用户账户、银行账户之间的一些常见交易类型,本节将介绍涉及商户账户的支付过程,如下图所示:



用户和商户也都拥有自己的银行账户和微信支付账户。微信支付作为中间桥梁,将银行、用户、商户连接起来,共同构成了整个交易网络。从交互图中可以看出,支付系统具有很多重要的功能: 



上述功能中,有的只涉及用户,如充值和提现;有的同时涉及用户和商户,如支付、退款;而有的只涉及商户,如结算。


6、领域拆分


让我们对上面的各种交易类型做一个整合,在业务领域上进行拆分和归纳,如下图说是:



下面对这些领域及其职责进行简单说明:



各个领域提供基础能力,并服务各种各样的业务场景。有的业务场景需要多种领域能力合作完成,如结算业务需要依赖于付款的提现能力。



四、结束语


在上文的介绍中,我们说明了几个重要的问题: 



在本文中,我们从全局的角度简单说明了一个支付系统的构成和运行过程,并对第三方支付领域做了拆分。后续文章将会对每个领域进行更详细的探索和理解,包括其主要业务流程的实现思路以及一些有趣的问题探讨。


作者丨 周成

来源丨公众号:腾讯云开发者(ID:QcloudCommunity)

dbaplus社群欢迎广大技术人员投稿,投稿邮箱:editor@dbaplus.cn


阅读原文

跳转微信打开

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

第三方支付 支付系统 账户体系 技术设计
相关文章