我之前看到了一个网站可以将支付宝和微信的收款码合在一起,研究了下,应该是通过UA来判断扫码的客户端,从而返回特定的链接或者代码。我用网上的工具将支付宝,微信,QQ钱包的二维码都解码之后,用PHP写一个判断来返回对应的值。不过很遗憾的是只有支付宝支持这种用外部返回链接的方式直接打开支付界面,微信和QQ钱包都需要直接扫描带有特定信息的二维码(微信商铺接口的链接是可以直接使用外部链接打开的),好在他们都支持在图片上长按来识别二维码,所以微信和QQ就分别把他们的二维码图片放在自己网站上,也是通过UA来区分返回不同的二维码就行了。

if (strstr($_SERVER['HTTP_USER_AGENT'], 'AlipayClient')) { 
    $AlipayURL = 'HTTPS://QR.ALIPAY.COM/FKX09312IUU4ENKCCUIM60';
    header("location: " . $AlipayURL);
} 
elseif (strstr($_SERVER['HTTP_USER_AGENT'], 'MicroMessenger')) {
  echo '<img style="width:100%;" src="wx.png"></img>';
} 
elseif (strstr($_SERVER['HTTP_USER_AGENT'], 'AlipayClient')) { 
    $url = 'HTTPS://QR.ALIPAY.COM/XXXXXXXXXXXXX';
    header("location: " . $url);
} 
elseif (strstr($_SERVER['HTTP_USER_AGENT'], 'QQ')) { 
echo '<img style="width:100%;" src="qq.png"></img>';
} 
else { 
    echo "请使用支付宝、微信、QQ客户端扫码付款";
}