PHP makes QQ WeChat Alipay three-in-one payment code

foreword

When I was browsing blogs recently, I found that many blogs have a reward function. Although there may be very few people who give rewards, it is always a heartfelt, so that bloggers know that the articles they write are useful and can help others. So, I also want to add a reward function~

analyze

But after shopping around github, I found that the tipping plug-ins are basically the same: QQ scan code / WeChat scan code / Alipay scan code.

button to donateSome are clicked on each button to appear each payment code

QR code donationOthers show each payment code in its entirety

Wechat scans this, Alipay scans that, not only to load multiple QR codes, but also to add css/js to make it look good. As a lazy programmer who doesn't want to write these things, this is not acceptable.

Can you combine QQ, WeChat and Alipay into one, and only need to scan a collection code? There is a knowledge point involved here, which is User-Agent. The webviews of major manufacturers will carry their own UA information, for example:

QQ: MQQBrowser/6.2 TBS/043221 Safari/537.36 QQ/7.0.0.3135WeChat: MQQBrowser/6.2 TBS 043220 Safari/537.36 MicroMessenger/6.5.8.1060 NetType/4G Language/zh_CNAlipay: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

In this way, it is easy to distinguish whether it is QQ, WeChat or Alipay to scan the code:

User QQ/- QQ User-Agent contains MicroMessengerWeChat User AlipayClient- Alipay

Since you can distinguish each software, you can create a website by yourself, generate and scan the website through the QR code, and determine the UA of the browser to distribute different payment codes.

The general process is: Scan the code on the client side -> the server side judges the client type according to the User-Agent -> return different processing respectively

start tossing

First decode the payment codes generated by QQ, WeChat and Alipay, you can go here to decode online.

QQ: https://i.qianbao.qq.com/wallet/sqrcode.htm?m=tenpay&a=1&u=17878127&ac=E04BE442991E7FFED28B3B5C3E187148F063DC3C6DACAD2983C87B482FC9E7AD&n=薛定谔的猫&f=wallet(https protocol, can not wake up QQ) Alipay: HTTPS://QR.ALIPAY.COM/FKX03549OW666ME7BXWF7A(https protocol, can directly wake up Alipay APP) WeChat: wxp://f2f09hjzo72AAYEITIBaolV-3cvGrDjE0q7k(WeChat's own payment protocol, can't wake WeChat)

You can directly write the code below, and judge that if User-Agent is Alipay, it will jump directly to the Alipay link, and if it is QQ and WeChat, it will jump to the link of QQ and WeChat.

However, since QQ and WeChat cannot directly wake up the APP, they directly output a QR code of QQ and WeChat, and then long-press to scan the code to realize payment.

code show as below:

<?php
$ua = $_SERVER['HTTP_USER_AGENT'];
if (strpos($ua, 'MicroMessenger')) {
    $type = 'wepay';
    $name = '微信支付';
    //微信支付链接
    $url = 'wxp://f2f09hjzo72AAYEITIBaolV-3cvGrDjE0q7k';
    $icon_img = '<img src="http://ww2.sinaimg.cn/large/005zWjpngy1fojrwgr20oj303k03kglg.jpg" width="48px" height="48px" alt="'.$name.'">';
}
elseif (strpos($ua, 'AlipayClient')) {
    //支付宝链接
    $url = 'HTTPS://QR.ALIPAY.COM/FKX03479QJ0RVOS3UJLQAE';
    header('location: ' . $url);
}
elseif (strpos($ua, 'QQ/')) {
    $type = 'qq';
    $name = 'QQ钱包支付';
    //QQ钱包支付链接
    $url = 'https://i.qianbao.qq.com/wallet/sqrcode.htm?m=tenpay&a=1&u=17878127&ac=E04BE442991E7FFED28B3B5C3E187148F063DC3C6DACAD2983C87B482FC9E7AD&n=薛定谔的猫&f=wallet';
    $icon_img = '<img src="http://ww2.sinaimg.cn/large/005zWjpngy1fojrvmp427j303k03kjrb.jpg" width="48px" height="48px" alt="'.$name.'">';
}
else {
    $type = 'other';
    $name = '打赏作者';
    $url = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
    $icon_img = '<img src="http://ww2.sinaimg.cn/large/005zWjpngy1fojs089x6tj303k03kjr6.jpg" width="48px" height="48px" alt="'.$name.'">';
}
$qr_img = '<img src="http://qr.liantu.com/api.php?text='.urlencode($url).'">';
?>
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta name="renderer" content="webkit">
    <meta http-equiv="X-UA-Compatible" content="IE=Edge, chrome=1">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title><?=$name?></title>
    <style type="text/css">
        * {margin: auto;padding: 0;border: 0;}
        html {-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%}
        body {font-family: -apple-system, SF UI Text, Arial, Microsoft YaHei, Hiragino Sans GB, WenQuanYi Micro Hei, sans-serif;color: #333;}
        img {max-width: 100%;}
        h3 {padding: 10px;}
        .container {text-align: center;}
        .title {padding: 2em 0;background-color: #fff;}
        .content {padding: 2em 1em;color: #fff;}
        .wepay {background-color: #23ac38;}
        .qq {background-color: #4c97d5;}
        .other {background-color: #ff7055;}
    </style>
</head>
<body class="<?=$type?>">
    <div class="container">
        <div class="title"><?=$icon_img?><h1><?=$name?></h1></div>
        <div class="content"><?=$type=='other'?$qr_img.'<h3>请使用支付宝、微信、QQ客户端扫码付款</h3>':$qr_img.'<h3>扫描或长按识别二维码,向TA付款</h3>'?></div>
    </div>
</body>
</html>

Demo presentation

You can test by scanning the QR code at the bottom of the article, or click the demo address below: http://lab.sangsir.com/api/donate.php

By the way, do you want to reward the author?

Reward the author

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=325261449&siteId=291194637