看见很多的商家都是一个微信扫码,一个支付宝,说微信扫这个,支付宝扫这个,麻烦的一比。
表示有没有微信支付宝二合一收款码呢,想必这种简单的功能肯定是会有的,
只不过他们还不知道而已,那么如何制作二合一收款码呢?
如何制作微信支付宝二合一收款码
想要制作微信支付宝二合一收款码其实很简单,说来说去都是一张二维码而已,
我们通过下面这个网站:芝麻二维码,即可直接将微信收款码和支付宝收款码合并为一个二维码,
用户扫码后直接付款给商家,并且无需手续费。
当然这个网站的功能可不仅仅只有合并二维码这么简单哦,其他功能也是层出不穷,大家可以自己体验。
自建一码付服务
由于上面建立的二维码毕竟在别人的服务器,感觉还是自己建一个放心一点。
于是就是分析了一下上面网站的实现原理。
这个对于懂一点web知识的朋友来说,很简单很容易理解。
客户端扫码
-> 服务端根据User-Agent判断客户端类型
-> 分别返回不同的处理
知道原理就好弄了,话不多说,说干就干。
1)首先解码微信和支付宝生成的付款码,解码方法百度一大把。
支付宝:HTTPS://QR.ALIPAY.COM/FKX0483437Z9G0CBQIY8E5
(https协议,可直接唤醒支付宝APP)
微信:wxp://f2f0T72ZVjS3-1LOf1OnHv52pYLlmDH2viyg
(微信自己的协议链接)
2)然后查看一下微信和支付宝在扫码后,发送请求所携带的 User Agent 头信息
支付宝
UCBrowser/11.5.0.939 UCBS/2.10.1.6 Mobile Safari/537.36 AliApp(AP/10.0.15.051805) AlipayClient/10.0.15.051805 Language/zh-Hans
微信
MQQBrowser/6.2 TBS 043220 Safari/537.36 MicroMessenger/6.5.8.1060 NetType/4G Language/zh_CN
嗯,这样就很轻松区分是微信还是支付宝扫码了:
User Agent 含有 MicroMessenger 为微信
User Agent 含有 ApliPayClient 为支付宝
3)下面就就可以直接上代码了,判断客户端User Agent 如果是支付宝直接跳转支付宝链接,微信直接跳转微信的链接。
由于微信不允许外部直接调用 微信链接(wxp://)。我们参考芝麻二维码的做法,
如果微信扫码,直接输出一个微信二维码,然后长按扫码实现支付。
我们需要制作一个微信的二维码图片,或者直接用微信生成的付款码,代码如下:
<?php
header("Content-type: text/html; charset=utf-8");
$ua = $_SERVER['HTTP_USER_AGENT'];
if (preg_match("/.+MicroMessenger.+/", $ua)) {
echo <img style="width:100%;box-sizing:border-box;display:block" src="wx.png"></img>';
} elseif (preg_match("/.+AlipayClient.+/", $ua)) {
$url = 'HTTPS://QR.ALIPAY.COM/FKX03549OW666ME7BXWF7A';
header("location: " . $url);
} else {
echo "请使用支付宝或微信客户端扫码付款";
}
get it!新功能
23333 @(柴犬)