💰【付款回调显示密码】知识付费资料包 完整落地源码 + 部署全流程
支付宝「付款回调显示密码」完整落地:源码 + 部署全流程
把「压缩包解压密码」做成真正的付费解锁:买家扫码付款 → 支付宝回调验签 → 页面自动显示密码。密码全程不下发到前端,彻底解决"拿到 HTML 不付钱也能看密码"的问题。
一、为什么要做这套方案
常见的"解压密码页"有两种做法,都有硬伤:
本方案把密码只放在你自己的服务器上,收到支付宝"支付成功"回调并验签通过后,才通过接口发给付款的那个订单。前端 HTML 里没有任何密码明文。
二、整条链路的闭环
买家打开密码页 HTML
│ ① 请求服务器:给我收款二维码
▼
你的服务器 ──② 调支付宝"当面付"接口预下单──▶ 支付宝
│ │
│ ③ 返回二维码链接 │
▼ │
页面显示二维码 ◀──────────────────────────────┘
│ ④ 买家扫码付款
▼
支付宝 ──⑤ 支付成功,回调 POST 到你的 /notify──▶ 你的服务器
│ │
│ ⑥ 用"支付宝公钥"验签 + 校验金额 │
│ 通过后订单标记"已支付" │
▼ ▼
页面每 2 秒轮询 /api/check ──⑦ 查到已支付──▶ 返回密码给页面
三、申请支付通道:选支付宝,暂不选微信
支付宝当面付(open.alipay.com → 产品中心 → 搜索「当面付」): - 个人账号实名即可申请,提交经营场所照片、店铺名称、经营地址。 - 不提供营业执照会被限额:单笔 ≤ 2000 元、单日 ≤ 20000 元。卖 19.9 的资料包,日 2 万额度绰绰有余。 - 开通后在「密钥管理」拿 3 个参数:APPID、应用私钥、支付宝公钥。
微信 Native 需要个体工商户/企业 + 备案域名 + 认证费 300 元,门槛高,等办了执照和备案域名再补做(本方案服务端框架可直接复用)。
四、服务器部署(Ubuntu 为例)
买服务器装系统:腾讯云轻量服务器,镜像选 Ubuntu 22.04 LTS,1 核 2G 足够。
域名 + HTTPS:当面付回调必须是公网 https。域名解析到服务器 IP,用
certbot签免费证书(国内服务器需 ICP 备案,香港/海外免备案)。装环境:
apt install python3 python3-venv python3-pip nginx certbot传源码:把
server目录 scp 到/opt/pay/填 config:
nano config.py填入 APPID、应用私钥、支付宝公钥、金额、密码、notify_url装依赖启动:
pip install -r requirements.txt→gunicorn -w 2 -b 127.0.0.1:8000 app:app配 Nginx 反代:把 443 端口代理到 127.0.0.1:8000
完整步骤(含每条命令、调试方法、常见坑)见附件里的《部署说明.md》。
五、服务端下发密码的安全性(重点)
这套方案"安全"在 4 个层面:
密码不出服务器:密码只存在
config.py,任何 HTML/JS 里都没有。回调验签(防伪造):
/notify用支付宝公钥做 RSA2 验签,伪造的"支付成功"请求会被拒绝。金额服务端写死:客户端传什么金额都无效,回调时还会二次校验。
订单持久化:订单状态存 sqlite,服务器重启不丢已支付订单。
仍需注意的边界: - 防不住"转发"——第一个付款的人拿到密码后能转发给别人,这是所有"统一密码"模式的共同天花板,要连转发一起防需升级为"一人一码/卡密限次"。 - 私钥泄露即全盘失守——config.py 里的应用私钥绝不能进 git、进前端。