【制作微信支付宝二合一收款码(使用自己的服务器)】

  • 由于这个东西涉及到钱的为题,感觉还是用自己的服务器弄一个比较安全。

  • 其实原理十分简单:
    
    客户端扫码 -> 服务端根据 User-Agent 判断客户端类型 -> 分别返回支付宝和微信的二维码内容
    

  • 话不多少,开干。

    1.解码微信和支付宝的付款码

    支付宝:

    
    HTTPS://QR.ALIPAY.COM/TSX06990VFZIYPD04PEG95 (https 协议,可直接唤醒支付宝 APP)
    

    微信:

    
    wxp://f2f09zP7EA1FQhdQvgrisHYoS4Jr9CHhX7q5 (微信自己的协议链接,不允许外部调用)
    

    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

  • 如果是支付宝直接跳转支付宝链接,微信返回收款二维码,自行长按扫码。

    代码如下(请加上php头尾):

    
        
            header("Content-type: text/html; charset=utf-8");
            $ua = $_SERVER['HTTP_USER_AGENT'];
            if (preg_match("/.+MicroMessenger.+/", $ua)) {
                $url = 'https://qxx.hk/wx.jpeg';
                header("location: " . $url);
            } elseif (preg_match("/.+AlipayClient.+/", $ua)) { 
            $url = 'HTTPS://QR.ALIPAY.COM/TSX06990VFZIYPD04PEG95';
            header("location: " . $url);
            } else { 
               echo "请使用支付宝或微信客户端扫码付款";
            }