PHP制作 微信、支付宝、QQ支付多合一收款二维码

最近二维码收款很火,例如大家都知道的芝麻收款就是其一。

今天就和大家探讨下,如何制作多合一二维码。

第一,我们先来了解他的原理与构成。

多合一二维码是利用判断用户所使用APP的UA进行分析并返回相符合的值。

那么如何获取APP的UA呢?

首先应该知道PHP如何获得各浏览器UA的代码

<?php
//php获取浏览器UA
echo $_SERVER['HTTP_USER_AGENT'];

那我们如何获取QQ、微信、支付宝各个app的UA呢?

把上面的代码上传到php空间里访问获取UA

我以支付宝为例,QQ、微信等其他操作类似

1.找个好友把获取UA的链接发送给好友

2.点击该链接获取UA

以下是我获取的支付宝APP UA

//支付宝APP UA
Mozilla/5.0 (Linux; U; Android 6.0.1; zh-CN; Redmi 4 Build/MMB29M) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/40.0.2214.89 UCBrowser/11.5.0.939 UCBS/2.10.1.6 Mobile Safari/537.36 Nebula AlipayDefined(nt:WIFI,ws:360|0|3.0) AliApp(AP/10.0.15.051805) AlipayClient/10.0.15.051805 Language/zh-Hans useStatusBar/true  

获取QQ 微信的UA同支付宝获取方法

//微信
  
