| 摘要 | Discourse 订阅 插件允许站点所有者销售定期和一次性购买的订阅,从而授予用户访问 Discourse 实例中特定分组的权限。 | |
| 安装指南 | 此插件已随 Discourse 核心捆绑提供。无需单独安装该插件。 |
Discourse 订阅插件允许您创建一次性以及定期订阅,用户可以通过付费来访问受限内容。这是为您的社区承担托管成本的一种极佳方式。
功能
Discourse 订阅插件支持以下功能:
- 从管理面板创建新产品和计划
- 从管理面板取消和退款订阅
- 创建一次性购买或定期订阅计划
- 为定期订阅添加免费试用期
- 支持 SCA/3D Secure
- 当用户订阅/取消时,将其添加/移除出计划分组
- 从用户资料页取消订阅
- 在订阅期结束时取消订阅
- 可选支持 Stripe Checkout
- 自动计算和收取销售税
- 用户可以为其单个订阅更新银行卡
位于顶部导航栏中的“订阅”按钮将带您进入订阅页面 /s,该页面列出了您为站点配置的订阅:
当用户点击特定计划的“订阅”按钮后,将打开该计划的付款页面:
当用户填写其付款详情和地址并点击“订阅”后,他们会看到一条“谢谢!”消息,并被带到其账单页面:
用户还会被自动添加到您选择的分组中,以便您可以轻松查看哪些用户已订阅,并在仅该分组可见的分类中提供受限内容。
术语
- 订阅 (Subscription) - 订阅是一种定期付款计划,允许您控制社区内容的访问权限。当创建或删除订阅时,用户会被添加或移除出与您订阅计划关联的用户分组。订阅由产品和计划组成。
- 产品 (Product) - 在 Stripe 的术语中,产品是您销售的内容。一个产品可以包含一个或多个计划。
- 要为您的产品添加描述,请添加一个名为 “description” 的元数据字段,并改用该字段。您可以使用 Markdown。
- 计划 (Plan) - 计划包含价格、定期周期,并关联到一个分组,您的订阅者将获得该分组的访问权限。
请务必始终妥善且安全地保管您的 Stripe 私钥。
如果您关闭了 Discourse 实例、卸载了此插件或您的站点离线,Stripe 将继续向您的客户收取服务费,直到订阅被取消。
配置
- 安装并启用插件
- 配置支付网关 (Stripe)
- 在 Stripe 中配置 Webhooks 和事件
- 在 管理 > 插件 > 已安装 > 订阅 > 设置 下添加您的 Stripe 密钥(公钥、私钥、Webhook 密钥)
/admin/site_settings/category/discourse_subscriptions?filter=plugin%3Adiscourse-subscriptions. - 创建一个分组,供用户通过购买加入
- 在 管理 > 插件 > 订阅 下创建产品和计划
- 盈利!
设置您的支付网关。
首先,您需要拥有一个 Stripe 支付网关账户。要开始使用,您可以设置一个测试模式账户,查看其工作原理,而无需进行任何真实交易或设置银行账户。插件中没有测试模式切换开关;相反,请确保使用您的开发者密钥(它们以 pk_test、sk_test 开头)
在您的 Stripe 账户中设置 Webhooks 和事件
Webhooks 对于完全实现订阅取消功能是必需的。请确保您已正确配置它们。
一旦您在 Stripe 上有了账户,您需要告诉 Stripe 您网站的地址,以便它可以通知您某些交易。您可以在 Stripe 仪表板的 Endpoints > URL 下输入此信息。
Webhooks 地址:[您的服务器地址]/s/hooks – 其中 [您的服务器地址] 是您的 Discourse 安装的 URL。
您还需要告诉 Stripe 它应该通过 Webhook URL 通知您哪些事件。
目前,Discourse 订阅响应以下事件:
customer.subscription.deletedcustomer.subscription.updatedcheckout.session.completedcheckout.session.async_payment_succeeded
将 Stripe API 和 Webhook 密钥添加到您的插件设置中
Stripe 需要获得授权与您的网站通信。为此,它会发布一对私人和公开 API 密钥 以及用于 Web 钩子的 签名密钥。
要授权 Webhooks,请将 Stripe 的 API 密钥和 Webhook 密钥添加到您的设置页面(在 Developers 下)。
添加生产密钥将启用实时支付。如果您计划测试,请确保切换到
View test data模式,并在 Developers 下获取pk_test和sk_test密钥。
在您的 Stripe 账户设置中,参见:
将这些密钥添加到 管理 > 插件 > 已安装 > 订阅 > 设置 中的相应设置 /admin/site_settings/category/discourse_subscriptions?filter=plugin%3Adiscourse-subscriptions.
在 Discourse 中设置您的用户分组
当用户成功订阅您的 Discourse 应用程序后,在信用卡交易处理完成后,他们将被添加到一个用户分组中。通过将用户分配给一个用户分组,您可以管理您的用户在网站上的访问权限。用户分组是 Discourse 的核心功能,此插件除了将用户添加或移除出与您计划关联的分组外,不对其执行任何其他操作。
创建一个或多个带有计划的产品。
在 管理 > 插件 > 订阅 下,点击添加新产品。一旦您保存了产品,就可以向其添加计划。请记住,计划的价格和计费间隔在创建后无法更改。这是为了避免订阅管理方面的混淆。
如果您查看您的 Stripe 仪表板,您将看到所有这些产品和计划都被列出了。Discourse 订阅不会在本地创建它们。它们是在 Stripe 中创建的。
测试
使用以下信用卡号进行测试:
- 4242 4242 4242 4242
- 4111 1111 1111 1111 (无需身份验证)
- 4000 0027 6000 3184 (需要身份验证)
更多测试卡号:Test card numbers | Stripe Documentation
访问 /s 并输入几个测试交易。
上线
当您准备上线时,请将您的 API 和 Webhook 密钥更改为生产密钥。您将需要在实时模式下创建新的产品和计划。
请注意,如果您未正确配置 Stripe Webhooks,并且定期付款因任何原因(如信用卡过期等)处理失败,用户仍将拥有分组的访问权限。要让 Stripe 自动取消订阅,请确保按照下图所示设置您的 管理失败付款 设置,并如上所述配置 Webhooks。
更新付款信息
用户可以通过访问账单页面并点击订阅旁边的编辑按钮来更新用于单个订阅的银行卡,这将打开此屏幕:
使用 Stripe 定价表的 Stripe Checkout
您还可以选择替换订阅插件的产品和结账页面,转而使用 Stripe Checkout 配合 Stripe 定价表。
在您的 Stripe 仪表板中:
- 在 Discourse 上创建产品后,前往 Products > Product catalog
- 点击您想要包含在定价表中的产品
- 点击
Edit product - 点击
More Options并在Metadata下输入以下内容:- Key:
group_name - Value: Discourse 上的分组名称(例如
trust_level_0)
- Key:
- 点击
Update product保存
确保分组名称与 Discourse 上
User_Groups下选择的分组相匹配
创建您的 Stripe 定价表
- 前往 Products > Pricing tables
- 创建一个新的表并添加您刚刚创建的产品
- 发布表格后,复制嵌入代码中找到的定价表 ID(它以
prctbl_...开头) - 将定价表 ID 粘贴到您的
discourse_subscriptions_pricing_table_id中,并启用订阅定价表设置。 - 点击绿色对勾以保存这两个设置。
建议步骤:
在 Stripe 内部设置定价表时,建议在结账完成后将用户重定向到您的站点,否则他们将停留在 Stripe 确认页面上,而没有返回您站点的链接。
重定向到 https://<your-site>/my/billing/subscriptions 是订阅的好选择。对于一次性付款,您可以直接链接到 https://<your-site>/my/billing/payments。
自动收取税款
要启用自动收取税款,请勾选站点设置中的 discourse_subscriptions_enable_automatic_tax 复选框。
如果您启用了此功能,但未正确配置您的 Stripe 实例以收取税款,用户在完成结账流程后可能会看到此弹出窗口:
这里有此指南提供更多详细信息,但由于插件现在正在传入适当的 automatic_tax[enabled]=true 参数(步骤 5),所以不需要做太多事情。
请确保您也配置了您的注册信息(步骤 4):
这是一个 Stripe 中 Discourse 订阅插件交易的示例,显示税款已自动收取:
设置
| 名称 | 描述 |
|---|---|
| discourse subscriptions enabled | 启用 Discourse 订阅插件。 |
| discourse subscriptions extra nav subscribe | 在主导航中显示订阅按钮 |
| discourse subscriptions public key | Stripe 可发布密钥 |
| discourse subscriptions secret key | Stripe 秘密密钥 |
| discourse subscriptions webhook secret | Stripe Webhook 密钥 |
| discourse subscriptions currency | 默认货币代码。在创建订阅计划时可以覆盖此设置。 |
| discourse subscriptions campaign enabled | 启用一个活动横幅,以推广对该社区的财务支持。 |
| discourse subscriptions campaign goal | 您的支持活动的数值目标(订阅者数量或筹集金额)。 |
| discourse subscriptions campaign type | 选择要运行的活动类型(订阅者数量或每月筹集金额)。 |
| discourse subscriptions campaign banner location | 选择活动横幅的位置(顶部或侧边栏)。 |
| discourse subscriptions campaign banner bg image | 上传自定义图像用作活动横幅的背景。 |
| discourse subscriptions campaign banner shadow color | 选择活动横幅投影的颜色。 |
| discourse subscriptions campaign show contributors | 显示最近购买订阅产品的用户头像。 |
| discourse subscriptions campaign product | 当支持者点击活动上的按钮时,要发送给他们的 Stripe 产品 ID。如果此设置为空,支持者将被引导至主要产品页面。 |
| discourse subscriptions campaign grant | 授予用户一个月的免费订阅 |
| discourse subscriptions pricing table id | 来自嵌入代码的 Stripe 定价表 ID |
| discourse subscriptions pricing table enabled | 启用使用 Stripe 定价表并替换现有的订阅页面 |
| discourse_subscriptions_enable_automatic_tax | 切换是否收取销售税。需要在 Stripe 中进行一些设置。 |
| discourse_subscriptions_enable_verbose_logging | 启用更详细的日志记录以辅助调试。请勿在生产环境中永久启用。 |
由我们托管? 此插件在我们的 Pro、Business 和 Enterprise 托管计划中可用 Subscriptions | Discourse - Civilized Discussion




















