| 摘要 | Discourse 订阅插件允许站点所有者销售定期和一次性购买的订阅,这些订阅授予用户在 Discourse 实例上的群组访问权限。 | |
| 安装指南 | 此插件已随 Discourse 核心 bundled。无需单独安装该插件。 |
Discourse Subscriptions 插件允许您创建一次性以及定期订阅,用户可付费以访问受限内容。这是为您的社区托管费用筹集资金的绝佳方式。
功能
Discourse Subscriptions 插件支持以下功能:
- 从管理面板创建新产品和计划
- 从管理面板取消和退款订阅
- 创建一次性购买或定期订阅计划
- 为定期订阅添加免费试用
- 支持 SCA/3D Secure
- 根据用户订阅/取消情况自动将用户添加/移除出计划群组
- 从用户个人资料中取消订阅
- 在订阅期结束时自动取消订阅
- 可选支持 Stripe Checkout
- 自动销售税计算与收取
- 用户可为单个订阅更新其卡片信息
顶部导航栏中的“订阅”按钮将带您前往订阅页面 /s,该页面列出了您为站点配置的订阅:
一旦用户点击特定计划的“订阅”按钮,将打开该计划的支付页面:
用户填写支付详情和地址并点击“订阅”后,将显示“谢谢!”消息,并被引导至其账单页面:
用户还会被自动添加到您选择的群组中,这样您就可以轻松查看哪些用户已订阅,并仅在特定群组可见的分类中提供受限内容。
术语
- 订阅 - 订阅是一种定期支付计划,允许您控制社区内容的访问权限。创建或删除订阅时,用户将被添加或移除出与您订阅计划关联的用户群组。订阅由产品和计划组成。
- 产品 - 在 Stripe 术语中,产品即您销售的内容。一个产品可以包含一个或多个计划。
- 若要为产品添加描述,请添加名为“description”的元数据字段并使用它。您可以使用 Markdown。
- 计划 - 计划包含价格、定期周期,并关联一个群组,订阅者将获得该群组的访问权限。
请务必始终妥善保管您的 Stripe 私有密钥,确保安全。
如果您关闭 Discourse 实例、卸载此插件或站点离线,Stripe 将继续向您的客户收取服务费,直到订阅被取消。
配置
- 安装并启用插件
- 配置支付网关(Stripe)
- 在 Stripe 中配置 Webhooks 和事件
- 在 Admin > Plugins > Installed > Subscriptions > Settings 下添加您的 Stripe 密钥(公开密钥、密钥、Webhook 密钥)
/admin/site_settings/category/discourse_subscriptions?filter=plugin%3Adiscourse-subscriptions. - 为订阅者创建一个群组以便通过购买加入
- 在 Admin > Plugins > Subscriptions 下创建产品和计划
- 开始盈利!
设置您的支付网关
首先,您需要拥有 Stripe 支付网关的账户。要开始使用,您可以在测试模式下设置账户,查看其工作原理,而无需进行任何真实交易或设置银行账户。插件中没有测试模式切换开关;相反,请确保使用您的开发者密钥(它们以 pk_test、sk_test 开头)
在 Stripe 账户中设置 Webhooks 和事件
Webhooks 对于使订阅取消功能完全生效是必需的。请确保正确配置它们。
拥有 Stripe 账户后,您需要 告知 Stripe 您的网站地址,以便其通知您某些交易。您可以在 Stripe 仪表板的 Endpoints > URL 下输入此地址。
Webhooks 地址:[您的服务器地址]/s/hooks – 其中 [您的服务器地址] 是您的 Discourse 安装 URL。
您还需要告知 Stripe 它应通过 Webhook URL 通知您哪些事件。
目前,Discourse Subscriptions 响应以下事件:
customer.subscription.deletedcustomer.subscription.updatedcheckout.session.completed
将 Stripe API 和 Webhook 密钥添加到插件设置
Stripe 需要被授权与您的网站通信。为此,它会发布一对私有和公开的 API 密钥 以及用于 Webhooks 的 签名密钥。
要授权 Webhooks,请将来自 Stripe 的 API 密钥和 Webhook 密钥添加到您的设置页面(在 Developers 下)。
添加生产密钥将进行真实支付。如果您计划测试,请确保切换到
View test data模式,并在 Developers 下获取pk_test和sk_test密钥。
在您的 Stripe 账户设置中,请查看:
在 Admin > Plugins > Installed > Subscriptions > Settings 下的相应设置中添加这些密钥 /admin/site_settings/category/discourse_subscriptions?filter=plugin%3Adiscourse-subscriptions.
在 Discourse 中设置用户群组
当用户成功订阅您的 Discourse 应用程序并在信用卡交易处理后,他们将被添加到一个用户群组。通过将用户分配到用户群组,您可以管理用户在网站上的访问权限。用户群组是 Discourse 的核心功能,此插件仅用于将用户添加或移除出与您计划关联的群组。
创建一个或多个带有计划的产品
在 Admin > Plugins > Subscriptions 下,点击添加新产品。保存产品后,您可以为其添加计划。请记住,一旦创建计划,其价格和计费周期将无法更改。这是为了避免订阅管理方面的混淆。
如果您查看 Stripe 仪表板,您会看到所有这些产品和计划都已列出。Discourse Subscriptions 不会在本地创建它们。它们是在 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 上创建产品后,前往 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 Subscriptions 插件交易的示例,显示税款已自动收取:
设置
| 名称 | 描述 |
|---|---|
| discourse subscriptions enabled | 启用 Discourse Subscriptions 插件。 |
| 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















