关于后端:扫码支付是如何实现的

46次阅读

共计 6147 个字符,预计需要花费 16 分钟才能阅读完成。

大家好,我是易安!

当今社会,随着挪动领取的遍及和扫码领取的便捷性,越来越多的人开始应用扫码领取来实现日常生活中的生产。作为一种重要的金融业务场景,扫码领取曾经在各行各业失去了广泛应用。本文将从扫码领取的实现原理和金融业务场景两个方面动手,为大家具体介绍扫码领取的相干常识。

微信领取

微信扫码领取是一种十分风行的挪动领取形式,其外围原理是将用户的微信钱包与商家的领取零碎进行对接,实现快捷、平安的领取交易。具体实现过程如下:

微信扫码领取是腾讯公司推出的一种基于二维码技术的领取形式,次要用于商户收款场景。该领取形式具备操作简便、安全可靠等特点,在消费者和商户之间广泛应用。以下是微信扫码领取的业务场景和实现原理的简要介绍。

业务场景:

1. 用户扫商户二维码(被扫领取):用户应用微信扫一扫性能,扫描商户提供的收款二维码,输出领取金额后实现领取。

2. 商户扫用户二维码(主扫领取):用户在微信内生成领取二维码,商户应用收款设施扫描用户的领取二维码,实现领取。

实现原理:

1. 用户扫商户二维码:商户二维码内蕴含商户的收款信息。用户扫描后,微信客户端会将二维码信息发送到微信领取服务器,服务器依据二维码信息生成预领取订单,再将订单信息返回给用户。用户确认领取并输出明码,微信客户端向微信领取服务器提交领取申请。服务器与银行进行交互,实现扣款并将领取后果返回给微信客户端和商户。

2. 商户扫用户二维码:用户的领取二维码内蕴含用户的身份信息。商户扫描后,收款设施将二维码信息发送到微信领取服务器,服务器生成预领取订单并返回给收款设施。收款设施向用户展现领取信息,用户确认领取并输出明码。微信领取服务器与银行进行交互,实现扣款并将领取后果返回给收款设施和用户。

上面是一个简略的微信扫码领取流程图,以帮忙你更好地了解微信扫码领取的实现原理:

跨境领取

下面讲的微信扫码领取比较简单,上面咱们来看一个简单的,跨境电商相干的扫码跨境领取。咱们假如有以下场景:

1. 付款方用户领取的是人民币。

2. 付款方的借记卡是国内银行 A 发行的,简称 买家开户行

3. 第三方领取公司的备付金账户在国内银行 B,简称 第三方开户行

4. 收款方承受的是美元。

5. 收款方的借记卡是国外银行 C 发行的,简称 卖家开户行。

6. 第三方公司是通过银行 D 进行外币兑换业务,简称 汇兑提供行

因为国内对人民币相干的外汇交易有管制,本外币交易须要满足肯定要求,比方要求电商平台有对应的交易明细。为了不便你了解,咱们假如曾经在其余局部实现了相应的合规流程。

那么接下来,我会分 4 个局部给你解说整个领取过程:用户扫码领取、第三方公司进行本币代收、外汇交易以及外币代付。

用户扫码

扫二维码领取显然是以用户扫码作为整个业务的终点。从终端用户的角度来看,扫码由鉴权、领取和拉取状态三个步骤组成。接下来,咱们就来具体看看这几个步骤。

鉴权

扫码领取最终会用买家的银行卡进行领取。在你开始扫码领取之前,第三方公司须要核实你是否有这张卡的使用权,俗称“绑卡”。

那第三方公司是怎么验证用户的使用权呢?在国内,咱们个别采纳上面这 4 个因素来进行验证:

  1. 用户姓名
  2. 用户身份证号码
  3. 银行卡号码
  4. 银行注册的手机号

这 4 个因素都是银行记录的信息,因而尽管看起来你是在第三方领取公司的 App 上进行绑卡操作,其实是银行在背地进行相干信息的验证工作。

因为这 4 个因素都是电子信息,可能会被人盗用,所以为了进一步加强安全性,银行在验证手机号码的时候还须要验证你是否领有这个手机号码。具体的形式是发一条验证码给在你在银行柜台办借记卡时注册的手机号码。

