今天在浏览 V2EX 时,看到了一个令人啼笑皆非的帖子。OP 在 GitHub 上开源了一个能将支付宝和微信收款码二合一的项目。由于在项目中,OP 默认填写了自己的支付宝和微信信息;当项目被 fork 出去后,很多人没有修改其中的信息。特别地,有一些被用在恶意用途上的 fork 分支也没有修改。这样一来,就有不少人扫描这些生成的二维码而受骗,最终导致 OP 的微信被封禁了收款功能——连红包都收不了。
虽然故事本身令人啼笑皆非,但是自己动手将支付宝和微信收款码合二为一的想法还是很有趣的。在 Google 上搜索了一番后,我发现收款码合并的套路大概有两种。
其一是以芝麻收款为代表的第三方解决方案。这些第三方解决方案要求用户分别上传支付宝和微信的支付码,而后返回一个新的聚合收款码。按检索到的信息,芝麻收款以前是不收费的,但现在要收费 4.5 元。考虑到收款码涉及到资金流动,交予第三方本身是不安全的;并且,这样一个简单的事情还要收钱,未免有点「故意利用技术壁垒」的意思。作为一个更乐于自己动手丰衣足食的人,妥妥是忍不了的。
其二是以上述 OP 为代表的开源解决方案。这些解决方案对用户动手的能力更高,并且要求有一个可被公共访问的服务器来执行判断脚本。在这种套路里,还可以细分流派。一派是以 PHP 等为代表的解决方案,这要求上述服务器能够执行 PHP 等脚本。这一派的解决方案不适用于 GitHub Pages 等静态页面博客,因而使用范围受限。一派则是以静态 HTML 附议 CSS 和 JavaScript 为解决方案。这一派的方案适用面就广泛得多了。
本文介绍一种以静态 HTML 为基础,辅以 CSS 和 JavaScript 的方案,用以生成聚合收款码。