看到你们都在一本正经的胡说八道,我就放心了。
-- 一本正经的分割线 --
终于有明白的人(@https://www.zhihu.com/people/jeffchen)在远方点起一盏灯,可能是灯光太过微弱,大家都看不到
-- 又一条一本正经的分割线 --
需要前置了解的知识点有:
二维码生成规则(略知)
http协议(熟悉)
Q:首先第一个问题是二维码扫码后为什么会自动跳转到网页上?
A:因为这个二维码扫码后得到的都是一个字符串,但是针对不同的情况,app(微信、支付宝)、手机会对得到结果进行解析,针对扫码支付这种场景得到的就是带http://前缀的字符串,有这个就会直接调用内置浏览器进行访问。大家可以试试用网上生成二维码的工具分别生成“www(dot)163(dot)com”、“http(colon)//www(dot)163(dot)com”(请自行将(dot)转换成.,(colon)转换成:)用微信、支付宝刷观察结果。Q:从上一个问题可知,入口页面只有一个,如何实现同时微信和支付宝支付?
A:主要用http协议中定义的http报文头中的user-agent的值来判断,有MicroMessenger关键字的即为微信发送的请求,有AlipayClient关键字的即为支付宝发送。然后问题就简单了,通过重定向等方式分别跳转至自行开发的支付宝、微信支付网关即可实现一码多支付方式。代码之前有人提供就不重复了。参考:
蚂蚁金服开放平台 - 文档中心