• 支付宝、微信、QQ、京东金融 - 多合一收款二维码原理及实现(源码)

    最近收款二维码的“收款码合并”火了,它能将微信收款码和支付宝收款码合并为一个二维码!听上去感觉很神奇,其实原理非常简单! 


    无论是支付宝还是微信的收款码,其本质上是一个包含了收款链接的二维码。所以我们的思路是:检测如果是支付宝浏览页面,就给出支付宝的付款链接、如果是微信,就给出微信链接……


     那么问题来了,如何进行判定呢?


     很好办,根据 UA 就能进行判定了!不懂什么是 UA?请百度。


     多合一收款二维码代码如下:


    <!--
    * 多合一收款二维码 
    * 龙桂博客 编写  
    * 文章地址:http://www.clg.kim/pay.html  
    * 编写日期:2018-02-05  
    * 转载请注明出处!
    --> 
    <?php
    $url   = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
    if (@$_GET['qr'] == 'a') {
        if (@$_GET['text']) {
            include "phpqrcode.php";
            QRcode::png($_GET['text'], false, 'L', '10', '1');
            die;
        }
    }
    $url   = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
    $urlqr = $url . '?qr=a&text=';
    $ua    = $_SERVER['HTTP_USER_AGENT'];
    if (strpos($ua, 'Alipay')) {
        //支付宝
        $config = array(
            "url" => "支付宝收款网址",
            "new" => 0,
        );
    } elseif (strpos($ua, 'MicroMessenger')) {
        //微信
        $config = array(
            "url"  => "微信收款网址",
            "text" => "长按二维码付款",
            "col"  => "#44b549",
            "new"  => 1,
        );
    } elseif (strpos($ua, 'QQ/')) {
        //QQ
        $config = array(
            "url"  => "QQ收款网址",
            "text" => "长按二维码付款",
            "col"  => "#0099de",
            "new"  => 1,
        );
    } elseif (strpos($ua, 'JDJR')) {
        //京东金融
        $config = array(
            "url"  => "京东金融收款网址",
            "new"  => 0,
        );
    } else {
        //普通打开页面
        $config = array(
            "url"  => $url,
            "text" => "支付宝、微信、QQ、京东金融<br>扫码付款",
            "col"  => "#228abf",
            "new"  => 1,
        );
    }
    if (!$config['new']) header("Location:" . $config['url']);
    $config['img'] = @$config['img'] ? $config['img'] : $urlqr . urlencode($config['url']);
    ?>
    <!doctype html>
    <html class="no-js">
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="description" content="">
        <meta name="keywords" content="">
        <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no, user-scalable=no">
        <title>Clongui 收款码</title>
        <meta name="renderer" content="webkit">
        <meta http-equiv="Cache-Control" content="no-siteapp"/>
        <link rel="stylesheet" href="//cdn.bootcss.com/amazeui/2.7.2/css/amazeui.min.css">
    </head>
    <body>
        <style type="text/css">
            body{background:#fff;}
            .box{width:100%;height:100%;overflow:hidden;position:fixed;top:0;left:0;}
            .bg-f4{background-color:#f4f4f4;}
            .img{max-width:100%;max-height:100%;}
            ._title{height:80px;padding:10px 0;}
            ._qr{height:100%;background:<?php echo $config['col'] ?>;}
            ._qr img{width:80%;margin-top:50px;border-radius:10px;}
            ._bot{width:80%;background:#fff;margin:10px auto;padding:10px 5px;}
            ._copy{position:fixed;width:100%;bottom:0;left:0;color:#fff;padding:10px 0;font-size:10pt;}
        </style>
        <div class="am-g box">
            <div class="am-u-sm-12 am-u-md-6 am-u-lg-3 am-u-sm-centered bg-f4 am-text-center _title">
                <img src="1.png" class="img" alt="支付宝">
                <img src="2.png" class="img" alt="微信">
                <img src="3.png" class="img" alt="QQ">
                <img src="4.png" class="img" alt="京东金融">
            </div>
            <div class="am-u-sm-12 am-u-md-6 am-u-lg-3 am-u-sm-centered am-text-center _qr">
                <img src="<?php echo $config['img'] ?>" class="img">
                <div class="am-text-center _bot">
                    <?php echo $config['text'] ?>
                </div>
            </div>
            <div class="am-text-center _copy">Clongui 收款码</div>
        </div>
    </body>
    </html>

    理论上来说,进行判定后直接给跳转到对应的收款页面就行了,然而实际测试发现在QQ和微信中并不能直接调用付款功能,只有支付宝能直接进行付款。


    这里就只能用一个折中的办法:如果是QQ或微信扫的码,就再放出一个二维码的界面,让用户通过长按识别二维码进入支付流程。


    收款码合并效果如下:


    20180205215621.jpg


    你可以用 QQ 或是微信或是支付宝中的任意一个扫描这个二维码进行测试


    注:请将代码中第 23、29、37、45行中的收款链接改为自己的。

    请用专门的 Html 编辑器(如 notepad++)进行编辑,切勿直接用记事本编辑,否则可能出现中文乱码!


    分享本文 赞助支持

    赞助支持X

    扫码赞助
    联系站长
    CLG博客

    返回顶部