Mozilla/5.0 (Linux; Android 6.0.1; Redmi 4 Build/MMB29M; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/53.0.2785.49 Mobile MQQBrowser/6.2 TBS/043220 Safari/537.36 MicroMessenger/6.5.8.1060 NetType/WIFI Language/zh_CN  


//QQ

Mozilla/5.0 (Linux; Android 6.0.1; Redmi 4 Build/MMB29M; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/53.0.2785.49 Mobile MQQBrowser/6.2 TBS/043220 Safari/537.36 V1_AND_SQ_6.5.5_1_TIM_D TIM2.0/1.1.5.1686 QQ/6.5.5  NetType/WIFI WebP/0.3.0 Pixel/1080

第二步,获取支付宝、QQ、微信的收款码。

还是以支付宝为例(PS:例子一用到底)。

点击 首页->收款->长按二维码保存二维码到本地。

支付宝单独的二维码收款这就到手了,微信、QQ相类似,就不一一阐述过程。

基本准备工作到这一步就完成了。

第三步,使用php获取UA 代码判断所用APP类型,并返回相关信息。

利用PHP直接判断UA里所包含的特定字符。

//判断扫描二维码的APP为 QQ
if(strstr($_SERVER['HTTP_USER_AGENT'], 'QQ/')){
 echo 'QQ';
 //判断扫描二维码的APP为 支付宝
}ELSE IF(strstr($_SERVER['HTTP_USER_AGENT'], 'Alipay')){
 echo '支付宝';
 //判断扫描二维码的APP为 微信
}ELSE IF(strstr($_SERVER['HTTP_USER_AGENT'], 'MicroMessenger/')){
echo '微信';
}

最初在这里遇到个误区,不管是使用微信访问还是使用QQ访问,全部是跳转到QQ相关页面。后来仔细一看UA代码(第一步),原来QQ、微信里的UA全部都包括QQ这个字符,最后就在判断微信与QQ UA里QQ字符串后面加了个“/”,微信也一样在后面加“/”。

第四步,制作PHP页面,并上传到PHP空间。

PS:

QQ、微信 无法直接调起微信转账页面,所 以需要长按识二维码别进行转账。

支付宝,可以直接扫描二维码进行转账操作,不知道这样是便于用户,还是一个小BUG。

所以,就需要单独给 QQ、微信制作一个二维码识别页面。

<!doctype html>
<html>
<head>
<meta charset="UTF-8" />
<title>支付</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=0, minimum-scale=1.0, maximum-scale=1.0">
 </head>
<body>
<img src="<?
if($_GET["app"]=="qq"){//使用APP为QQ
ECHO 'qq.png';//QQ支付的二维码图片位置
}else if($_GET["app"]=="weixin"){//使用APP为微信
 'weixin.png';//微信支付的二维码图片位置
}?>"/>
<br>长按二维码识别,向商家付款

</body>
</html>

现在来制作最最重要的index.php页面,也就是我们要向用户展示的二维码内容页

<?php  
header('HTTP/1.1 301 Moved Permanently');
if(strstr($_SERVER['HTTP_USER_AGENT'], 'QQ/')){
header('Location: erweima.php?app=qq');
}else if(strstr($_SERVER['HTTP_USER_AGENT'], 'Alipay')){
header('Location: 此处输入支付宝二维码所识别的链接');	
}else if(strstr($_SERVER['HTTP_USER_AGENT'], 'MicroMessenger/')){
header('Location: erweima.php?app=weixin');
}
?> 

现在把index.php、erweima.php上传到PHP空间。

然后利用二维码生成技术 把 http://你的网址/index.php 网址生成二维码,这样就得到了我们需要的三合一二维码。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏腾讯移动品质中心TMQ的专栏

边开发边测试--故事从闹钟讲起

你开发过alarm相关的应用吗? 你测试过alarm相关的应用吗? 如果答案是肯定的,建议看官停下来拍拍砖。 手机管家新年运营功能有一个招牌:红包闹钟。 功能发...

2239
来自专栏蜉蝣禅修之道

以太坊DApp开发初探

关于“以太猫”的流行,相信不少人都有所耳闻,甚至入手养过几只。从游戏性来说,其本质就是一个简单的收集交换类游戏,然鹅,是区块链赋予了它魅力,让用户每一只猫永远不...

52313
来自专栏纯洁的微笑

谈谈我与 Intellij IDEA 的故事

说到这款 IDEA,很早就想写一篇关于它的文章了,可不知从何处写起,刚好一位师弟问起我来,正好写一篇入门文章,本文的涉及的快捷键主要针对于 Windows系统「...

622
来自专栏Python私房菜

15行Python代码,帮你搞懂令牌桶算法

在网络中传输数据时,为了防止网络拥塞,需限制流出网络的流量,使流量以比较均匀的速度向外发送,令牌桶算法就实现了这个功能,可控制发送到网络上数据的数目,并允许突发...

1105
来自专栏崔庆才的专栏

使用requests+正则表达式爬取猫眼电影排行

本节中,我们利用requests库和正则表达式来抓取猫眼电影TOP100的相关内容。requests比urllib使用更加方便,而且目前我们还没有系统学习HTM...

5497
来自专栏张善友的专栏

Entity Framework Code First 支持存储过程

存储过程(Stored Procedure)不仅仅是将多得简直荒唐的业务逻辑塞入数据库的一种方式;它还是避免将多得简直荒唐的存储逻辑塞入应用程序层(applic...

1788
来自专栏Crossin的编程教室

【Python 第2课】print

今天早上醒来,发现咱们的同学人数一夜之间多了50,后来又陆陆续续来了很多,于是我坚持下去的信心又增加了不少。在这里感谢连客官微的宣传,表示今晚将用加班写代码来表...

2627
来自专栏汇智网教程

web3.eth.getBalance

26310
来自专栏PHP实战技术

微信企业付款到个人钱包引发的坑之反思~!

企业付款到个人钱包也就是用户在微信公众平台提现可以直接打入提现者微信的钱包!但要满足: 1)企业开通微信支付90天 2)连续30天有交易才能开通此功能 ? 今...

3789
来自专栏SAP最佳业务实践

SAP最佳业务实践:FI–现金管理(160)-28现金集中-F111运行清算付款请求

4.8.3 F111通过 F111-付款运行清算付款请求 可以使用付款程序对客户和供应商进行付款,或在总分类帐户间使用。和标准付款程序不同,此付款不是建立在未清...

3417

扫码关注云+社区