| 摘要 | Discourse 订阅插件允许站点所有者出售周期性或一次性购买的订阅,以授予用户在 Discourse 实例上的群组访问权限。 | |
| 安装指南 | 此插件已捆绑在 Discourse 核心中。无需单独安装该插件。 |
Discourse 订阅插件允许您创建一次性或周期性订阅,用户可通过支付费用访问受限内容。这是为社区托管费用提供资金的一种绝佳方式。
功能
Discourse 订阅插件支持以下功能:
- 从管理面板创建新产品和计划
- 从管理面板取消和退款订阅
- 创建一次性购买或周期性订阅计划
- 为周期性订阅添加免费试用
- 支持 SCA/3D 安全验证
- 在用户订阅或取消时自动添加/移除用户到/从计划群组
- 从用户个人资料中取消订阅
- 在订阅期结束时自动取消订阅
- 可选支持 Stripe Checkout
- 自动计算和收取销售税
- 用户可为单个订阅更新其卡片信息
位于顶部导航栏中的“订阅”按钮将带您进入订阅页面 /s,该页面列出了您为站点配置的订阅:
一旦用户点击某个计划的“订阅”按钮,将打开该计划的支付页面:
用户填写支付信息和地址并点击“订阅”后,将显示“谢谢!”消息,并被引导至其账单页面:
用户还会被自动添加到您选择的群组中,以便您轻松查看哪些用户已订阅,并为仅该群组可见的类别提供受限内容。
术语
- 订阅 - 订阅是一种周期性支付计划,用于控制您社区内容的访问权限。当创建或删除订阅时,用户会被添加或移除到您与订阅计划关联的用户群组中。订阅由产品和计划组成。
- 产品 - 在 Stripe 术语中,产品即您销售的内容。一个产品可以包含一个或多个计划。
- 若要为产品添加描述,请添加一个名为“description”的元数据字段并使用它。您可以使用 Markdown。
- 计划 - 计划包含价格、周期性循环,并关联一个群组,订阅者将获得该群组的访问权限。
请务必始终妥善保管您的 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 仪表板的 端点 > URL 下输入此地址。
Webhooks 地址:[您的服务器地址]/s/hooks – 其中 [您的服务器地址] 是您的 Discourse 安装 URL。
您还需要告知 Stripe 应通过 Webhook URL 通知您哪些事件。
目前,Discourse 订阅响应以下事件:
customer.subscription.deletedcustomer.subscription.updatedcheckout.session.completed
将 Stripe API 和 Webhook 密钥添加到插件设置
Stripe 需要被授权与您的网站通信。为此,它会发布一对私有和公开的 API 密钥 以及用于 Webhook 的 签名密钥。
要授权 Webhook,请将来自 Stripe 的 API 密钥和 Webhook 密钥添加到您的设置页面(在“开发者”下)。
添加生产密钥将进行真实支付。如果您计划测试,请确保切换到
查看测试数据模式,并在“开发者”下获取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 Checkout 和 Stripe 定价表
您也可以选择替换订阅插件的产品和结账页面,转而使用 Stripe Checkout 配合 Stripe 定价表。
在您的 Stripe 仪表板中:
- 在 Discourse 上创建产品后,前往 产品 > 产品目录
- 点击您希望包含在定价表中的产品
- 点击
编辑产品 更多选项并在元数据下输入以下内容:- 键:
group_name - 值:Discourse 上的群组名称(例如
trust_level_0)
- 键:
- 点击
更新产品保存
请确保群组名称与 Discourse 上
User_Groups下选择的群组名称匹配
创建您的 Stripe 定价表
- 前往 产品 > 定价表
- 创建新表并添加您刚刚创建的产品
- 发布表后,复制嵌入代码中的定价表 ID(它以
prctbl_...开头) - 将定价表 ID 粘贴到您的
discourse_subscriptions_pricing_table_id设置中,并启用订阅定价表设置。 - 点击绿色复选框保存两个设置。
推荐步骤:
在 Stripe 中设置定价表时,建议将用户链接到您的网站,以便结账完成后他们不会停留在没有返回您网站链接的 Stripe 确认页面上。
对于订阅,重定向到 https://<您的站点>/my/billing/subscriptions 是一个不错的选择。对于一次性支付,您可以直接链接到 https://<您的站点>/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 | 启用更详细的日志记录以辅助调试。请勿在生产环境中永久启用此设置。 |
由我们托管? 此插件可在我们的专业版、商业版和企业版托管计划中提供 Subscriptions | Discourse - Civilized Discussion















