快捷支付的本质:拆解扫码支付的实现原理

8 评论 8170 浏览 84 收藏 17 分钟

如今在中国,二维码支付已经成为了人们最重要的支付方式。本文回答了二维码的种类、原理、互联互通的逻辑以及扫码住背后资金流的走向问题。

目前在大街小巷,扫码支付已经成为了最受欢迎的支付方式,那么大家是否会好奇这背后的支付原理是怎样的?

同时我近期看到央行开始主推“标准条码互联互通”的新闻,感觉还挺有趣的,于是抽空对扫码支付进行了一次大梳理,也顺便分享出来。那么通过这篇文章,我将主要介绍三件事:

  1.  常见主扫和被扫支付的原理?
  2.  常见的静态聚合码是如何实现一码多付的?
  3.  条码支付互联互通是什么?有什么价值?以及可能会如何实现的?

一、扫码支付

我们常见的扫码支付主要分为主扫(你扫商家)和被扫 (商家扫你)两种;

要特别讲明白扫码支付,就不得不提一下二维码这个plus的东西。我们生活中存在各种应用二维码的东西,如扫码加好友,扫码下载app,扫码支付等,同时也存在条形码,类似超市的付款条码,商品条码等。

与条码相比,二维码记录信息容量更大,具有容错性,所以是当前最受欢迎的一种记录形式。

二维码/条码都是一种加密的信息承接载体,都是将复杂的东西简化给我们呈现出来。

当我们通过扫一扫进行扫描二维码的时候,实际上就是通过一定的规则将二维码里面的内容解析出来,比如地址合法性,是不是支付链接,还是外链网址之类的。

1. 主扫的原理

1)先睹为快

2)主扫支付的流程

3)主扫的核心逻辑

在我们实际的过程中,经常会出现支付宝扫支付宝二维码有时会提示已失效,扫其他二维码会告知不可用,那么这里扫码的原理是怎样的,做了哪些具体判断呢?

  • 判断二维码链接是不是支付链接;
  • 判断该支付链接是不是自家的。如果不是,则拦截,目前支付宝的支付链接是“https://qr.alipay.com…”,则允许通过请求服务器,但如果检测是“https://qr.wx.com…”,说明是微信支付链接,支付宝则反手就给你屏蔽了~
  • 之后再去解析二维码是否符合自家规则,目前支付宝的二维码是“28”开头,微信一般是”13“开头;解析之后,再判断二维码是否有效;有效则进行支付即可;无效则提示二维码失效。

2. 被扫的原理

场景:我们去超市买东西经常都会要求打开付款码,然后扫码枪进行扫码支付。

特点:操作步骤简单、支持离线付款、付款效率高

1)先睹为快

或许在这里很多人会纳闷这里有条形码和二维码,最终的支付到底是扫条形码还是二维码呢?

其实这里取决于扫码枪,现阶段市面上有两类:一维扫码枪 (仅可以支持扫条形码)和二维扫码枪(两个都可以扫)。

2)被扫付款逻辑

  • 用户打开付款码;
  • 收银员输入用户应付款金额,并生成订单;
  • 扫码枪扫码之后,将订单提交给商家收银台系统;
  • 商家收银台系统将订单推给商家后台;
  • 商家后台将订单推给支付宝请求完成扣款;
  • 支付宝扣款成功,通知商家后台系统,同时给用户发送消息通知。

以上如果商家不是直连支付宝/微信,而是对接其他三方支付公司,那么支付订单可由商家推给支付宝/微信官方,改为推给对接的三方支付公司即可。一旦支付宝扣款成功,那么对接的支付公司会回调通知商家这笔订单的支付结果。

3. 主扫和被扫的对比

相同点

  • 两者的基本原理都是一样的;
  • 扫码支付的限额都比较低,远低于网银支付;

不同点

  • 用户主动操作对象不一样,一个是用户,一个是商家;
  • 被扫的话,在用户付款码中就会包含用户的唯一ID标识,支付宝/微信可以直接找到该用户完成扣款操作。

4. 异常情况处理

