想为社区增加更多支持?Discourse 订阅功能(subscription)介绍

:kissing_heart:订阅插件使您能够创建一次性以及循环订阅,用户可以通过付费来访问受限内容。这不失为一种资助社区托管费用的绝佳方式。
:heart:本文由@林青枫 翻译、润色、校对、格式化为markdown文本,发布于Linux do 和 星语思源(starorigin),转载请注明作者。

功能特性

Discourse 订阅功能支持以下特性:

位于顶部导航栏的“订阅”按钮将引导您至订阅页面 /s,其中列出了您为站点配置的订阅选项:


当用户点击特定计划的“订阅”按钮后,将跳转至该计划的支付页面:

用户填写完付款详情和地址,并点击“订阅”后,将看到“感谢您!”的消息,并被引导至其账单页面:

同时,用户会被自动添加到您选择的用户组中,以便您轻松查看哪些用户已订阅,并为该用户组提供专属内容。

术语

  • 订阅 - 订阅是一种定期付款计划,允许您控制对社区内容的访问权限。当创建或删除订阅时,用户会被添加到或移除出您与订阅计划关联的用户组。订阅由产品和订阅周期组成。
  • 产品 - 在Stripe的术语中,产品是您正在销售的商品。一个产品可以包含一个或多个订阅周期。
    • 要为您的产品添加描述,请添加一个名为“description”的元数据字段,并使用该字段。您可以使用Markdown格式。
  • 订阅周期 - 订阅周期包含价格、循环周期,并与您的订阅者可以访问的用户组相关联。

:rotating_light: 请务必始终妥善保管您的Stripe私钥。

:warning: 如果您关闭Discourse服务器、卸载此插件或您的网站离线,Stripe将继续向您的客户收取服务费用,直到订阅被取消。

配置

  1. 安装并启用插件
  2. 配置支付网关(Stripe)
  3. 在Stripe中配置Webhook和事件
  4. 管理 > 插件 > 已安装 > 订阅 > 设置下添加您的Stripe密钥(公开密钥、私密密钥、Webhook密钥)/admin/site_settings/category/discourse_subscriptions?filter=plugin%3Adiscourse-subscriptions
  5. 创建一个用户组,供您的订阅者通过购买加入
  6. 管理 > 插件 > 订阅下创建产品和订阅周期
  7. 盈利!

设置您的支付网关。

首先,您需要在Stripe支付网关上拥有一个账户。为了开始使用,您可以设置一个测试模式账户,了解其工作原理,而无需进行任何实际交易或设置银行账户。插件中没有测试模式切换;请务必使用您的开发者密钥(它们以pk_testsk_test开头)。

在您的Stripe账户中设置Webhook和事件

:bomb: Webhook是使订阅取消功能完全正常工作所必需的。 请确保您已正确配置它们。

在Stripe上拥有账户后,您需要告知Stripe您网站的地址,以便它可以通知您有关某些交易的信息。您可以在Stripe仪表板的端点 > URL下输入此地址。

Webhook地址[您的服务器地址]/s/hooks – 其中[您的服务器地址]是您Discourse安装的URL。

您还需要告知Stripe它应该通过Webhook URL通知您哪些事件。

目前,Discourse订阅响应以下事件:

  • customer.subscription.deleted
  • customer.subscription.updated
  • checkout.session.completed

将Stripe API和Webhook密钥添加到您的插件设置中

Stripe需要被授权与您的网站通信。为此,它会发布一对私有和公开的API密钥以及一个用于您的Webhook的签名密钥

要授权Webhook,请将Stripe的API密钥和Webhook密钥添加到您的设置页面(在开发者下)。

:warning: 添加生产密钥将进行实时支付。如果您计划进行测试,请务必切换到“查看测试数据”模式,并在开发者下获取pk_testsk_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(需要身份验证)

更多测试卡号:测试卡号 | Stripe文档

访问/s并输入一些测试交易。

上线

准备上线后,将您的API和Webhook密钥更改为生产密钥。您需要在实时模式下创建新的产品和计划。

请注意,如果您未正确配置Stripe Webhook,并且由于任何原因(信用卡过期等)导致定期付款处理失败,用户仍然可以访问该组。要让Stripe自动取消订阅,请务必将您的管理失败付款设置配置为类似于下图,并按照上述说明配置Webhook。

更新付款信息

用户可通过访问账单页面,点击订阅旁边的编辑按钮来更新其个人订阅所用的银行卡。点击后将打开如下界面:

使用 Stripe 定价表进行 Stripe 结账

您也可以选择不使用订阅插件的产品和结账页面,而是使用 Stripe 结账Stripe 定价表



为使Stripe Checkout与订阅插件协同运作,请在Stripe内设置价格表,并将价格表嵌入代码中的pricing-table-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 Publishable Key(Stripe 可发布密钥)。
discourse subscriptions secret key Stripe Secret Key(Stripe 私密密钥)。
discourse subscriptions webhook secret Stripe 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 启用更详细的日志记录以帮助调试。请不要在生产环境中永久启用。