联合后面的内容,咱们能够把鉴权的过程分为 4 步:第 1 步,用户填写前 3 个因素和手机号码;第 2 步,银行发短信验证码给用户手机号;第 3 步,用户将前 3 个因素和短信验证码发给第三方领取公司;第 4 步,第三方领取公司再将所有信息发送给银行进行确认。

所以鉴权的过程其实是验证了 5 个信息,其中 4 个是动态信息,1 个是动静信息。

在用户绑卡通过之后,银行会返回给第三方领取公司这个用户的外部 ID 信息(也叫 Token)。之后第三方领取公司就能够拿这个 ID 进行所有非法的操作。

方才给你解说的流程示意图如下:

领取

鉴权实现之后,就能够扫二维码,进行领取了。二维码其实是一个图形化的字符串,背地是这笔交易对应的订单。当用户点击“确认”之后,就会开始整个领取流程。

拉取领取状态

那为什么须要拉取领取状态呢?咱们还是从台前转到幕后,从零碎性能的角度思考。

用户 App 的领取确认按钮是有局限的,它只能确认后盾是否曾经收到了领取申请,并不能确认领取是否曾经胜利。这是因为领取后盾须要花一些工夫和银行沟通,在这个期间后盾并不知道银行的领取流程进行到了哪一步。

因为不晓得领取什么时候能力实现,用户 App 须要每隔一段时间就向领取后盾拉取交易状况,咱们通常会把这个过程叫作 轮询。这个过程个别在几百毫秒内就能完结,所以你个别觉察不到延时。

那为什么会呈现轮询这种零碎对接形式呢?金融机构每天会面对大量的用户资金操作,这些操作的工夫和频率有很大的必然性。

为了应答用户操作的峰值状况,金融机构广泛通过 异步音讯解决 的架构来对极其流量进行削峰填谷。如果流量忽然增大,异步音讯架构会缓存所有申请,缓缓解决。这样就能防止外围金融零碎超载。异步音讯架构的后果就是用户不会及时失去处理结果,须要本人一直地去查询处理状况。

当银行解决完领取后,银行会把领取胜利的音讯推送给用户和第三方领取公司。第三方领取公司也会推送给你领取胜利的音讯。所以你在扫码领取胜利后,通常还能听到两个手机音讯告诉的声音。

到这里咱们看到了两种不同的获取最新状态的形式。一种是用户定期去拉取状态,另一种是服务器将状态音讯实时推送给用户。这种 推拉联合 的音讯告诉形式,其实是架构设计中常见的异步零碎解决形式。领取状态获取的流程图如下:

本币代收

后面咱们假如了这笔领取波及到外汇交易,因为买家的和卖家应用的币种不同,就无奈间接转账。这时候就须要第三方领取公司这个中间人来帮忙了。中间人角色要做 3 件事件:

1. 本币代收

2. 外汇交易

3. 外币代付

我先给你说说本币代收,也就是第三方领取公司代收用户资金。艰深一点来说,本币代收就是将你该付的钱先打到第三方领取公司账上。

因为第三方领取公司的账号和买家的银行卡在两家不同的银行,本币代收须要进行跨行转账。跨行转账会波及到整个银行零碎的大小额零碎和超级网银等,非常复杂。所以这里咱们对场景进行一些简化,然而会和事实有一些出入,次要是不便你了解。

央行和清理机构

跨行转账的时候,钱是在不同的银行。因而咱们想要实现跨行转账,就须要解决两个问题。第一个问题是怎么将钱在两家银行之间转来转去,另一个问题是转的金额是多少。

咱们先看第一个问题,那就是怎么跨行搬钱。最间接的办法是用汽车将钱从一家银行的金库搬到另一家银行。但这个办法其实不太实用,汽车能运的钱分量无限,路上也不太平安。所以钱最好不要移动中央。

这时候又须要另一个第三方机构出马了。所有银行都在这个新的第三方机构里放足够多的钱,个别叫做 贷款准备金。当两家银行之间须要转账的时候,第三方机构在外部搬运一下就好。比方美国的黄金交易所就是这种工作模式,每个客户都有本人专属的黄金仓库,很多小车在仓库之间搬运黄金。

如果这个第三方机构足够可信,那么连外部搬运都不须要。这个第三方机构只须要记录一下谁的钱有多少,以及从哪里搬了多少到另一个中央就行。信用级别最高的金融机构就是国家的中央银行,简称 央行 所以央行解决了实在资金的转移问题。

