网站首页 > 数据库> 文章内容

图解支付系统设计与实现:在线支付系统最核心的概念和设计

※发布时间:2024-12-2 11:13:43   ※发布作者:佚名   ※出自何处: 

  下面描述的概念大部分做了极致简化,只是用于入门,对于理解概念应该是够用的。真实的实现会复杂非常多。

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

  银行和支付平台之间是机构对机构的关系,通常使用清算概念,因为金融机构之间大部分情况下会由的清算机构完成清算服务。

  支付平台和商户之间,通常使用结算概念,由支付平台直接打款给商户。(清算与结算区别是中文才会有,本质是一个东西)

  画的是结算到商户开在支付平台的内部账户余额,所以需要商户手动提现,支付平台通常也支持直接结算到卡,这样就不需要商户手动提现。

  清结算三个字还有另外一层含义:清分 + 结算。前者是把钱算清楚,后者是真实打款。也有些公司叫清分清偿,前者算好钱怎么分,后面完成债权任务关系的完结。本质也是一个东西。

  之所以有锁汇,是因为外汇时刻在变化,支付平台不想承担汇损风险,直接在支付款里加点手续费。能力强的支付机构也不需要锁汇,更高风险,但可能有更多收益。

  还有些渠道直接提供空中换汇的能力。比如土耳其用户使用TRY进行支付,在支付成功后,由渠道侧直接换汇成USD,然后由渠道直接结算USD给支付平台。

  一般来说,很多国家的货币是受管制的,无法出境,如果使用空中换汇直接拿到的就是USD,就比较容易出境。

  涉及跨境场景下,往往需要设计各种各样的资金流,最主要是考虑合规,某次是收益。如果能力强,利用流动性管理,资金量大,收益还常可观的,毕竟外面不像某国要求备付金100%缴存央行,还不给利息。

  我们以最典型的电商购物举个例子(只是举例):小明使用PayPal在拼多多电商(海外)通过多多钱包(海外)支付了50美金。

  1)持牌的第三方支付机构和电商是的法律主体,所以多多钱包和多多电商是互相的,需要走的结算。

  2)为突出重点,中间省略了很多中间机构,比如花旗通过清算网络才能转账到汇丰,清算网络先略过。

  用户在支付平台充值10元,支付平台向银行发起扣款请求,这些指令操作归属于信息交互,属于信息流。

  真实资金流:银行账户余额的变动。比如:银行在内部把用户的余额减10元,给支付平台备付金账户加10元。

  虚拟资金流:支付平台内部账户余额的变动。比如:支付平台内部把银行应收账户加10元,给用户余额账户加10元。

  为什么会有真实资金流和虚拟资金流之分?因为我们真正能拿到钱的地方是银行,在支付系统内看到的只是一个数字,如果想变成真实世界的钱,还得发给银行提现。

  上述的收单机构是持牌的,但是没有跨境结算的能力,所以需要委托有跨境结算牌照的金融机构代为处理跨境结算业务。

  跨境电商平台只是一个商户平台,没有收单资质,所以需要委托收单机构给它下面的供应商结算打款。

  剩下的协议关系都是一目了然的,只是我们日常没有注意。比如用户和电商平台之间在注册时就会有会员协议要签署。

  特殊的情况下,一些实力雄厚的机构,比如蚂蚁、财付通、连连支付、空中云汇等,下面会成立多个实体,然后用不同的实体去申请不同的牌照(收单、银行、外汇、跨境代发等),这样表面上全部是一家公司搞定,但是实际的协议关系仍然是这样的,在各实体之间仍然需要签署各种协议。

  如果是本对本收单场景就简单很多,没有外汇和跨境结算这一层关系,如果跨境电商的货品全部是电商实体自营的,那就更简单,没有供应商委托结算的协议。

  一般电商平台在没有牌照情况下是不能开设余额账户的,如果电商想开通余额,可以委托第三方有牌照的公司托管(通常也是收单机构,收单机构一般会同时申请PA、PG牌照),这种情况下,电商平台和收单机构还会签署账户委托协议。

  这是一个典型的跨境资金流案例。用户支付USD,收单机构收到的是USD,但是需要结算CNY给中国境内的商户。

  收单机构(也就是支付平台)需要先将USD兑换成CNH(离岸人民币),再由入境代发机构把CNY结算给中国境内商户。这是所谓的“结汇入境”。

  如果采用“入境结汇”的方式,则收单机构直接结算USD给商户在境外的银行账户中,由商户以USD汇入境内,再兑换成CNY。或者收单机构先把USD汇入境内备付金账户,再兑换成CNY,然后再结算CNY给中国境内商户。

  不同的资金方案,一方面要考虑合规的,另一方面就是考虑收益最大化,以及资金周转的时效性。

  渠道由核心作用是当有多个渠道同时满足业务时,综合支付成功率、支付成本、用户体验、渠道状态等多种因素挑选出最优的一条渠道。

  :通过选择最合适的渠道,可以提高支付的成功率,减少支付失败带来的用户流失。原因在于不同的渠道在其内部的风险偏好是不一样的,同一个请求在A渠道会失败,但在B渠道会成功。

  :不同渠道的费用可能不同,通过合理的由,可以降低支付成本。一些渠道还有阶梯收费,需要通过分流不同的渠道,保持整体成本最优。

  :快速、稳定的支付体验能增强用户的满意度和忠诚度。用户如果经常在A渠道支付,新的请求过来后,仍然发给A渠道支付的成功率往往会更高。

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

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

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

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

  这些账户如果不做实时记账,一来用户体验,二来有资损风险。比如用户充值100块,如果延时不到账,用户可能会投诉。如果提现不实时记账,用户有可能重复提现成功。如果退款不实时记账,有可能在退款场景下被透支。

  假设记账需要几十毫秒(数据库性能决定的),一个账户最高也就只支持几十个TPS的记账请求,对于一些高并发的账户(也称为热点账户)一定是性能不足的。这个时候一般使用缓冲记账,以提高性能。开通缓冲记账的,通常是内部账户或允许商户透支的流出场景。

  缓冲记账通常就是先记录流水,然后起定时任务去流水,汇总后进行记账。前提是一定要做好资损防控。

  有了账户和会计科目,发生一笔交易时,如何让系统自动去记账?这个是记账方案做的事。其中一个解决方案就是给不同的交易场景制定不同的交易码,通过交易码来驱动记账。

  会计日,也称为会计结算日或账务结算日,是支付平台在会计周期中进行账务处理和结算的特定日期。比如在分布式下,各机器可能存在时间差,一笔交易在零点时有可能跨天处理,如何判断一笔交易归属于哪天,就依据会计日来计算。

  因为我方和渠道之间有一定的时间差,所以长短款在T+1对账对不上时,往往先进入存疑清单里面,第T+2对账还是对不上,才会进入差异处理。

  第二层是账单对账。就是把我方流水汇总生成我方账单,然后把银行流水汇总生成银行账单,进行对账。可能会存在银行账单和我方账单不一致的情况,比如共支付100万,渠道分2次打款,一笔98万,一笔2万。

  第三层是账实对账。就是我方内部记录的银行头寸和银行真实的余额是否一致。可能存在我方记录的头寸是220万,但是银行实际余额只有200万的情况。

  我们通常说的记账,哪怕是一笔简单的支付,也会有多次记账。具体在什么节点记什么账,一般由财务人员决定。

  下面是一个典型的使用银行通道进行支付的记账,会涉及网关过渡户,渠道待清算,商户待结算,手续费,银行头寸等多个内部户。

  以典型的商户结算到卡记账为例,通常涉及商户待结算户,网关过渡户,渠道应清算,渠道已清算,银行头寸等内部户。

  所谓产品架构图,简单的理解,就是站在产品角度,提供什么样的服务能力。下面是一个典型的支付系统的产品架构图。实际实现时差异会很大,尤其是的产品或应用层,有很多机构为特殊的行业提供一些特殊的能力,比如携程的支付就会有航空方面的B2B业务。但基础的能力基本也就这些。

  跳过几个支付公司,这些基础的概念在几家公司都差不太多,区别是底层技术实现。比如RPC框架,数据库,业务流程,部署架构等。

  主要对接商户,比如下单、支付等接口入口。通常要求有比较高的安全性。部分公司可能会把移动端网关、PC门户网关、商户通知等能力集成在网关,也可能会单独拆出部署。

  负责把商户的单收下来,并给商户发起结算。承担的收单产品包括有:线上收单,线下收单,交易、即时到账等,每个公司的商业策略不同,开出的收单产品会有差异。

  承担无买卖标的的纯资金转移能力。典型的有:充值、转账、提现、代发。和支付的区分在于支付是有买卖标的,而资金产品没有。也就是在系统中没有买卖记录发生,但在线下可能有。

  渲染可用支付方式。包括查询账户是否有余额,查询营销是否有营销券,查询渠道网关是否有可用的外部渠道,最后组合成可用支付方式,供前端渲染。

  收银核心就像一个大内总管,收到请求后,找商户平台核实身份,找合约平台核实权限,找会员平台核实用户身份,找收单看一下这笔单是否可以继续支付,找账务中心获取余额信息,营销看看有没有可用的券,找渠道网关看看没有可用的渠道,找额度中心看看是否超限额了,找风控问一下当前支付是否安全,找会员平台校验支付密码 … …

  负责去外部渠道扣款。通常还会提供渠道由、渠道咨询等能力,做得细的公司可能会把渠道核心和报文/文件网关单独拆出来。其中渠道核心就提供渠道由、渠道咨询、渠道开关等服务,报文/文件网关负责报文转换、签名验签等。

  管理会员的生命周期,比如注册、注销、登录等。同时还提供核身服务(比如登录密码,支付密码,短信验证码等)、实名认证服务等。

  很多集团公司往往有一套的专业财务系统,这个时候往往需要会计中心做完日切后,要把记账信息合并到集团公司的财务系统中去,简称并账。

  通常各公司对风控规则看成是机密,研发也可能看不到运营配置的规则。经常看到有网友问:“有xx公司的人在吗?我有场景下的支付总是提示风控不过,是否知道是什么原因,怎么才能通过?”,完全是浪费口舌,谁会对外公布自己的风控规则,让人去钻呢?

  主要用于数据汇总和分析。当前各支付公司基本都是分布式部署N多个应用,数据都在散落在各子系统中,需要汇总到数据平台用于经营分析。

  一些跨境支付公司,在多个国家多个银行有头寸,各头寸之间经常需要做流动性管理,提高资金利用率。

  负责差错处理。比如渠道退款失败(银行账号销户,过了银行的退款有效期等),需要通过其它的方式退给用户。

  处理用户的拒付和举证。在跨境支付场景下,信用卡用户联系发卡行说卡被盗刷或商品没有收到,或商品有问题等,支付给商户。

  一般来说,技术风险主要包含稳定性和资损两个方面。其中稳定性风险就是大家经常说的几个9,比如99.999%可用,就是5个9。资损风险就是平台或用户的资金损失。

  虽然资损也是技术风险的一种,但是因为对于专业的持牌支付公司来,资损是一种非常严重的事故,容易引发客诉、网络事件、甚至监管介入,所以又较一般的风险更为严重,常常把资损防控单独拿出来说。

  我们通常先需要知道风险来自哪里,才知道如何去防控。而风险往往来自变化。举几个例子,抛砖引玉:

  根据变化去应对风险。比如大促引入了流量变化,那就做压测、扩容、限流、降级非核心业务等应对。比如原来只有支付,这些有了用户提现,针对用户提现,内部多个子域可能状态/金额不一致,和银行渠道的状态/金额也可能不一致,那就加入各种对账手段,以及对应的应急预案。

  前面讲过的三层对账主要是和银行渠道对账,除了这个之外,一般的支付平台还会有内部系统之间的两两核对,这种核对主要是信息流层面的核对,主要核对状态、金额的一致性。

  所谓业务幂等,就是由各域自己把唯一性的交易ID作为数据库唯一索引,这样可以不会重复处理。

  在数据库前面可以加一层缓存来提高性能,但是缓存只用于查询,查到数据认为就返回幂等成功,但是但不到,需要尝试插入数据库,插入成功后再刷新数据到缓存。

  在面临时经常有同学只回答到“使用redis分布式锁来实现幂等”,这是不对的。因为缓存有可能失效,分布式锁只是用于防并发操作的一种手段,无法根本性解决幂等问题,幂等一定是依赖数据库的唯一索引解决。

  当数据量大的时间,分库分表是再所难免的。一个经典的面试题是:如果分了100张表,按商户来分表,还是按商户订单号来分表?如果按商户分表怎么解决各表流水数据量平衡问题?如果是按商户订单号来分表,商户想按时间段查询怎么办?

  解法有很多种。一种典型的解法,就是线上数据库按商户订单号分表,同时有一个离线库冗余一份按商户号分表的数据,甚至直接使用离线数据平台的能力,把商户的按时间段查询需求从在线. 分布式事务

  分布式事务是个好东西,但是复杂度也高,还经常出现所谓的事务悬挂问题,且虽然各家都号称简单易用,对业务代码侵入少,但事实并非如此。

  比如大家传的是元,但是其中有位同学忘记了,以为传的是分,外部渠道要求传元,就手动乘以100。或者反过来。

  还有一种情况,部分币种比如日元最小单元就是元,假如系统约定传的是分,外部渠道要求传元,就可能在网关处理时手动乘以100。

  。比如结算给商家,或计算手续费时,碰到除不尽时,使用四舍五入,还是向零舍入,还是银行家舍入?这取决于财务策略。

  数据库一般都会设计一个自增ID作为主键,同时还会设计一个能唯一标识一笔业务的ID,这就是所谓的业务ID(也称业务键)。比如收单域的收单单号。

  第10位:系统版本。用于内部系统版本升级,尤其是不兼容升级的时候,老业务使用老的系统处理,新业务使用新系统处理。

  第11-13位:系统标识码。支付系统内部每个域分配一段,由各域自行再分配给内部系统。比如010是收单核心,012是结算核心。

  第14-15位:业务标识位。由各域内部定,比如00-15代表支付类业务,01支付,02预授权,03请款等。

  第24-32位:序列号空间。一亿规模,循环使用。一个机房一天一亿笔是很大的规模了。如果不够用,可以扩展到第24位,到十亿规模。

  状态机,也称为有限状态机(FSM, Finite State Machine),是一种行为模型,由一组定义良好的状态、状态之间的转换规则和一个初始状态组成。它根据当前的状态和输入的事件,从一个状态转移到另一个状态。

  经常看到工作几年的同事实现状态机时,仍然使用if else或switch case来写。这是不对的,会让实现变得复杂,且容易出现问题。甚至直接在订单的领域模型里面使用String来定义,而不是把状态模式封装单独的类。

  只要在公司写过代码,就一定打印过日志,但经常发现一些工作多年的工程师打印的日志也是乱七八糟的。我曾经在一家头部互联网公司接手过一个上线一年多的业务,相关日志一开始就没有设计好,导致很多无法实现,出了线上问题也不知道,最后只能安排工程师返工相关的日志。

  。在我看来,日志有两个核心的作用:1),诊断系统或业务是否存在问题;2)排题。对于而言,我们需要知道几个核心的数据:业务/接口的请求量、成功量、成功率、耗时,系统返回码、业务返回码,异常信息等。对于排题而言,我们需要有出入参、中间处理数据的上下文、报错的上下文等。接下来,基于的分析,我们就清楚我们应该有几种日志:

  支付安全是一个很大的范畴,但我们一般只需要重点关注以下几个核心点就够:1)信息安全存储。

  个人信息包括身份证信息、支付卡数据和密码等,而商户/渠道的信息则涉及商户登录/操作密码、渠道证书密钥等。

  确保客户端与支付系统服务器之间、商户系统与支付系统之间、支付系统内部服务器与服务器之间、支付系统与银行之间的数据传输安全。这包括采用加密技术等措施来保障数据传输过程中的安全性。

  确保交易信息的完整性和真实性,防止交易信息被或者被。一笔典型的交易,通常涉及到用户、商户、支付机构、银行四方,确保各方发出的信息没有被也无法被。

  识别并防止欺诈交易,包括套现、洗钱等违规操作,以及通过识别用户信息泄露和可疑交易来用户资产的安全。这一方面通常由支付风控系统负责。

  防范DDoS,确保支付系统的稳定运行和服务可用性。通过部署防火墙、入侵检测系统等技术手段,及时发现并应对可能的DDoS,保障支付服务的正常进行。

  支付安全是一个综合性的系统工程,除了技术手段外,还需要建立健全的安全制度和合规制度,而后两者通常被大部分人所忽略。下图是一个极简版的支付安全大图,包含了支付安全需要考虑的核心要点。

  哪种场景下需要加密存储,加密需要使用什么算法,密钥长度最少需要多少位,哪些场景下需要做签名验签,这些都是制度就明确了的。制度通常分为行业制度和内部安全制度。行业制度通常是国家层面制定的法律法规,比如《网络安全法》、《支付业务管理办法》等。内部安全制度通常是公司根据自身的业务和能力建立的制度,小公司可能就没有。

  所谓提纲挈领,就是先掌握核心主干,有了这个前提,再去深入了解细节,才不至于“乱花渐欲迷人眼”,解决问题时才能如庖丁解牛,行云流水。伟人邓公提倡的“抓住主要矛盾”,也是这个道理。

  犹记得N年前那天早上,我穿上最帅的衬衣、笔挺的西装裤、贼亮的皮鞋,推开房门,清风徐来,朝阳灿烂,一如我的心情,意气风发。那是我进入正值蓬勃发展的第三方支付行业的第一天。

  入职当天老板扔了很多文档给我,看了一周,没看懂。想起老祖说的“读书百遍,其义自见”,继续苦读一周,仍然是雾里看花。不幸中的万幸,是挺过了试用期。直到多年后的一天,整理老旧硬盘的资料,才发现一方面是自己愚钝,另一方面也是那些资料写得过于晦涩难懂。于是萌发一个念头:要不我自己也总结总结?这是其中的一篇。

  来源:报料、通道:应用市场下载“晨视频”客户端,搜索“帮忙”一键直达;或微信添加报料客服:xxcbcsp;或拨打热线。如需内容合作,请拨打政企服务专席。

  12月1日,四川北川曲山镇自新村2组的母光才夫妇仍在医院接受治疗。回想起被黑熊进屋袭击的过程,58岁的母光才仍然心有余悸。11月20日凌晨5时许,一头黑熊闯入母光才家中,将其妻扑倒撕咬。母光才发现情况后,手持斧头等工具,成功将妻子救下并击杀黑熊。不过,夫妻二人也不同程度受伤住院。

  两只狗正围咬一女子,过的车辆不停鸣笛,一名环卫工过吸引了两只狗,两只狗向环卫工追去……11月30日凌晨发生在西安西郊的这一幕,被网友拍下。事发现场。新闻截图12月1日,上游新闻记者经过走访,从知情者处获悉,女子与环卫工均受伤,但无生命。

  近几天阳光十分温暖这样的好天气非常合适大家洗衣晒被出门晒太阳本周江西将有两股冷空气“到货”大风降温降水也随之而来熟悉的湿冷“魔法”上线提醒大家注意提前做好防范以庐山为例8日最低气温降至-3℃4日至5日受弱冷空气和西南气流影响有一次降温、大风过程过程降温2℃~4℃赣北、赣中阴天

  天冷了,“睡觉到底要不要穿袜子”这个问题又成了家庭讨论的热点。支持者认为:穿袜子睡觉能保暖、助眠,可以睡得更香。反对者认为:穿袜子会影响腿部血液循环,特别是孩子不能穿袜子睡。那真实情况是什么呢?下面我们就来了解下关于睡眠以及穿袜子睡觉的研究,没想到还有这些好处。

  来源:人民网科普 寒潮来临,御寒必备单品羽绒服成为热销品,一份超实用的羽绒服选购+清洗指南,速速查收↓羽绒服到底该怎么选?影响羽绒服保暖程度的三个因素:绒子含量、充绒量和蓬松度。绒子含量“绒子含量”和“含绒量”之间有啥区别?

  刚刚,胖东来声明:未进行任何直播带货!于东来最新发文:靠能力创造价值,做一个线日,许昌市胖东来商贸集团发布声明,近日,网络平台出现大量利用胖东来视频进行直播带货的情形,此行为对造成严重的和混淆,并了大家的权益,同时了网络生态的健康和秩序。

  中新网12月2日电据中央气象台网站消息,昨日,、东北地区及新疆等地出现小到中雪,局地大雪;、华北、东北等地风力较大。

  古有三宫六院,今有商人包养十位情人生10多个孩子,此人就是湖南益阳的首富倪福林。他74岁的时候还在自家建的里养着十位情人,重要的是,众多情人中最小者竟然是00后!

  2010年,一位56岁的大妈不顾身边人的劝阻,执意生下了一对龙凤胎。可谁也没有想到,短短几年的时间,接二连三的意外就将这位5旬母亲的计划全部打乱。

  

