支付宝面对面对接个人赞赏页
982 字
5 分钟
支付宝面对面对接个人赞赏页

📌 项目背景
在个人博客/自媒体场景中,接收读者小额赞赏是常见的互动方式。基于支付宝的「面对面支付」接口,我开发了一个轻量级赞赏页,支持金额选择、动态二维码生成、捐赠记录展示等功能。核心代码基于PHP+MySQL实现,无需依赖复杂框架,适合个人快速部署
🚀 核心功能拆解
- 动态支付二维码生成
// 调用第三方API生成二维码(示例)<img src="https://api.qrtool.cn/?text=<?php echo urlencode($qrCode); ?>">- 通过
alipays://协议深度链接唤起支付宝APP - 移动端自动识别设备类型,显示「点击跳转支付宝」按钮
- 捐赠记录实时展示
// 数据库查询最新66条记录$sql = "SELECT * FROM donations ORDER BY created_at DESC LIMIT 66";while($row = $result->fetch_assoc()) { echo '<li>网友'.$row.'赠送:'.$row.'</li>';}- 采用瀑布流式滚动设计
- 统计总金额和捐赠人次(SQL聚合查询)
- 支付状态轮询机制
// 每5秒轮询支付状态setInterval(function() { $.ajax({ url: "/pay/query.php?action=serve", data: { gid: "<?php echo $orderId; ?>" } });}, 5000);
// 60秒自动刷新防重复支付setTimeout(() => window.location.reload(), 60000);- 参考支付宝官方推荐的轮询策略
- 前端使用Layer.js实现支付成功弹窗提示
🔧 技术亮点
- 设备自适应设计
通过isMobile()函数检测设备类型,动态切换H5/PC布局:
function isMobile() { $ua = $_SERVER ?? ''; return (strpos($ua, 'Mobile') !== false) || (strpos($ua, 'MicroMessenger') !== false);}- 防重复支付设计
- 生成带时间戳的订单号
createNewOrderNo() - 数据库记录支付请求参数和状态
- 安全增强措施
- 使用
htmlspecialchars()过滤用户输入 - 限制二维码有效期为60秒
- 关键参数加密传输(示例未展示具体实现)
📊 数据统计展示
通过底部统计模块直观展示捐赠影响力:
$sql_stats = "SELECT COUNT(*) as total_count, SUM(amount) as total_amount FROM donations";echo "共有[{$stats['total_count']}]位暖心人捐赠,总计[{$stats['total_amount']}]元";- 数字动态更新,增强用户参与感
- 采用「恰饭」「零食」等趣味化文案
💡 开发心得
- 支付宝接口选择
个人开发者推荐使用「当面付」或「电脑网站支付」接口,前者无需营业执照即可申请 - 性能优化点
- 使用CDN加载Bootstrap/jQuery(减少服务器压力)
- 捐赠记录分页加载(当前示例限制66条)
- 扩展可能性
- 接入微信支付实现双渠道收款
- 添加打赏留言功能(需注意内容审核)
- 数据可视化图表展示
源码结构参考:
donate ├── config/
│ └── db.php # 数据库配置文件
│
├── pay/
│ ├── pay.php # 支付宝支付核心处理类
│ ├── pay_template.php # 支付页面模板
│ ├── query.php # 支付状态查询处理
│ └── public/ # 支付页面静态资源
│ ├── style.css
│ └── jquery.min.js
│
├── style/
│ ├── css/
│ │ └── style.css # 主页样式文件
│ └── js/
│ ├── jquery-3.2.1.min.js
│ ├── layer/ # layer弹窗组件
│ │ └── layer.js
│ └── style.js # 主页JS逻辑
│
├── sql/
│ ├── donation.sql # 捐赠记录表结构
│ └── orders.sql # 订单表结构
│
├── favicon.ico # 网站图标
└── index.php
✒️ 修改配置
- 修改
pay/pay.php中的支付宝参数
define('ALIPAY_APPID', '你的支付宝APPID');define('ALIPAY_PRIVATE_KEY', "-----BEGIN RSA PRIVATE KEY-----\n" . "你的支付宝应用私钥" . "\n-----END RSA PRIVATE KEY-----");
define('ALIPAY_PUBLIC_KEY', "-----BEGIN PUBLIC KEY-----\n" . "你的支付宝公钥" . "\n-----END PUBLIC KEY-----");- 修改
pay/pay.php中63行的默认值,创建订单的时候,f12查询元素然后复制链接即可
return 'https://qr.alipay.com/你的默认收款标号';🌐 效果预览

通过这个项目,不仅实现了支付功能的技术验证,更深刻体会到「细节决定体验」—— 从自动换菜名的趣味交互,到支付成功的暖心提示,每一个微小设计都在传递温度
源码获取:
Repository details unavailable
文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!
相关文章智能推荐
1
[开源] AI Summary - WordPress智能摘要生成插件
原创AI Summary是一款专为WordPress设计的智能摘要生成插件,它集成了五大主流AI服务:百度文心一言、OpenAI ChatGPT、Google Gemini、字节豆包和阿里通义千问。无论您是个人博客作者还是企业网站运营者,这款插
2
[开源] PicHost - 自托管个人轻量图床
原创记录 PicHost 从 Cloudflare R2 版演进到 Docker 自托管图床的过程:为什么推倒重来、界面长什么样、我怎么部署、Twikoo 评论配图怎么接——不是 README,是一次自用开源的复盘。
3
从 WordPress 到 Astro迁移实战全记录
原创记录将 Muxui 从 WordPress(B2 Pro)完整迁移到 Astro 静态博客主题 Firefly 的全过程:导出 WXR、HTML 转 Markdown、图床改写、友链与导航定制、Twikoo 评论迁移,以及迁移中踩过的坑。
4
[开源自荐] DBX - 20MB 开源数据库客户端
软件推荐开源数据库客户端 DBX:约 20MB、Apache-2.0、一个窗口连 80+ 种库。和 Navicat 比,差在许可、体积、部署和 AI/MCP。日常查改够用,企业建模报表还是 Navicat 更稳。
5
YOLO训练麻将(Mahjong)识别,导出ONNX
原创本文基于 Roboflow Universe 数据集(例如 $1 )与仓库内脚本,在 Windows 上完成训练,并导出 ONNX 供后端推理。下文配图均为本机实测截图,便于对照。快速体验 小程序 1\. 环境要求 \ Windows 10
随机文章随机推荐

