这是站长根据自身需求开发的简易的商城系统,集成支付宝扫码支付、授权密钥生成/验证/设备绑定等完整功能。同时作为小型的在线商店,适用于各类数字商品的授权销售。
RONGYAN.CC 授权与商城系统,集成支付宝扫码支付、授权密钥生成/验证/设备绑定、SMTP 邮件发送、下载令牌等完整功能。同时作为小型的在线商店运营,适用于各类数字商品的授权销售。
| 层级 | 技术 |
|---|---|
| 后端语言 | PHP 8.2 |
| 数据库 | MySQL 8.0.45 |
| Web 服务器 | Nginx 1.31 |
| 支付 | 支付宝 alipay.trade.precreate(扫码支付) |
| 邮件 | SMTP SSL/TLS(自实现,无第三方库) |
| 前端 | 原生 HTML/CSS/JS,无框架 |
| 管理后台 | SPA 单页应用 |
download_tokens.token — 唯一索引download_tokens.order_id — 索引流程: 用户扫码 → 前端轮询 status.php → 异步 notify.php 创建订单 + 发邮件
pay.php:调用 alipay.trade.precreate 获取二维码,检测 UA 判断移动端展示深链,60 秒轮询倒计时notify.php:验证 RSA2 签名(UTF-8/GBK 双兼容),幂等性检查,事务创建订单+授权+下载令牌,发送双邮件(客户+管理员)status.php:查询 payment_records 返回 {paid: true/false}return.php:同步跳转页,显示授权密钥或购买凭证verify.php:双模式(license_key 优先,order_no 兼容旧版),首次激活设备绑定,IP 限流(10 次/小时)validate.php:离线签名验证,校验 HMAC-SHA256 签名,检查过期readfile() 代理下载(不暴露真实路径)0 2 * * * php /path/to/cron/expire-licenses.php
执行三项操作:
| 决策 | 说明 |
|---|---|
is_licensed 字段 |
控制授权类/非授权类商品的邮件模板差异 |
| 下载令牌 | 单独表存储,7 天/5 次限制,本地文件 PHP 代理 |
| APP_URL | 所有 URL 统一从 .env 读取,换域名只需改配置 |
| notify_url | 作为请求参数发送,无需支付宝平台配置 |
| 签名算法 | HMAC-SHA256 + SIGN_SECRET |
| 设备绑定 | 首次激活时绑定设备 ID,后续重复验证 |
| RSA2 验签 | notify.php 中先尝试 UTF-8,失败回退 GBK 转码 |
.env 中的数据库连接、APP_URL、SIGN_SECRETtry_files $uri $uri/ /api.php(使 / 指向 index.php)cron/expire-licenses.phpis_licensed 商品类型区分error_log 轻量审计/buy/ 迁移到 /