扫码支付,已经成为了普及率最高的支付方式之一。

很多收款人为了方便,会把各个服务的二维码都打印出来贴到一起,导致我们扫码的时候经常扫到别的二维码,遇到下图这种错误:

微信扫描支付宝二维码得到的结果
支付宝扫描微信二维码得到的结果

于是有人想出了这样的办法——把这些二维码都聚合到一起,生成一个统一的二维码,不论用户使用哪一种支付方式扫码都能付款。

问题似乎完美的解决了,不过这背后的实现方式我们应该了解一下。

统一二维码是怎样生成的?

以微信和支付宝为例,我们用微信直接去扫支付宝二维码、或者支付宝去扫微信二维码,会遇到上面的错误,是因为微信和支付宝只能认识自家的链接。

二维码的本质就是一段字符串,而统一二维码的作用就是用一个统一的链接来替代这些支付方式。

如果我们用支付宝去扫统一二维码,支付宝会请求这个链接,这个链接后面的服务器会通过一些手段,比如请求中的 User-Agent 来判断你是用什么客户端扫的码,然后再把我们之前生成统一二维码时提交的支付宝的付款码返回来,我们就可以用支付宝扫码支付了。

扫码流程图

其它支付方式也是一样的道理。

安全风险不容忽视

需要注意的是,所有转换链接的服务,都可以创建一个简单规则,来改变原有链接。比如进去的是你的支付宝支付码,转换后变成了别人的支付码。付款后你也没认真看,钱最后都进了别人的口袋,怎么办?

别以为这是危言耸听。此前就有新闻报道说,一家超市的收款二维码,被别人恶意掉包了,老板等到月底核算的时候才发现帐有问题。

如何提防

对于商家而言:

  1. 选择一些用户多、知名度高的服务平台;
  2. 在用户转账后,需要及时确认转账是否成功,并且检查收款人是否为自己的收款账户;
  3. 如果使用微信或者支付宝收款,建议开启语音到账提醒功能,可以及时确认收款到账。

对于用户而言:

  1. 在扫码前注意商家的收款二维码是否为聚合支付的二维码。商家可以去支付宝或者微信申请官方的专用收款码,收款码上只有支付宝或者微信支付的 Logo, 而聚合支付的二维码一般都会有多种支付方式的 Logo。
    聚合收款码上一般有多个 Logo
  2. 如果是聚合支付码,在扫码后和商家确认收款方是否正确,都没问题了再付款。


iOS、Python 开发者,坐标魔都,喜欢写作分享、折腾有趣好玩的东西。 我的公众号:Slark,希望能和热爱技术、写作、创业的朋友一起交流。