咱们再来看另一个问题,那就是怎么晓得转移的金额有多少。会有这个问题的起因是每天银行之间的跨行交易十分多,不可能每一笔都通过央行转一次钱。所以银行系统对跨行转账的流程进行了优化。那就是在白天只做记录,不进行 任何实质性的跨行转账 。等每天完结的时候计算一下两个银行之间交易金额的差额是多少,最初通过央行进行一笔跨行转账就能够了。这种计算交易差额的形式叫做 轧差

这个记录白天跨行转账细节和早晨进行交易轧差的第三方机构叫作 清理机构。你相熟的银联及网联,以及国外的万事达,它们都是清理机构。

后面咱们在介绍拉取领取状态的时候,讲过金融零碎采纳异步音讯解决架构应答领取流量。轧差是另一种金融机构应答大流量的一种解决形式。轧差的实质是实时音讯的批量解决,从某种程度来讲是延时更大的异步解决框架。

跨行转账流程

讲完央行和清理机构之后,咱们就能够对跨行转账过程做一个具体的梳理了。整个过程分为七步:

第一步,第三方领取公司发送指令给 第三方开户行 ,要求将钱从用户的 买家开户行 转到 第三方开户行

第二步,第三方领取公司领有用户在 买家开户行 的 Token,所以能够非法发动这笔转账。跨行转账流程开始。

第三步,第三方开户行 将所有信息交给清理机构。 清理机构 作为第三方负责记录这些信息,并告诉 买家开户行 第三方开户行 记录这笔转账。

第四步,买家开户行 记录的后果是对用户的账号进行扣款。扣款完结后用短信的形式告诉用户。

第五步,第三方开户行 记录的后果是对第三方领取公司的账号进行打款。打款完结后第三方领取公司能够通过银行网页看到对公账户金额发生变化。白天的工作到此结束。此时 买家开户行 的账面上的资金尽管缩小,然而缩小的钱并没有实质性达到 第三方开户行

第六步,到了早晨,清理机构 对白天产生的交易进行盘存,发现有一笔从 买家开户行 第三方开户行 的跨行转账还没有真正实现。 清理机构 会将这笔未实现的跨行转账信息发送给 央行

第七步,央行 收到信息之后,将 买家开户行 在央行的贷款准备金调低,并将 第三方开户行 在央行的贷款准备金调高。这样钱就真正地从 买家开户行 转到了 第三方开户行

这七步的示意图如下:

外汇交易

转账交易的第二步是第三方领取公司进行外汇交易。当第三方领取公司实现了用户的本币代扣之后,第三方领取公司账上就有了对应的人民币。接下来的一步是将这些人民币变成美元,这样能力将美元转给国外的卖家。

那么外汇交易的过程又是怎么的呢?依照交易量的大小,能够分为 C 端外汇批发业务和 B 端外汇零售业务两个局部。

C 端外汇批发业务

外汇交易和电商一样,也是一个交易的过程。第三方领取公司作为中间人,须要用人民币购买美元。那美元从哪里购买呢?人民币有外汇管制,不能随便交易,须要通过一些有非凡资质的银行才行。如果外汇不波及到人民币,那么选择面会宽泛很多,银行、投行或者其余金融机构都能够。

账务原理倡议一个账号只解决同一个币种的交易。外汇交易波及到两个币种的货币,因而须要两个不同的账号。

一开始,我假如了第三方领取公司是通过 汇兑提供行 进行外汇交易的。那么第三方公司须要在 汇兑提供行 里建两个账号,一个人民币账号和一个美元账号。同时,汇兑提供行外部也须要有对应两个币种的账号,一个对应着人民币资金池,另一个则是美元资金池。

所以,一笔外币的购买波及到 4 个账号之间的 2 笔领取订单。交易过程的示意图如下:

外汇交易实现之后,第三方领取公司在 汇兑提供行 的人民币账户金额缩小,美元账户金额减少。这样第三方领取公司就有了足够的美元来领取给卖家。

咱们须要留神的是,外汇交易是有老本的。第一个老本是 工夫老本 。当天购买的外汇可能隔蠢才到账。另一个老本是 交易成本。外汇交易个别会依照交易次数免费。因而为了节省成本,第三方领取公司通常会提前购买大量的外汇,用来应答日间的业务。只有当外汇储备降落到警戒线之后再做下一笔大额外汇的购买。