在我们进行扫码支付时,其实也会出现一些故障,那么针对这些故障,一般会有什么补救措施呢?

1)扫码枪付款时,突然网络不稳定不确定是否已付款了怎么办?

答:出现网络不稳定,可以由两种处理方式:

  1. 可以调用查询接口去主动查询微信/支付宝渠道该笔订单是否已支付;如已支付,则就会更新订单状态;
  2. 直接调用订单撤销接口,即不管用户有没有完成付款,这笔订单终止,已付款则会退回余额;

2)出现重复支付的问题怎么办?

答:系统作自动退款处理。一般重复支付指的是一个商品重复请求多次,并且多次完成支付了。针对这种情况,商家所接入的支付机构会判断出来,同时会作自动退款处理的。

二、静态聚合码

正常来讲:支付宝和微信的二维码是不互通的,支付宝不会支持微信的二维码进行付款。而近几年我们经常看到商家贴出静态聚合码,消费者通过这个码使用微信付款,也可以使用支付宝付款,那么这里面的逻辑是怎样的呢?

1. 实现原理

任何支付行为都是通过一个支付链接来完成,而支付链接内容会包括必要信息,如来源、金额、商户信息等。

而每个支付链接只能其对应的服务端处理,即用户使用支付宝二维码完成支付行为的,最终付款会指向支付宝的服务端的;而微信二维码则会指向微信的服务端。

要实现上述的聚合码付款,那么就需要一个前置的中间环节,需要这样的一个通用的二维码来优先判断付款来源方。在技术实现上会有userAgent来判断用户来自哪种客户端。如果是MicroMessenger 则表示微信;AlipayClient是支付宝。

1) 时序图如下

2) 大概流程图

  • 用户通过微信/支付宝扫描静态聚合码;
  • 系统判断扫码来源是微信还是支付宝;技术层面一般会用userAgent进行区分;
  • 确认来源后请求对应的渠道,如确认是支付宝,则直接请求支付宝进行支付即可;
  • 支付完成,异步通知商户对应的支付结果;

聚合二维码的推出,的确提高用户和商户的便利性;同时也会帮助商户实现统一对账功能,解决财务上对账难的烦恼。

三、条码互联互通

1. 背景

中国人民银行印发银发【2019】209号文件,明确指出要推动条码支付互联互通。简单的讲就是以后要推动支付宝app可以去扫微信二维码进行付款啦。

部分文件内容如下:

2. 互联互通的价值

央行主推条码业务进行互联互通,至少有三个价值点:

1)为商家和用户提供便利

对于商家而言,无需在提供一堆不同的二维码,也无需中间的聚合服务商赚差价;对于用户而言,也无需识别区分是何种二维码,打开app扫一扫就对了。

2)梳理规范,降低风险

更多二维码交易,将会通过银联/网联进行清算,交易更加规范和统一,有利于风险共享和识别,对监管有利;降低聚合支付的市场空间,有利于保持秩序。

3)打破市场竞争壁垒,更加有利于公平

相对更公平一些,而市场格局不会发生太大变化。同样的,在“断直连”之后对于市场格局也并未影响支付宝微信的市场份额。

支付互联互通之后,那么更多拼的是服务和价值;谁的服务好,提供的价值多,谁就能占据更多的用户。

3. 如何实现互联互通

清算机构:是指银联和网联这两家具有资金清算能力的机构,简称央妈的一胎和二胎。每天资金的清结算均有这两家处理,所有的支付公司、银行都会在清算机构里面开立账户。

实现互联互通,我认为至少要做好以下两件事情:

  1. 清算机构重新制定支付二维码规范;所有支付机构和银行均得统一参与;
  2. 不同支付机构的二维码要互认互扫。就是支付宝扫码发现是微信支付链接,不能直接屏蔽告诉用户不能支付,而是要继续完成支付,最后将用户的账户资金扣减。

说明:

  • 打开支付宝扫一扫功能去扫微信付款码;
  • 商家层面会请求所对接的支付机构进行预下单处理,如微信;
  • 支付宝层面受理到该微信支付链接,则允许支付宝用户下单支付;
  • 用户端完成支付宝扣款100元(以100为例);商家层面提示微信收款完成,并记账100元;
  • 清算机构准实时给支付宝、微信调账处理。微信加100元;支付宝减100元;清分完毕!

