2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > 支付宝 微信 QQ 收款二维码三合一

支付宝 微信 QQ 收款二维码三合一

时间:2018-10-17 09:17:15

相关推荐

支付宝 微信 QQ 收款二维码三合一

最近折腾了一下合并收款码,简单记录一下折腾的过程,方法不唯一,只是提供一种思路,如果各位大佬有更加简单粗暴的办法,那就更好了。

原理

首先解析出三个二维码的内容,用 Nginx 判断 User agent 后,返回302,跳转到对应的 URL。

支付宝

支付宝的收款码内容大概是这个样子的

/FKX04064LA1PNS8SI7BLE4

抓了一下支付宝的 UA,大概是这个样子的:

Mozilla/5.0 (Linux; U; Android 6.0.1; zh-CN; A0001 Build/MMB29M) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/40.0.2214.89 UCBrowser/11.3.8.909 UCBS/2.10.1.4 Mobile Safari/537.36 Nebula AlipayDefined(nt:WIFI,ws:432|0|2.5) AliApp(AP/10.0.12.042101) AlipayClient/10.0.12.042101 Language/en useStatusBar/true

然后就有了下面这段 Nginx 配置

if ( $http_user_agent ~* "MicroMessenger" ) { return 302 "wxp://f2f0adN69vNDsE9d2xVmp258P9cAqEU_07EU"; }if ( $http_user_agent ~* "QQ" ) { return 302 "https://i./wallet/sqrcode.htm?m=tenpay&a=1&u=1798390978&ac=EE86F6B43A000048EEABEE3E0CA8BE91F063DC3C6DACAD291A98B1CDF4108FA9&n=Zohar Wang&f=wallet"; }

但是经过测试,微信和 QQ 都不能正常弹出支付窗口,搜了一下,貌似是因为调用微信和 QQ 的支付需要申请一个特殊的支付接口,而且相当麻烦,不然只能扫收款码进行支付。

但是,长按二维码识别,也是可以正常弹出支付窗口,于是,曲线救国,用 Photoshop 做了两张图:

然后,用 Nginx 判断 User agent 后,跳转到相应的图片。

经过测试,微信和 QQ 正常弹出支付窗口。

小插曲

我最初使用的是 pay.iwch.me 这个域名做跳转,但微信扫描后出现下图的风险通知:

更换至 域名后,没有再次出现这个风险通知,初步怀疑是 iwch.me 域名没有备案,而 有备案的原因。但是因为我没有其他有备案的域名做测试,所以不能确定是不是因为域名没备案而导致的风险通知。

总结

完整的 Nginx 配置如下:

server{listen 80;listen [::]:80;listen 443 ssl http2;listen [::]:443 ssl http2;server_name ;server_tokens off;location /generate_204 { return 204; }location /zohar {if ( $http_user_agent ~* "AlipayClient" ) { return 302 "/FKX04064LA1PNS8SI7BLE4"; }if ( $http_user_agent ~* "MicroMessenger" ) { return 302 "/static/pay/zohar-wechat.png"; }if ( $http_user_agent ~* "QQ" ) { return 302 "/static/pay/zohar-qq.png"; }}location / {return 200 Success;default_type text/html;}include enable-ssl-yecdn.conf;}

最后,生成一个跳转域名的二维码即可使用。

参考:/R8Mqhfc

转载:/R8MGN2W

Python学习交流群:238757010

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。