支付宝面对面对接个人赞赏页

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

📌 项目背景#

在个人博客/自媒体场景中,接收读者小额赞赏是常见的互动方式。基于支付宝的「面对面支付」接口,我开发了一个轻量级赞赏页,支持金额选择、动态二维码生成、捐赠记录展示等功能。核心代码基于PHP+MySQL实现,无需依赖复杂框架,适合个人快速部署


🚀 核心功能拆解#

  1. 动态支付二维码生成
// 调用第三方API生成二维码(示例)
<img src="https://api.qrtool.cn/?text=<?php echo urlencode($qrCode); ?>">
  • 通过alipays://协议深度链接唤起支付宝APP
  • 移动端自动识别设备类型,显示「点击跳转支付宝」按钮
  1. 捐赠记录实时展示
// 数据库查询最新66条记录
$sql = "SELECT * FROM donations ORDER BY created_at DESC LIMIT 66";
while($row = $result->fetch_assoc()) {
echo '<li>网友'.$row.'赠送:'.$row.'</li>';
}
  • 采用瀑布流式滚动设计
  • 统计总金额和捐赠人次(SQL聚合查询)
  1. 支付状态轮询机制
// 每5秒轮询支付状态
setInterval(function() {
$.ajax({ url: "/pay/query.php?action=serve", data: { gid: "<?php echo $orderId; ?>" } });
}, 5000);
// 60秒自动刷新防重复支付
setTimeout(() => window.location.reload(), 60000);
  • 参考支付宝官方推荐的轮询策略
  • 前端使用Layer.js实现支付成功弹窗提示

🔧 技术亮点#

  1. 设备自适应设计
    通过isMobile()函数检测设备类型,动态切换H5/PC布局:
function isMobile() {
$ua = $_SERVER ?? '';
return (strpos($ua, 'Mobile') !== false) || (strpos($ua, 'MicroMessenger') !== false);
}
  1. 防重复支付设计
  • 生成带时间戳的订单号createNewOrderNo()
  • 数据库记录支付请求参数和状态
  1. 安全增强措施
  • 使用htmlspecialchars()过滤用户输入
  • 限制二维码有效期为60秒
  • 关键参数加密传输(示例未展示具体实现)

📊 数据统计展示#

通过底部统计模块直观展示捐赠影响力:

$sql_stats = "SELECT COUNT(*) as total_count, SUM(amount) as total_amount FROM donations";
echo "共有[{$stats['total_count']}]位暖心人捐赠,总计[{$stats['total_amount']}]元";
  • 数字动态更新,增强用户参与感
  • 采用「恰饭」「零食」等趣味化文案

💡 开发心得#

  1. 支付宝接口选择
    个人开发者推荐使用「当面付」或「电脑网站支付」接口,前者无需营业执照即可申请
  2. 性能优化点
  • 使用CDN加载Bootstrap/jQuery(减少服务器压力)
  • 捐赠记录分页加载(当前示例限制66条)
  1. 扩展可能性
  • 接入微信支付实现双渠道收款
  • 添加打赏留言功能(需注意内容审核)
  • 数据可视化图表展示

源码结构参考

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/你的默认收款标号';

🌐 效果预览#

演示图
演示图

通过这个项目,不仅实现了支付功能的技术验证,更深刻体会到「细节决定体验」—— 从自动换菜名的趣味交互,到支付成功的暖心提示,每一个微小设计都在传递温度

源码获取

https://github.com/uurani/donate.git”>https://github.com/uurani/donate.git”>https://github.com/uurani/donate.git

演示地址

https://donate.muxui.com/“>https://donate.muxui.com/“>https://donate.muxui.com/

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

支付宝面对面对接个人赞赏页
https://muxui.com/posts/文章样式三:顶部大图/
作者
Muxui
发布于
2025-02-25
许可协议
CC BY-NC-SA 4.0
相关文章智能推荐
1
从 WordPress 到 Astro迁移实战全记录
文章记录将 Muxui 从 WordPress(B2 Pro)完整迁移到 Astro 静态博客主题 Firefly 的全过程:导出 WXR、HTML 转 Markdown、图床改写、友链与导航定制,以及迁移中踩过的坑。
2
YOLO训练麻将(Mahjong)识别,导出ONNX
文章本文基于 Roboflow Universe 数据集(例如 $1 )与仓库内脚本,在 Windows 上完成训练,并导出 ONNX 供后端推理。下文配图均为本机实测截图,便于对照。快速体验 小程序 1\. 环境要求 \ Windows 10
3
分享一个微信小程序原型生成的Prompt
jQuery最近在用 ClaudeCode 尝试开发一个微信小程序,分享一下目前生成产品原型 UI 的 Prompt,佬们可以尝试一下,如果有什么反馈和优化的意见可以讨论一下。 $1微信小程序高保真 UI 原型构建 请帮我构建微信小程序高保真原型:$A
4
自建 Headscale + DERP 全流程实战记录
文章记录一次完整、可上线、可长期运行的 Headscale + 自建 DERP 搭建过程。 本文不是“能跑就行”的教程,而是 生产可用、已多客户端验证 的配置方案。 简介 Tailscale(Headscale)就是组建一个大的局域网,可以将你
5
基于 Cloudflare Workers + Telegram Bot + D1 的双向匿名聊天系统完整实现
文章在本篇文章中,我将分享一个基于 Cloudflare Workers + Telegram Bot + D1 数据库 的完全无服务器(Serverless)聊天系统。该机器人支持用户匿名与管理员双向通信,具备首访验证、自动诈骗检测、屏蔽管理
随机文章随机推荐

评论区

Profile Image of the Author
Muxui
Hello, I'm Muxui.
公告
欢迎来到我的博客!这是一则示例公告。
分类
标签
站点统计
文章
24
分类
8
标签
19
总字数
53,213
运行时长
0
最后活动
0 天前
站点信息
构建平台
Local
博客版本
Firefly v6.14.5
文章许可
CC BY-NC-SA 4.0