快捷支付的本质:拆解扫码支付的实现原理
如今在中国,二维码支付已经成为了人们最重要的支付方式。本文回答了二维码的种类、原理、互联互通的逻辑以及扫码住背后资金流的走向问题。
目前在大街小巷,扫码支付已经成为了最受欢迎的支付方式,那么大家是否会好奇这背后的支付原理是怎样的?
同时我近期看到央行开始主推“标准条码互联互通”的新闻,感觉还挺有趣的,于是抽空对扫码支付进行了一次大梳理,也顺便分享出来。那么通过这篇文章,我将主要介绍三件事:
- 常见主扫和被扫支付的原理?
- 常见的静态聚合码是如何实现一码多付的?
- 条码支付互联互通是什么?有什么价值?以及可能会如何实现的?
一、扫码支付
我们常见的扫码支付主要分为主扫(你扫商家)和被扫 (商家扫你)两种;
要特别讲明白扫码支付,就不得不提一下二维码这个plus的东西。我们生活中存在各种应用二维码的东西,如扫码加好友,扫码下载app,扫码支付等,同时也存在条形码,类似超市的付款条码,商品条码等。
与条码相比,二维码记录信息容量更大,具有容错性,所以是当前最受欢迎的一种记录形式。
二维码/条码都是一种加密的信息承接载体,都是将复杂的东西简化给我们呈现出来。
当我们通过扫一扫进行扫描二维码的时候,实际上就是通过一定的规则将二维码里面的内容解析出来,比如地址合法性,是不是支付链接,还是外链网址之类的。
1. 主扫的原理
1)先睹为快
2)主扫支付的流程
3)主扫的核心逻辑
在我们实际的过程中,经常会出现支付宝扫支付宝二维码有时会提示已失效,扫其他二维码会告知不可用,那么这里扫码的原理是怎样的,做了哪些具体判断呢?
- 判断二维码链接是不是支付链接;
- 判断该支付链接是不是自家的。如果不是,则拦截,目前支付宝的支付链接是“https://qr.alipay.com…”,则允许通过请求服务器,但如果检测是“https://qr.wx.com…”,说明是微信支付链接,支付宝则反手就给你屏蔽了~
- 之后再去解析二维码是否符合自家规则,目前支付宝的二维码是“28”开头,微信一般是”13“开头;解析之后,再判断二维码是否有效;有效则进行支付即可;无效则提示二维码失效。
2. 被扫的原理
场景:我们去超市买东西经常都会要求打开付款码,然后扫码枪进行扫码支付。
特点:操作步骤简单、支持离线付款、付款效率高
1)先睹为快
或许在这里很多人会纳闷这里有条形码和二维码,最终的支付到底是扫条形码还是二维码呢?
其实这里取决于扫码枪,现阶段市面上有两类:一维扫码枪 (仅可以支持扫条形码)和二维扫码枪(两个都可以扫)。
2)被扫付款逻辑
- 用户打开付款码;
- 收银员输入用户应付款金额,并生成订单;
- 扫码枪扫码之后,将订单提交给商家收银台系统;
- 商家收银台系统将订单推给商家后台;
- 商家后台将订单推给支付宝请求完成扣款;
- 支付宝扣款成功,通知商家后台系统,同时给用户发送消息通知。
以上如果商家不是直连支付宝/微信,而是对接其他三方支付公司,那么支付订单可由商家推给支付宝/微信官方,改为推给对接的三方支付公司即可。一旦支付宝扣款成功,那么对接的支付公司会回调通知商家这笔订单的支付结果。
3. 主扫和被扫的对比
相同点:
- 两者的基本原理都是一样的;
- 扫码支付的限额都比较低,远低于网银支付;
不同点:
- 用户主动操作对象不一样,一个是用户,一个是商家;
- 被扫的话,在用户付款码中就会包含用户的唯一ID标识,支付宝/微信可以直接找到该用户完成扣款操作。
4. 异常情况处理
在我们进行扫码支付时,其实也会出现一些故障,那么针对这些故障,一般会有什么补救措施呢?
1)扫码枪付款时,突然网络不稳定不确定是否已付款了怎么办?
答:出现网络不稳定,可以由两种处理方式:
- 可以调用查询接口去主动查询微信/支付宝渠道该笔订单是否已支付;如已支付,则就会更新订单状态;
- 直接调用订单撤销接口,即不管用户有没有完成付款,这笔订单终止,已付款则会退回余额;
2)出现重复支付的问题怎么办?
答:系统作自动退款处理。一般重复支付指的是一个商品重复请求多次,并且多次完成支付了。针对这种情况,商家所接入的支付机构会判断出来,同时会作自动退款处理的。
二、静态聚合码
正常来讲:支付宝和微信的二维码是不互通的,支付宝不会支持微信的二维码进行付款。而近几年我们经常看到商家贴出静态聚合码,消费者通过这个码使用微信付款,也可以使用支付宝付款,那么这里面的逻辑是怎样的呢?
1. 实现原理
任何支付行为都是通过一个支付链接来完成,而支付链接内容会包括必要信息,如来源、金额、商户信息等。
而每个支付链接只能其对应的服务端处理,即用户使用支付宝二维码完成支付行为的,最终付款会指向支付宝的服务端的;而微信二维码则会指向微信的服务端。
要实现上述的聚合码付款,那么就需要一个前置的中间环节,需要这样的一个通用的二维码来优先判断付款来源方。在技术实现上会有userAgent来判断用户来自哪种客户端。如果是MicroMessenger 则表示微信;AlipayClient是支付宝。
1) 时序图如下
2) 大概流程图
- 用户通过微信/支付宝扫描静态聚合码;
- 系统判断扫码来源是微信还是支付宝;技术层面一般会用userAgent进行区分;
- 确认来源后请求对应的渠道,如确认是支付宝,则直接请求支付宝进行支付即可;
- 支付完成,异步通知商户对应的支付结果;
聚合二维码的推出,的确提高用户和商户的便利性;同时也会帮助商户实现统一对账功能,解决财务上对账难的烦恼。
三、条码互联互通
1. 背景
中国人民银行印发银发【2019】209号文件,明确指出要推动条码支付互联互通。简单的讲就是以后要推动支付宝app可以去扫微信二维码进行付款啦。
部分文件内容如下:
2. 互联互通的价值
央行主推条码业务进行互联互通,至少有三个价值点:
1)为商家和用户提供便利
对于商家而言,无需在提供一堆不同的二维码,也无需中间的聚合服务商赚差价;对于用户而言,也无需识别区分是何种二维码,打开app扫一扫就对了。
2)梳理规范,降低风险
更多二维码交易,将会通过银联/网联进行清算,交易更加规范和统一,有利于风险共享和识别,对监管有利;降低聚合支付的市场空间,有利于保持秩序。
3)打破市场竞争壁垒,更加有利于公平
相对更公平一些,而市场格局不会发生太大变化。同样的,在“断直连”之后对于市场格局也并未影响支付宝微信的市场份额。
支付互联互通之后,那么更多拼的是服务和价值;谁的服务好,提供的价值多,谁就能占据更多的用户。
3. 如何实现互联互通
清算机构:是指银联和网联这两家具有资金清算能力的机构,简称央妈的一胎和二胎。每天资金的清结算均有这两家处理,所有的支付公司、银行都会在清算机构里面开立账户。
实现互联互通,我认为至少要做好以下两件事情:
- 清算机构重新制定支付二维码规范;所有支付机构和银行均得统一参与;
- 不同支付机构的二维码要互认互扫。就是支付宝扫码发现是微信支付链接,不能直接屏蔽告诉用户不能支付,而是要继续完成支付,最后将用户的账户资金扣减。
说明:
- 打开支付宝扫一扫功能去扫微信付款码;
- 商家层面会请求所对接的支付机构进行预下单处理,如微信;
- 支付宝层面受理到该微信支付链接,则允许支付宝用户下单支付;
- 用户端完成支付宝扣款100元(以100为例);商家层面提示微信收款完成,并记账100元;
- 清算机构准实时给支付宝、微信调账处理。微信加100元;支付宝减100元;清分完毕!
4. 资金怎么流向
在资金流层面,基本有一条恒定规则:用户哪款app去付款,就是扣谁的钱;
举例:就算是实现互认互扫之后,用户用支付宝扫微信商家收款码;那么扣款对象一定是用户支付宝账户,而收款对象为微信商家。
示例展示如下图所示:
- 用户用支付宝付款,对应支付宝账户减少100元;
- 清算机构会对支付宝、微信等支付机构进行调账调整通知,分别是:支付宝在清算机构的账户减少100元,微信对应的账户增加100元;
- 微信在清算机构的账户余额增加100元,则对应给其商户账户增加100元。最终实现资金对平。
四、小结
聊到这里,扫码支付的出现,已经极大的方便了用户的付款操作,让我们大步踏向“无现金”时代啦。
同时为了更清楚阐述扫码支付,我们现在再追本溯源一下,扫码支付的本质到底是什么呢?造就它的底层是什么呢?
其实就是快捷支付。
因为快捷的签约绑卡后,通过简单的验证就可以完成扣款操作;这种便利性造就了扫码支付的繁荣,也会造就后续刷脸支付的繁荣。
作为文章的结尾,再送上自己对于这个拆解主题的产品思考,分为5个维度:
1)梳理产品的应用场景,建立概念模型;即我们在哪些场景使用扫码支付的,这个场景的表述决定用户对产品的接受程度。
2)确立产品价值;扫码支付已经成为最主流付款方式,与生活密不可分,提高付款效率,这是扫码支付的产品价值;但扫码背后的逻辑大家都会比较忽视,而将它呈现出来让更多感兴趣的人理解,这也是文章的最大价值。
3)拆解业务流程的关键角色;关注产品的参与角色方,是让我们快速了解产品的关键点;比如扫码支付的关键角色:用户端、商户端、微信端/支付宝端、清算机构。只有拆解这些,整个的思路会更清晰。
4)确立产品核心流程,以及底层技术的实现方式。首先确立产品层面的核心流程。即:根据关键角色之间会如何形成交互关联,信息传递的;哪些信息的关联是这个业务不会变的?比如普通扫码支付和静态聚合码支付的相同点是什么,这个相同点就是业务所不变的。而底层的技术考虑主要是方便验证产品思路的可行性。
5)简化呈现出来。对于一件事情真正弄懂的关键判断条件之一,就是:尽可能将原本复杂的底层逻辑简化为形象简单的事情表述出来,用户听的越清楚,则表明自己懂的越透彻。
作者:JANMING;公众号:产品思考随笔
本文由 @JANMING 原创发布于人人都是产品经理,未经作者许可,禁止转载。
题图来自Unsplash,基于CC0协议。
代付、快捷、网银、扫码这些产品有什么区别
通俗易懂,很受益 ,谢谢分享
结尾赞👍
那么问题来了,用户A在支付宝被扣的钱,商家b也是在支付宝收钱。那么钱都是归支付宝管理,那支付宝为什么要扣了钱后给微信加钱呢?
主动是不可能的,这时就需要央妈来定规矩了,既可实现监管需要,又可以谋求统一
都是用支付宝付款和加款是跟微信没关系呀
你逻辑有问题
注意用户支付的平台和收款商户的收款的平台啦
情景一:用户A使用支付宝扫支付宝的商家码,资金都是支付宝管理,不需要清帐;
情景二:用户B使用支付宝扫了微信的商家码,并支付100元,为了让两个资金的流向层面互通,支付宝用户C的支付宝账号减少了100,微信商家的微信账户自然需要增加了100元的。
更多咨询,请查收个人公众号:产品思考随笔