主页 > 新体验 > 设计沙龙 > 技术调研
  • 快捷支付的背后逻辑:浅析扫码支付的实现流程

    adinnet/2017-04-25 16:34/技术调研

    二维码——信息的载体

    说起扫码支付,就不得不提二维码。线下所有的扫码支付都是以扫二维码开始,通过扫描二维码,我们可以看到付款页面商家的名称,所以二维码在这里承担的角色是——信息的载体它通过黑白相间的排列组合记录信息。不止是支付,我们看到很多APP的下载链接,也是用二维码的形式记录链接地址。现在网上有很多现成的工具,输入一段内容后,即可把内容生成二维码,所以生成二维码这一步的实现流程不存在技术难题。

    选择二维码作为付款信息的载体,一方面是受收银台扫描商品一维码来识别商品,这一场景的启发,另一方面是二维码本身可存储足够大的数据信息,而且支持不同的数据格式,同时二维码有一定的容错性,部分损坏后仍可正常读取。这一切,使得二维码成为了被大众广泛使用的信息载体。

    二维码识别——APP校验及后台解析

    二维码携带的信息,我们无法通过肉眼识别,不同的支付机构在二维码中注入的信息规则不一致,需要对应的服务器根据其编码规则解析。我们每次使用扫一扫识别二维码后,都会提示“正在处理中”,意味着后台服务器正在解析这个二维码的内容,比如核对二维码携带的链接地址是否合法(像微信解析出是支付宝的链接会屏蔽)、是属于支付链接还是属于外链网址等。

    校验的规则很多,就支付链接来说,服务器校验属于自己公司的支付链接后,会获取支付链接中包含的商户信息,进而判断该商户是否存在、商户状态是否正常等,所有校验通过后,后台服务器会把商户名称返回到发起用户的手机APP上,同时告诉APP,服务器校验通过了,APP你可以调起收银台了。

    于是我们确定支付,输入支付密码,后台继续校验支付密码的正确性,正确的话支付就此完成。

    扫码支付流程的关键步骤

    从这个过程来看,要实现扫码支付的流程,更关键的是要定义允许识别哪些类型的二维码以及后台的校验逻辑。

    定义允许识别哪些类型的二维码。也就是说,当APP扫一扫,如果产品经理定义,发现二维码携带的信息是别家的网址“https://www.tina.com”,就在我们APP这边进行过滤,比如只要不是以“https://www.wx.com”开头的,不去请求服务器。所以,有些时候,明明是网址,但是解析后你看到的是一串纯文本。

    比如定义支付链接的格式为“https//qr.wx.com……”,每次检测到该链接开头的,就请求服务器去校验该支付链接的有效性。

    此外,还需要定义平台自有的解析规则,如微信识别为付款码是以13开头,微信检测到数字内容是以13开头的,会先去匹配其是否符合付款码的规则,符合的话才会进行后续的解析,如下图所示:

    以上说的是主扫,也就是用户扫商家;对于商家扫用户,原理是一样的,只不过用户的付款码中包含的是识别该用户的专属ID,商家通过收银系统向微信或支付宝提交订单时,把扫码枪识别出来的信息传递给微信或支付宝,他们根据这个专属ID找到对应的用户,通过代扣直接就扣款了。

    文章摘录链接 :http://www.woshipm.com/pd/644523.html

上一篇:如何把那么多经典的设计模型用起来?下一篇:如何让 Xcode 在读写上提速100倍?
400-021-8655
在线咨询
在线留言