相关阅读
重庆学习网zslpsh,0755深圳房产人才招聘网,拾年网90后,anedc股票,最新电影下载淘娱淘乐,重庆中学生网高考,重庆中学生网高考,学习重庆方言网,重庆中学生学习方法,重庆俗语网,中学生网zslpsh,0755深圳交友网,重庆初中生,贵州重庆方言网,025新闻网,西南重庆方言歌曲,025南京交友网,重庆农家乐美女,观赏蟹种类zadull,云南重庆方言网,重庆中学学习网,028成都交友网,推广taoyutaol,西南四川方言网,观赏龟论坛zadull,四川重庆方言网,022天津交友网,重庆中学生网家长,鹦鹉鱼zadull,重庆俗语,电影淘娱淘乐,taoyutaole娱乐,华夏视讯网,0755深圳旅游招聘,昆明重庆方言网,淘娱淘乐影视,www.00game.net,观赏鱼zadul,重庆高考zslpsh,重庆中学生网高考,027房产招聘网,坝坝舞wagcw,西南重庆方言网,贵州重庆方言网,重庆言子儿网,热带鱼zadull,重庆高考zslpsh,0755深圳旅游招聘网,淘娱淘乐影视网,0571.361.cm,重庆方言学习网,028成都新闻,异形观赏鱼种类,影视网淘娱淘乐,最新电影下载淘娱淘乐,0773桂林论坛,拾年网80后动画片,观赏蟹论坛zadull,观赏龟繁殖教程,重庆一中zslpsh,重庆俗语网,广场舞wagcw,观赏虾的种类zadull,观赏鱼观赏虾观赏龟,西南方言网,观赏鱼之家论坛zadull,战争前线辅助00game,西南重庆方言小说,重庆中小学zslpsh,推广taoyutaol,战争前线论坛00game,0871交友网,025南京新闻网,重庆言子儿网站,娱乐taoyutaole,022天津交友网,025新闻网,重庆中学生网学习,022天津交友网,重庆方言歌网,www.120.cm健康网,anedc股票,重庆初中生