4. 资金怎么流向

在资金流层面,基本有一条恒定规则:用户哪款app去付款,就是扣谁的钱;

举例:就算是实现互认互扫之后,用户用支付宝扫微信商家收款码;那么扣款对象一定是用户支付宝账户,而收款对象为微信商家。

示例展示如下图所示:

  • 用户用支付宝付款,对应支付宝账户减少100元;
  • 清算机构会对支付宝、微信等支付机构进行调账调整通知,分别是:支付宝在清算机构的账户减少100元,微信对应的账户增加100元;
  • 微信在清算机构的账户余额增加100元,则对应给其商户账户增加100元。最终实现资金对平。

四、小结

聊到这里,扫码支付的出现,已经极大的方便了用户的付款操作,让我们大步踏向“无现金”时代啦。

同时为了更清楚阐述扫码支付,我们现在再追本溯源一下,扫码支付的本质到底是什么呢?造就它的底层是什么呢?

其实就是快捷支付。

因为快捷的签约绑卡后,通过简单的验证就可以完成扣款操作;这种便利性造就了扫码支付的繁荣,也会造就后续刷脸支付的繁荣。

作为文章的结尾,再送上自己对于这个拆解主题的产品思考,分为5个维度:

1)梳理产品的应用场景,建立概念模型;即我们在哪些场景使用扫码支付的,这个场景的表述决定用户对产品的接受程度。

2)确立产品价值;扫码支付已经成为最主流付款方式,与生活密不可分,提高付款效率,这是扫码支付的产品价值;但扫码背后的逻辑大家都会比较忽视,而将它呈现出来让更多感兴趣的人理解,这也是文章的最大价值。

3)拆解业务流程的关键角色;关注产品的参与角色方,是让我们快速了解产品的关键点;比如扫码支付的关键角色:用户端、商户端、微信端/支付宝端、清算机构。只有拆解这些,整个的思路会更清晰。

4)确立产品核心流程,以及底层技术的实现方式。首先确立产品层面的核心流程。即:根据关键角色之间会如何形成交互关联,信息传递的;哪些信息的关联是这个业务不会变的?比如普通扫码支付和静态聚合码支付的相同点是什么,这个相同点就是业务所不变的。而底层的技术考虑主要是方便验证产品思路的可行性。

5)简化呈现出来。对于一件事情真正弄懂的关键判断条件之一,就是:尽可能将原本复杂的底层逻辑简化为形象简单的事情表述出来,用户听的越清楚,则表明自己懂的越透彻。

 

作者:JANMING;公众号:产品思考随笔

本文由 @JANMING 原创发布于人人都是产品经理,未经作者许可,禁止转载。

题图来自Unsplash,基于CC0协议。

给作者打赏,鼓励TA抓紧创作!
更多精彩内容,请关注人人都是产品经理微信公众号或下载App
评论
评论请登录
  1. 通俗易懂,很受益 ,谢谢分享

    回复
  2. 结尾赞👍

    回复
  3. 那么问题来了,用户A在支付宝被扣的钱,商家b也是在支付宝收钱。那么钱都是归支付宝管理,那支付宝为什么要扣了钱后给微信加钱呢?

    回复
    1. 主动是不可能的,这时就需要央妈来定规矩了,既可实现监管需要,又可以谋求统一

      回复
    2. 都是用支付宝付款和加款是跟微信没关系呀

      回复
    3. 你逻辑有问题

      回复
    4. 注意用户支付的平台和收款商户的收款的平台啦
      情景一:用户A使用支付宝扫支付宝的商家码,资金都是支付宝管理,不需要清帐;
      情景二:用户B使用支付宝扫了微信的商家码,并支付100元,为了让两个资金的流向层面互通,支付宝用户C的支付宝账号减少了100,微信商家的微信账户自然需要增加了100元的。

      回复
  4. 更多咨询,请查收个人公众号:产品思考随笔

    回复