支付宝付费注册
WordPress 插件:先支付宝付费、再创建账号。仅付费会员可评论与查看受保护内容。多套餐、优惠券、会员到期/续费、内容付费墙 、会员中心、沙盒/正式双环境、订单审计与自动清理。
by Claude Code · github.com/longgod666/paid-registration-alipay
★ 0stars
0forks
Install
No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:
wp plugin install https://github.com/longgod666/paid-registration-alipay/archive/refs/heads/main.zipWordPress 插件:用户先用支付宝完成支付,再创建账号;只允许付费会员评论与查看受保护内容。支持多套餐、优惠券、会员到期/续费、用户后台。
功能特性
- 先付费后注册:用户在前台填写邮箱并选择套餐,扫码完成支付宝支付后才创建 WordPress 账号;自动登录并跳转。
- 多套餐 / 优惠券:通过 JSON 配置任意数量的套餐与折扣码,支持按金额或百分比抵扣。
- 会员有效期:每套餐可设到期天数,到期后自动撤销会员身份;支持续费续期。
- 评论门槛:仅付费用户可发表评论(按角色判定),其他访客被拦截。
- 内容门控:编辑器侧边栏可对单篇文章/页面开启付费墙,未付费用户看到提示与跳转链接。
- 会员后台:
[pra_member_dashboard]短代码渲染会员中心,展示订单、到期时间、续费入口。 - 沙盒 / 正式双环境:分别保存密钥,一键切换;网关白名单仅允许
alipay.com/alipaydev.com。 - 运维友好:管理员订单导出、批量操作、补单、重新发货、审计日志、过期订单自动清理(cron)。
- 测试模式:开发期可绕过支付直接创建账号,便于联调。
环境要求
- WordPress 5.8+
- PHP 7.4+(推荐 8.0+;支付宝 SDK 需要
openssl扩展) - 已申请支付宝开放平台应用,并取得 App ID、商户私钥(PKCS#8 PEM)、支付宝公钥
- 站点必须可被支付宝异步通知服务器访问(HTTPS 公网域名 +
admin-post.php)
安装
方式 1:ZIP 上传
- 下载本仓库 ZIP,或
git archive打包为paid-registration-alipay.zip。 - 进入 WordPress 后台 → 插件 → 安装插件 → 上传插件,选择 ZIP。
- 启用「支付宝付费注册」。
方式 2:Git 克隆
cd wp-content/plugins
git clone https://github.com/longgod666/paid-registration-alipay.git
启用后,插件会自动创建以下页面(如不存在):
/付费注册/(包含[pra_paid_registration])/会员中心/(包含[pra_member_dashboard])
配置
WordPress 后台 → 设置 → 支付宝付费注册
必填项
| 字段 | 说明 |
|---|---|
| 当前生效环境 | sandbox 或 production |
| App ID | 支付宝开放平台应用 ID |
| 商户 PID(seller_id) | 用于校验异步通知来源 |
| 商户私钥 | PKCS#8 PEM 格式,用于请求签名 |
| 支付宝公钥 | 用于验签异步通知 |
| 注册金额 | 大于 0,单位元 |
| 注册页 URL | 包含 [pra_paid_registration] 的页面 |
可选项
- 套餐 / 优惠券 JSON
- 管理员通知邮箱
- 二维码图片接口(默认使用第三方服务,含
{data}占位符) - 测试模式(绕过支付)
- 过期订单自动清理天数
支付宝侧回调地址
把以下两个 URL 配置到支付宝开放平台应用:
- 同步返回:
https://你的域名/?action=pra_alipay_return - 异步通知:
https://你的域名/wp-admin/admin-post.php?action=pra_alipay_notify
使用方式
前台注册页:在任意页面插入
[pra_paid_registration]
会员中心:
[pra_member_dashboard]
单页内容门控:编辑器右侧边栏 →「付费内容设置」勾选启用,未付费用户看到提示。
短代码 / Hook 速查
| 名称 | 类型 | 用途 |
|---|---|---|
[pra_paid_registration] |
shortcode | 渲染付费注册表单 |
[pra_member_dashboard] |
shortcode | 渲染会员中心 |
pra_cleanup_expired_orders |
cron hook | 每小时清理过期待支付订单 |
pra_membership_expiry_check |
cron hook | 每日撤销已到期会员 |
pra_paid_until |
user meta | 当前会员到期时间戳 |
数据库
插件自建一张表存放未支付订单:
{$wpdb->prefix}pra_pending_registrations
支付成功后转为正式 WP 用户,过期记录由 cron 清理。卸载插件不会自动删除该表(保留审计数据);如需彻底清除,手动 DROP TABLE 即可。
安全说明
- 所有管理员操作经 nonce + 权限校验。
- 输入全量 sanitize(
sanitize_text_field/absint/wp_kses_post),输出全量 escape。 - 支付宝网关 URL 强制 HTTPS + 域名白名单,防止配置被篡改。
- 商户私钥 / 支付宝公钥仅在后台显示掩码。
- 异步通知使用
verify验签,并校验seller_id、out_trade_no、金额。
开发
源码组织:
paid-registration-alipay/
├── paid-registration-alipay.php # 入口
├── includes/
│ ├── class-pra-plugin.php # 调度 / 升级 / cron
│ ├── class-pra-settings.php # 后台设置 / 订单管理
│ ├── class-pra-registration.php # 前台注册短代码
│ ├── class-pra-payment.php # 支付宝下单 / 验签
│ ├── class-pra-user-provisioning.php # 创建 WP 账号
│ ├── class-pra-comments.php # 评论门槛
│ ├── class-pra-content-gating.php # 单篇付费墙
│ └── class-pra-member-dashboard.php # 会员中心
└── assets/
├── css/ pra-admin.css / pra-frontend.css
├── js/ pra-admin.js / pra-frontend.js
└── vendor/qrcode.min.js
本地调试可启用「测试模式」绕过真实支付。
路线图
- [ ] 微信支付通道
- [ ] WooCommerce 订阅集成
- [ ] 多语言(i18n)
.pot模板 - [ ] 单元测试 / CI
贡献
欢迎 Issue / PR:
- Fork 后新建分支
feat/xxx或fix/xxx - 遵循 WordPress 编码规范(Tabs 缩进,函数前缀
pra_/ 类前缀PRA_) - 提交前自检 nonce / 权限 / 转义
- 描述清楚动机与影响面
License
MIT — 详见 LICENSE。