如何在Moodle中通过Stripe创建月/年订阅计划实现页面付费?
在Moodle中实现Stripe月付/年付订阅及付费页面访问方案
一、核心思路
单纯将课程作为订阅计划会受限于Moodle课程的周期逻辑,无法自动处理续费流程。正确的做法是结合Stripe支付网关插件+付费权限控制插件,把订阅状态和页面访问权限绑定,而非直接关联课程本身。
二、具体实现步骤
1. 配置Stripe支付网关
- 安装Moodle官方的Stripe支付网关插件,在后台「站点管理」→「插件」→「支付网关」→「Stripe」中完成配置:
- 填入Stripe的测试/生产API密钥
- 勾选「允许订阅支付」选项,确保插件支持Stripe的订阅计划
2. 在Stripe后台创建订阅计划
- 登录Stripe管理后台,创建两类订阅产品:
- 月付计划:设置名称、月付金额,开启自动续费
- 年付计划:设置名称、年付金额,开启自动续费
- 记录每个计划的定价ID,后续在Moodle中关联使用
3. 用付费权限插件控制页面访问
- 安装「Restrict Access by Payment」类插件(Moodle插件市场可搜索获取)
- 针对需要付费访问的页面(自定义页面、课程资源、模块等)设置访问规则:
- 添加「支付条件」,关联之前记录的Stripe订阅定价ID
- 设定规则:仅当用户处于有效订阅状态时,才能访问目标页面
4. 实现订阅状态与权限同步
- 在Stripe后台配置webhook,监听以下关键事件:
customer.subscription.updated(订阅状态更新)customer.subscription.deleted(订阅取消)
- 在Moodle中通过自定义脚本或插件自带功能,接收Stripe的webhook通知:
- 续费成功时,自动延长用户对应页面的访问权限有效期
- 订阅取消/续费失败时,立即收回用户的访问权限
5. 简化方案:使用会员制插件
- 若不想手动配置webhook,可选择内置Stripe订阅集成的Moodle会员插件:
- 创建月付、年付两个会员等级,关联Stripe对应订阅计划
- 为不同会员等级分配对应页面的访问权限
- 插件会自动处理续费提醒、权限同步、订阅状态变更等流程,无需额外开发
三、解决课程订阅的续费限制
之前用课程作为订阅计划的问题在于,Moodle课程的 enrolment 逻辑是一次性的,无法自动关联Stripe的自动续费。修正方案:
- 不要直接将课程设为订阅商品,而是把课程访问权限绑定到用户的订阅状态
- 通过webhook或会员插件,在用户续费成功时自动重新 enrol 课程,续费失败则移除 enrolment
内容的提问来源于stack exchange,提问作者MD TAREK HOSSEN
相关产品推荐
相关产品推荐

