第三方支付系统架构设计
第三方支付是指具备一定实力和信誉保障,并获得国家颁发运营拍照的独立机构,采用和各大银行签约的方式,通过与银行相关接口对接而促成交易的网络支付的模式。我们熟悉的微信支付和支付宝都属于第三方支付工具,第三方支付工具随着移动设备+互联网的 大范围普及而迅速占领日常生活中各种交易场景,逐渐取代了大部分的中小额现金交易
第四方支付实际上是聚合了多个第三方支付,合作银行的渠道接口,为商户提供一站式的支付解决方案:
账户是支付机构内部为其服务对象(用户、商户、银行等) 创建的物理记录(类似于表格),这些记录包含了对象的关键信息,如机构为对象分配的唯一ID、对象的余额、交易流水、账户状态等等,可以说账户是支付机构识别服务对象的根本。
用户账户: User Account
商户账户: Merchant Account
银行账户: Bank Account
用户账户:
一个用户的账户需要记录什么信息呢? 需要有一个唯一的账户ID 避免记录混乱,需要为用户记录余额,需要记录账户的资金变动过程(流水)
用户账户的行为贴点是什么?
1、很少并发: 同一个时刻通常只会发生一笔交易,因为支付需要用户手动去操作
2、交易频率比较低: 一个普通用户通常一天只会支付数笔
3、余额敏感: 用户对自己的账户余额以及其变动非常敏感
商户账户
1、高并发: 同一个时刻会有很多用户向同一个商户支付、促销活动更甚。
2、交易频率高: 一个商户一天的交易可能会非常大
3、余额变动不敏感: 由于商户伴随着用户的不断支付,余额会快速变化,因此商户本身对该账户余额不敏感
银行账户
1、数量有限: 银行账户映射的是各大银行,因此数量有限。
2、金额流水庞大: 一个大型支付机构和银行的资金交往往来都是以亿为单位,金额特别庞大
3、并发量高: 拥有同一个银行卡的用户非常多,这些用户同时使用银行卡支付、体现的量级也非常大,其量级比单个商户大很多。
4、余额不敏感: 因为是支付机构内部为了映射银行而开具的内部账户。
为什么商户还额外拥有用户账户呢? 这是处于资金管理需要啊,商户账户中的资金并非全部归属商户本身,其中一部分是第三方支付机构将会收取商户的佣金,只有在支付机构收取玩佣金的净额才归属于商户本身,才能任其自由使用
维度 | 张三 | 李四 |
---|---|---|
微信账户 | 10 | 20 |
银行 | 100 | 500 |
微信备付金银行账户 余额 30
涉及的用户 有两个,张三和李四,他们分别有自己的微信账户和银行账户,微信也在银行开具了自己的银行账户,成为备付金
用户充值
现在假设 张三想要通过自己的银行卡充值20元到微信余额,资金变动如下图所示:
首先是张三的银行账户向微信备付金账户 划扣20元,成功后微信给张三的微信余额加20元,充值完成
用户在微信中绑定了银行卡,因此不需要用户去银行转账,而是通过微信与银行间的接口来自动完成该笔资金的 划扣
用户提现
假设李四想要将微信中余额提现10元到自己的银行卡,则资金变动如下
首先将李四的微信 余额减去10元,然后微信支付调用银行的接口,从微信备付金账户中转账10元到李四的银行卡中,体现过程结束。
这里的减去李四微信余额时并不是直接减掉,而是先冻结,等银行侧成功转账后再实际减去。
用户转账
假设张三要给李四转账20元,则资金变动如下图:
此时,张三的 余额先减去20,然后李四的余额加20,转账完成。
资金变动汇总
1、在充值时候,微信体系余额增加,则备付金账户和微信账户的变动净额总是相等的。
2、提现的时候,微信体系余额增加,则备付金账户也会增加相同的金额。
3、转账时候,只是支付工具内部账户之前的划转,不涉及资金流入和流入支付体系,因此备付金账户余额不变
用户和商户 也都拥有自己的银行账户和微信支付账户,微信支付作为中间桥梁,将银行、用户、商户连接起来,共同构成了整个交易网络,从交互图中可以看出,支付系统具有很多重要的功能
1、充值。用户将银行卡中的资金转移到微信支付中,成为微信余额的过程。
2、提现。用户或商户将微信余额转移到银行卡的过程
3、支付。这里特指用户将资金从自己的现今账户划到商户的交易账户过程。
4、退款。支付的逆向过程,将资金从商户账户退回到用户账户。
5,结算。用户支付给商户的资金,在收取手续费的时候,划给到商户的现金的账户的过程
领域拆分
1、支付(广义): 负责支付、转账、充值等基础交易能力的提供。
2、退款: 负责将用户支付的资金从商户账户退回到用户账户或者用户银行卡。
3、付款: 负责将支付体系内的资金提取到指定用户银行账户,即提现。
4、结算: 负责按照合同规定的规则,将用户交易账户的资金划转到商户现金账户,并收取交易手续费。