前言

最近在逛博客时,发现很多博客都带了打赏功能,虽说打赏的人可能很少,但始终是一份心意,能让博主知道自己写的文章有用,能够帮助到人。所以,我也想加一个打赏功能~

分析

但在github逛了一圈之后发现,打赏插件基本上千篇一律的: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>

Demo演示

可以通过扫描文章底部的二维码进行测试,或点击下面的演示地址: http://lab.sangsir.com/api/donate.php

顺便打赏一下作者?

转载于:https://my.oschina.net/u/1475115/blog/1623667

PHP制作QQ微信支付宝三合一收款码相关推荐

  1. PHP版单文件index.php直接生成QQ微信支付宝三合一收款二维码完整源码

    打开EditPlus 5类似的工具新建一个utf-8格式的php页面,将下面的源码复制进去,然后修改前十二行对应的信息即可,下面的两千多行代码为全自动生成内容无需修改,改好后保存名为index.php ...

  2. 谨防上当:3月1日微信支付宝个人收款码是可以继续使用的-附图

    近日,相信大家都在关注关于3月1日后微信个人收款码和支付宝个人收款码还能否正常使用的问题. 身边很多亲朋好友都在议论,有好几种说法: 第一种说是不能用了,出新规了. 第二种是说要升级为个人经营收款码. ...

  3. 微信支付宝H5收款码扫码转账个人通道仿原生接口带备注可回调成功率9成以上

    微信支付宝收款码转账H5免签出码带备注可回调成功率99.9%支持重复支付多种轮询规则提高存活率         本收款系统,可使用支付宝个人码 企业支付宝收款码 微信个人码收款,可以完成即时到账收款接 ...

  4. 微信支付宝H5收款码扫码转账个人通道,灵活配置,仿原生接口,带备注可回调成功率9成以上

    微信支付宝收款码转账H5免签高并发出码带备注可回调成功率99.9%支持重复支付多种轮询规则提高存活率         本收款系统,可使用支付宝个人码 企业支付宝收款码 微信个人码收款,可以完成即时到账 ...

  5. 微信QQ支付宝三合一收款二维码实现原理

    大家可以先看看我网站的效果: 收款吧 - 三合一收款码在线生成 收款码三合一大致原理如下: 第一步.解析用户上传的微信支付.QQ钱包.支付宝收款二维码,获取收款链接地址. 第二步.用自己的网站程序生成 ...

  6. 微信和支付宝聚合收款码是怎么做的呢?

    无现金消费时代,移动支付领域占领着主导地位,商户收银台前显眼位置会放置微信支付.支付宝支付但是还有一种更方便的收款模式,就是把微信收款码.支付宝收款码合并成一个二维码,无论客户是使用支付宝扫码还是微信 ...

  7. 极客日报:微信、支付宝个人收款码可继续使用;苹果或将推出7款新Mac;Swift之父正式退出Swift核心团队|极客头条

    「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧. 整理 | 梦依丹 出品 | CSDN(ID:CSDNnews ...

  8. 一种实现个人微信支付宝二维码收款接口的方法

    一种实现个人微信支付宝二维码收款接口的方法 只有企业资质才能申请微信支付宝接口,要想实现自动收款除了想办法搞到企业资质申请官方的微信支付接口外,还可以想办法通过个人收款码来实现. 1.上传个人微信支付 ...

  9. 微信支付宝个人收款将于2022年3月1日起被禁止用于经营收款

    元宵节过完2月份也已经过半,即将到来的3月,我和大多数人一样开启工作模式,闲时也摸摸鱼关注下热点新闻,其中有一个新规即将正式施行,将影响各大小商户经营收款的政策,不知道你是否还记得? 2021年10月 ...

  10. 微信小程序:微信也可以发闪照了闪照制作生成微信小程序源码下载,自定义闪照时间

    这是一款闪照制作的一款微信小程序源码 该源码呢也就是让用户在微信也可以实现QQ上面的闪照功能 用户可以自主上传照片,可以自定义的选择闪照的时间 另外这款小程序还支持流量主模式 这种东西目前在微信还是挺 ...

最新文章

  1. python公共键_Python利用公共键如何对字典列表进行排序详解
  2. SDL介绍和简单实用
  3. 【提权思路】绕过SecureRDP限制远程连接
  4. 【Android笔记】MediaPlayer基本使用方式
  5. 组织模式 - Introduction
  6. C#设计模式(5)-Factory Method Pattern
  7. php mysql增删查改 主码不能修改_PHP 数据库练习
  8. android studio发布版和测试版证书SHA1获取
  9. (转)【自动语音识别课程】
  10. 【Vegas原创】RHEL6多界面切换方法
  11. 卓越、当当、京东三大广告联盟比较
  12. 「代码随想录」416. 分割等和子集【动态规划】力扣详解!
  13. gogs 默认的管理员账号密码是什么
  14. Mac上的全局翻译利器 : Bob + PopClip
  15. 如何撰写总体设计与详细设计文档
  16. 【软工】week3-个人阅读作业-软件案例分析
  17. linux命令批量修改文件名称
  18. 华为外包的感受(CSDN)
  19. oracle现金流量表逻辑,现金流量表之附表逻辑分析
  20. 安防领域名词explain

热门文章

  1. Stm32 DHT11
  2. 穿孔发光字/外露发光字制作流程步骤
  3. 达芬奇密码--buuctf密码学
  4. 黑色脸谱_上演三幕的脸谱剧
  5. 小菜鸟的Python笔记002:如何识别Word文档中的复选框
  6. 一般描绘性形容词_英语中描绘性形容词是指哪种形容词?
  7. 【摄影测量】利用经度L、纬度B、大地高h及heading pitch roll飞行姿态角将IMU惯导坐标系转换到WGS84坐标系
  8. arcgis批量裁剪tif文件
  9. 设备状态监测及故障预警,你了解多少?
  10. 软件人员kpi制定模板_软件开发人员月度KPI考核指标