【php】PHP制作QQ微信支付宝三合一收款码

分析

微信扫这个,支付宝扫那个,不仅要加载多张二维码,还要加css/js让它变的好看,作为一个又懒又不想写这些东西的程序猿来说,这可不行。

那能不能把QQ微信支付宝三合一,只需要扫一个收款码就行呢?
这里涉及到一个知识点,则是User-Agent,大厂的webview都会携带自家的UA信息,比如说:

QQ: MQQBrowser/6.2 TBS/043221 Safari/537.36 QQ/7.0.0.3135 
微信: MQQBrowser/6.2 TBS 043220 Safari/537.36 MicroMessenger/6.5.8.1060 NetType/4G Language/zh_CN 
支付宝: 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

这样就很轻松区分是QQ还是微信还是支付宝扫码了:

User-Agent 含有 QQ/ 为QQ
User-Agent 含有 MicroMessenger 为微信
User-Agent 含有 AlipayClient 为支付宝

既然能够区分每个软件,那就可以通过自建一个网址,通过二维码生成扫描这个网址后,判断浏览器的UA,来分发不同的收款码

大致的流程则为:
客户端扫码 -> 服务端根据 User-Agent 判断客户端类型 -> 分别返回不同的处理

开始折腾

首先解码QQ、微信和支付宝生成的付款码,可以去这里在线解码。

QQ: https://i.qianbao.qq.com/wallet/sqrcode.htm?m=tenpay&a=1&u=17878127&ac=E04BE442991E7FFED28B3B5C3E187148F063DC3C6DACAD2983C87B482FC9E7AD&n=薛定谔的猫&f=wallet 
(https 协议,无法唤醒QQ)
支付宝: HTTPS://QR.ALIPAY.COM/FKX03549OW666ME7BXWF7A 
(https 协议,可直接唤醒支付宝 APP)
微信: wxp://f2f09hjzo72AAYEITIBaolV-3cvGrDjE0q7k 
(微信自己的支付协议,无法唤醒微信)

下面就可以直接写代码了,判断 User-Agent 如果是支付宝直接跳转支付宝链接,如果是QQ和微信则跳转QQ和微信的链接。

但由于QQ与微信无法直接唤醒APP,所以直接输出一个QQ与微信的二维码,然后长按扫码实现支付。

代码如下:

<?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>

原文地址:https://www.cnblogs.com/richerdyoung/p/11063693.html

时间: 2024-11-09 02:15:12

【php】PHP制作QQ微信支付宝三合一收款码的相关文章

Delphi制作QQ自动登录器源码

Delphi制作QQ自动登录器源码 http://www.cnblogs.com/sunsoft/archive/2011/02/25/1964967.html 以TM2009为例,检查了一下,未登录之前一个窗体,上边两个控件,登录以后,窗体捕获到一个控件,根据这个,首先找到QQ登录框,输入用户名,密码的位置,获取窗体句柄的具体代码如下: 这里先定义了一个record类型, 1   TQQWnd= record 2     QQWnd,QStatusWnd: HWND;  //QQ窗口句柄,QQ

xuelipay 个人即时到账收款平台 原理及源码详解 支持微信支付宝

xuelipay 个人即时到账收款平台 原理及源码详解 现状及解决原理 1.1 现状 1.2 原理 1.3 例子 收款到完成收款过程源码详解 1 上传账户的收款码 2.2 创建订单 2.3 手机app 监听 2.4 服务器处理付款完成通知 漏单原理及漏单的处理办法 3.1 为什么会漏单 3.2? 漏单的处理办法 3.3 源码解析 收款异常检测 4.1 异常检测配置 4.2 源码解析 4.3 收款失败原因 如何解决并发 官网 接入文档 收费模式 9.? 优惠活动 现状及解决原理 1.1 现状 微信

微信+支付宝+QQ钱包 二维码支付整合 源码20171107

<!doctype html> <html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1&quo

使用VirtualXposed开发自动批量生成支付宝和微信的收款码的支付宝微信监控APP

1.基于VirtualXposed-0.9.8开发. 2.在VirtualXposed中安装支付宝.微信.收款码生成和订单监控APP(需要卸载之前的支付宝微信app). 3.加载APP模块,重启VirtualXposed. 4.登陆微信,登陆支付宝. 5.通过收款码生成和订单监控APP批量生成支付宝和微信的收款码. 6.通过收款码生成和订单监控APP监控支付宝的支付订单信息,监控微信的支付订单信息. 原文地址:https://www.cnblogs.com/dhsunny/p/9610270.h

微信支付宝xposed个人收款免签支付源码

源码介绍: 个人免签支付是指使用自己的微信支付宝账号作为个人网站的收款账号,网站订单支付成功后,网站能实时收到成功回调信息.        系统基于xposed逆向微信.支付宝.云闪付来实现个人收款免签支付.(tag:个人收款,免签支付,微信免签,支付宝免签,云闪付免签) 源码地址:https://github.com/cinser/weixin-alipay-yunshanfu-xposed-pay 测试地址(点我跳转) 目前支持如下免签支付: 微信二维码 .支付宝二维码.支付宝红包.支付宝主

自制三合一多功能收款码

通过判断你是使用QQ,微信还是支付宝扫码支付的方式,制作一款不管你是用这三者中的哪一个扫描,都可以支付的收款码. 直接上代码: 1 <!doctype html> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 <meta http-equiv="X-UA-Compatible" content="IE=edge"> 6 <meta nam

app微信支付宝支付后台的插件模式+回调通过spring广播处理后续业务(已亲测可用)

写在前面的话:每当我们做一个项目,基本上都会涉及到支付的业务,最常用的莫过于微信和支付宝的支付了,项目有bug,有问题,都不叫问题,可一旦钱出了问题,那就是大问题了,所以在支付业务上我们必须慎之又慎! 但是我们做开发的,并不是在一个项目中完成支付模块就万事大吉了,在下一个项目中,我们是不是又要将支付模块的代码复制粘贴一遍,然后再重改支付模块?这样的坏处是频繁修改支付模块难免出现一些我们自己都意识不到的问题,一旦暴露在一些不怀好心的又懂技术的人面前,那我们哭都不知道去找谁. 所以,我试着通过利用s

一文带你了解微信/支付宝支付的相关概念

今天写了一篇非技术文,需求来源于老大的老大,老老大. 这偏文章用以说明微信/支付宝相关参数之间错综复杂的关系,所有资料来自微信/支付宝官网,以及相关银联给的微信/支付宝对接文档. 嘿嘿,如果同行的小伙伴,也有这个疑惑,希望本篇文章帮你解惑. 微信 名词解释: appid:公众号.小程序.移动应用唯一标识 mchid:商户申请微信支付后,由微信支付分配的商户收款账号. openid,微信用户在公众号 appid 下的唯一用户标识,可用于永久标记一个用户 sub_appid:子 appid,服务商模

你有没有试过“闭上眼”使用:京东、滴滴、QQ、支付宝?

正在看这篇文章的同学,也许是幸运的. 互联网的发展,让我们的生活越来越便利,但这个“我们”,也许并不包括那些残障人士.正常人眼里来说再简单不过的页面操作,对于盲人来说都是不可攀越的高墙.换句话说,越行越快的互联网列车,让视觉障碍人士和正常人的生活越来越远. 好消息是,这个问题也许正在得到改善.在今年的 MDCC 移动开发者大会上,专门开设了“信息无障碍专场”. 在现场的演讲中,一位视觉有障碍的程序员沈广荣为现场的观众展示了“一个盲人的一天”——他如何与这些 App 相处. 看似友好的 App,盲