MENU

如何制作微信支付宝二合一收款码

June 16, 2017 • 技术笔记

看见很多的商家都是一个微信扫码,一个支付宝,说微信扫这个,支付宝扫这个,麻烦的一比。

表示有没有微信支付宝二合一收款码呢,想必这种简单的功能肯定是会有的,

只不过他们还不知道而已,那么如何制作二合一收款码呢?

如何制作微信支付宝二合一收款码

想要制作微信支付宝二合一收款码其实很简单,说来说去都是一张二维码而已,

我们通过下面这个网站:芝麻二维码,即可直接将微信收款码和支付宝收款码合并为一个二维码,

用户扫码后直接付款给商家,并且无需手续费。

6bdf06f1ly1fg7tjam5pgj20ix0as74p.jpg

当然这个网站的功能可不仅仅只有合并二维码这么简单哦,其他功能也是层出不穷,大家可以自己体验。

自建一码付服务

由于上面建立的二维码毕竟在别人的服务器,感觉还是自己建一个放心一点。

于是就是分析了一下上面网站的实现原理。

这个对于懂一点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 "请使用支付宝或微信客户端扫码付款";
}
Tags: 技术
Archives QR Code
QR Code for this page
Tipping QR Code