Subscriptions插件的增强功能

您好,我对这个插件进行了以下更改,想知道 Discourse 团队是否愿意接受 PR。

也希望其他人能进行广泛的测试。我现在正在测试对我而言至关重要的各种场景下的流程。


原始插件是一个很好的基础,但主要侧重于通过 Stripe 进行定期订阅。已进行以下更改:

新功能和增强功能摘要

1. 多提供商支付系统(支持 Razorpay) 该插件不再硬编码为 Stripe。它现在使用基于提供商的架构,允许使用多个支付网关。

  • Razorpay 集成: Razorpay 已完全集成作为第二个支付提供商。这对于像印度这样的市场中的社区至关重要,因为 Razorpay 是首选的支付网关。
  • 安全 Webhook: Razorpay 集成非常强大,包括一个安全 Webhook 处理程序,用于服务器到服务器确认付款,确保在用户付款后关闭浏览器时不会错过任何订阅。

2. 一次性、限时订阅 除了标准的定期订阅外,这还引入了一种新的、灵活的产品类型。

  • 过期访问: 管理员现在可以创建一次性付款计划,授予用户在固定期限内访问群组的权限(例如,7 天活动通行证、30 天试用期或 90 天套餐)。
  • 自动过期: 每天会自动运行一个后台作业,检查过期的订阅并将用户从相关群组中移除,确保访问控制完全自动化。

3. 完整的定价页面大修 默认的用户订阅页面已完全重建,以提高转化率和用户体验。

  • 现代卡片式 UI: 旧的产品列表被一个干净、响应式的卡片式布局取代,该布局更易于阅读和比较。
  • 主题感知: 新设计使用 Discourse 的主题变量,并与浅色和深色模式完全兼容。
  • 单页结账: 整个结账过程现在都在定价页面上进行。点击“订阅”会在页面上直接显示付款表单,消除了冗余步骤并减少了用户阻力。

4. 高级追加销售和价值显示逻辑 新的定价卡片旨在成为强大的追加销售工具。

  • 有效月费: UI 会自动计算并显示所有计划类型的有效“月费”(包括 3 个月或年度一次性计划),让用户可以轻松比较不同选项的价值。
  • 明确节省: 在长期计划上会自动显示“节省 ₹X”徽章,清楚地传达了选择比基线更高价值计划的好处。

5. 统一的管理员和用户仪表板 管理员和用户的账单页面都已重构,变得更简单、更强大。

  • 单一统一视图: 不再有不同付款类型的单独列表,现在有一个表显示所有提供商(Stripe、Razorpay、手动)的所有订阅。
  • 清晰的信息: 这些视图清楚地显示了每个交易的提供商、状态、到期/续订日期和金额,为管理员和用户提供了其权益的完整历史记录。

6. 管理员的手动订阅管理 添加了一套新工具,让管理员拥有更多控制权。

  • 授予订阅: 管理员现在可以手动为任何用户授予任何订阅计划,并指定特定期限。这非常适合处理离线付款、提供免费访问或进行更正。
  • 撤销访问: 可以从管理员仪表板立即撤销非定期计划的访问权限。

7. 群组管理的关键错误修复

  • 已修复原始群组移除逻辑中的一个主要错误。当订阅被取消或撤销时,系统现在会执行“安全检查”,以查看用户是否对同一群组有任何其他有效订阅。只有当用户没有其他有效访问方式时,用户才会被从群组中移除,从而防止用户被错误地移除。
5 个赞

可以包含指向您的 GitHub 存储库的链接吗?

1 个赞

是的,是的,当然……给我一天时间。在切换到此插件的新字段版本时,正在处理一些与处理 Stripe 遗留数据相关的错误。

已更新第一个帖子,其中包含仓库。

设置和配置指南

本指南将引导您完成设置必要的支付提供商以及创建您的第一个产品和计划。

1. 提供商设置

首先,导航到 `Admin
, ,

3 个赞

已更新仓库,包含以下更改/修复。我现在可以将其安装并用于我的生产站点。

稳定性与安全性增强摘要

1. 现代 Stripe Checkout 集成 插件已更新,使用现代的、基于重定向的 Stripe Checkout 流程。

  • 这意味着: 用户将被发送到一个安全的、由 Stripe 托管的页面来完成付款,而不是使用页面上的信用卡表单。
  • 为何更好: 这是 Stripe 推荐的方法。它提高了安全性,减轻了您站点的 PCI 合规性负担,并通过支持 Apple Pay 和 Google Pay 等方式提供了更好的用户体验。

2. 稳如磐石的重复购买逻辑 防止用户重复购买已有有效订阅的产品的逻辑已完全重写。

  • 修复: 我们已将 product_id 添加到每个本地订阅记录中。检查现在是对本地数据库进行简单、闪电般的查询,不进行任何外部 API 调用,使其 100% 可靠。
  • 结果: 拥有有效订阅(定期或有时限)的用户现在将被正确阻止重复购买同一产品,直到其过期。

3. 所有仪表板的数据完整性 用户账单页面和管理员订阅仪表板已修复,以确保它们始终显示准确的实时数据。

  • 修复: 这两个页面现在都直接从支付提供商 (Stripe) 获取每个订阅的最新状态和续订/过期日期。
  • 结果: 您在管理员面板中看到的内容将始终与用户看到的内容完全匹配,并且两者都将反映 Stripe 中订阅的真实状态。显示计划详情为“N/A”或不正确的“活动”状态的错误已得到解决。

4. 强大的 Webhook 和作业处理

  • 不再有重复订阅: Webhook 处理程序已修复,可正确处理来自 Stripe 的事件序列,确保一次交易创建恰好 一个 订阅记录。
  • 可靠的过期作业: 每天自动过期一次性计划的后台作业已得到加固。它现在能正确设置所需的 API 密钥,即使原始计划已从 Stripe 中删除,也能过期订阅,确保您的组权限始终准确。
2 个赞

哇,感谢您做出所有这些更改!

但目前我们无法一次性合并如此大的更改。如果您希望将这些更改合并到 discourse-subscriptions 插件中,则需要将每个更改单独拆分,并创建带有测试的单独 PR。另外,请确保不会对当前正在使用 subscriptions 插件且已拥有大量订阅者的现有用户造成重大更改。

6 个赞

好的,谢谢。在确定好技术规范后,我会花时间创建多个 PR。

6 个赞