讲到这里,咱们解决了第三方领取公司美元账户有余的问题,然而它用来购汇的人民币账户始终在往外出钱,总会有枯竭的一天,又该怎么办呢。

所以咱们还须要思考从内部调资金进来。因为第三方领取公司的备付金账户在 第三方开户行 ,因而须要做从 第三方开户行 汇兑提供行 的跨行转账,示意图如下:

然而第三方公司在 第三方开户行 的账户也在始终出钱,咱们往上推演一步,就会发现第三方开户行账户也须要有进来资金的渠道。这个是由后面咱们提到的本币代收的过程实现的。咱们把买家出资的流程补充残缺。整个过程的示意图如下:

这样梳理下来,你是不是感觉咱们曾经思考得足够全面了呢?

其实这里还有一个问题须要咱们思考:汇兑提供行 帮忙第三方领取公司实现了外汇购买。然而 汇兑提供行 的美元账户始终在出钱。那这个美元账户钱不够了怎么办?这时候 汇兑提供行 须要从其余银行寻求帮忙。这个过程就波及到了 B 端外汇零售交易。

B 端外汇零售业务

后面提到的电商相干的外汇交易属于外汇的批发业务。银行、投行和其余外汇提供商之间造成了一个有层级的跨国组织,专门从事外汇的零售业务。零售业务的业务量十分微小,通常每天都有几万亿美元的规模。

外汇市场是依照交易量大小来划分档次的。最底层的是面对终端用户的外汇零售商。这些零售商负责给个别用户提供小额的外汇交易。这些小笔的外汇交易会集在一起之后,就会造成一笔大的外汇订单,而后持续往下层交易。

和底层的外汇零售商一样,上一层的机构将所有外汇交易会集在一起之后,造成更大的外汇订单,再往更上一层交易。

始终往上会集这种事件不会永无止境地进行上来。这个流程的止境是寰球最大的 外汇做市商,个别是巨型的跨国商业银行。

这些跨国商业银行面对的是寰球不同国家大量的储蓄用户,所以它们手上就领有不同币种的巨额存款。这些做市商之间通过 替换不同币种的大额固定利息存折 来实现外汇交易,从而决定最终汇率。示意图如下:

之前我给你提到过外汇交易有工夫老本,当天购买的外汇须要隔天能力到账。在这一天的工夫距离之内,外汇市场可能会有微小的稳定,从而造成金融机构账面上的资金亏损。所以,参加外汇业务的金融机构都会解决外汇相干的市场危险,比方用期货、期权等衍生品来对冲危险。这些金融衍生品,咱们会在前面的章节具体开展,这里你先有个印象就行。

为了不便你了解,咱们把到目前为止的流程画一个简略的示意图:

外币代付

外币代付流程和本币代收流程在原则上是一样的。不同点在于外币代付的金额是美元,流出账号是第三方领取公司的美元账号。因为卖家的账号在 卖家开户行 ,第三方领取的美元账号在 汇兑提供行,这时候须要走的是国内的清结算过程。

流程的核心思想和之前的相似,只是具体的细节会更加简单。下图展现了简化版的领取流程。

小结

在用户开始扫码领取之前,他们需确保非法领有银行卡,并向发卡行提供 四大因素 :姓名、身份证号、银行卡号及手机号。一旦验证胜利,领取过程便可开展。领取实现后,用户可通过轮询形式 异步查问领取状态。金融机构采纳异步解决架构来应答领取流量。

当第三方领取公司收到领取申请后,将开始进行本币代收业务。因为账户设立因素,须要进行跨行转账。此时,清理核心与央行独特提供跨行转账性能。跨行转账通常采纳日间交易、日终轧差结算形式进行。轧差解决也是金融机构应答领取流量的一种架构设计。

第三方领取公司在实现本币代收业务后,还需进行汇兑业务,次要包含外汇批发业务和零售业务。若波及外币代付业务,第三方领取公司需借助国内清结算组织的相干性能。

须要留神的是,二维码领取波及的大部分环节都是 异步零碎 ,例如用户 App 的异步领取状态查问,以及清理核心、央行和银行之间的跨行转账清结算过程。异步零碎无奈实时向调用方返回后果。因而,在设计零碎时,须要反对 状态查问和状态音讯推送性能

本文由 mdnice 多平台公布

正文完
 0