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


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


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

多合一二维码是利用判断用户所使用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 网址生成二维码,这样就得到了我们需要的三合一二维码。


欢迎留言