:discourse2: | Summary | Discourse Subscriptions 允许站点管理员能够销售相关产品,或者是采取订购方式的交易。Discourse 会针对这类用户划分为特定的用户组。 |
Repository Link | https://src.isharkfly.com/Discource-C/discourse-subscriptions | |
Install Guide | Discourse 如何安装插件 | |
官方讨论地址 | Discourse Subscriptions - plugin - Discourse Meta |
本插件的安装需要重构。
本订购插件允许用户进行一次性购买或者订购的方式来对 Discourse 社区中需要订购才能访问的内容进行访问。同时这个插件对降低社区的运营成本,并且能够获得一定的收入上提供帮助。
特性
Discourse 的订阅支持有下面的一些特性:
- 在管理员面板中创建一个新的产品和计划
- 通过管理员面板进行订单取消和退款
- 创建一次性购买和订购计划
- 针对订购计划添加免费适用功能
- SCA/3D 安全性支持
- 当用户的订购计划取消或者过期后,能够将用户从用户中添加和删除
- 从用户属性界面取消订购
- 在用户订阅周期结束后取消订阅
- Stripe Checkout 的可选支持
- 自动计算销售税务
- 针对个人用户订阅,用户可以更新自己的信用卡
“Subscribe” 按钮位于顶部的导航中,单击这个导航将会带用户访问订阅界面,或者使用快捷键 /s
来进行访问:
当用户单击其中的一个 “Subscribe” 按钮后,Discourse 将会针对订阅计划打开一个支付页面:
当用户提交了他们的支付信息后,单击 “Subscribe” 按钮,用户将会收到一个谢谢的消息,并且将用户导航到账单页面:
同时,用户也会被自动添加到订阅用户组中,这样你可以更加容易的找到那些用户是订阅用户和一些特定的用户组只有订阅用户才能查看的内容。
定义
- 订阅(Subscription) - 订阅(Subscription) 意味着为一种周期性的支付方式允许你针对特定的用户来控制对你社区的访问权限。当一个订阅被订阅或者删除的时候,用户将会从特定的用户组中添加或者删除。一个定于被创建为一个产品或者计划。
- 产品(Product) - 一个产品的定义为一个你销售的产品,其中可以包含有一个或者多个计划(Product)。针对一个产品,你可以为这个产品添加一个描述,在描述中,你可以使用 Markdown 格式。
- 计划(Plan) - 一个计划中通常包含有一个特定的价格,支付周期等信息,同时这个计划将会关联到特定用户组。
对 Stripe 提供的私有 Key 需要非常小心,并且妥善进行保管。
如果你的 Discourse 安装实例因为某中原因被关闭或者这个支付插件被从 Discourse 安装实例中移除的话,Stripe 将会持续按照周期方式为你的用户创建支付。因此,针对本插件的关闭和删除需要同时删除 Stripe 中的支付方式。
配置
- 安装和启用插件
- 配置支付网关(Stripe)
- 在 Stripe 中配置回调和事件(Webhooks & Events)(Stripe)
- 添加 Stripe 的参数回 Discourse, 这里有 3 个参数要填写 (public, secret, webhook secret) ,添加的路径地址为: Admin > Plugins > Installed > Subscriptions > Settings
/admin/site_settings/category/discourse_subscriptions?filter=plugin%3Adiscourse-subscriptions
. - 针对你的订阅用户创建一个用户组。
- 在 Admin > Plugins > Subscriptions 路径下添加产品。
- 完成配置
配置支付网关
首先需要在 Stripe 网站上设置账户来配置支付网关。当设置成功后可以将账号设置为测试模式(Test mode)来对交易进行测试而不进行实际的交易或者设置银行账号。
针对 Discourse 的订阅插件来说,在插件中并没有测试模式,但是可以通过在插件中提供的 Key 的信息来判断是不是运行在测试模式下,查看 Key( pk_test
, sk_test
)如果有 test 的字符的话,那么表示插件运行在测试模式下。
Stripe 的测试针对中文环境不是非常友好,如果你有美国的 SSN 号码或者在美国有实体商业实体的话, Stripe 的支付会非常方便。
在 Stripe 账号中设置回调和事件
回调(Webhooks )功能是订阅或者取消订阅功能能够完全工作 的必要条件。请确定回调配置被正常配置。
当你完成 Stripe 的配置后,你需要告诉 Stripe 你的网站地址 这样的话,当特定的一些事件发生的时候,Stripe 将会调用你提供的地址来推送事件。你可以在 Stripe 的控制面板中添加 Discourse 安装实例的地址,路径位于 Endpoints > URL。
Webhooks address: [your server address]/s/hooks
– 定义 [your server address] 为你的 Discourse 安装实例地址。
同时,你还需要 Stripe 通知那些事件需要进行 API 回调。
当前 Discourage 只能相应下面 2 个事件:
customer.subscription.deleted
customer.subscription.updated
在 Discourse 插件配置中添加 Stripe API 和 Webhook Key
Stripe 需要授权后才能对安装的 Discourse 实例进行通信,在这里我们需要在 Discourse 安装实例中添加 Stripe 的 key 密钥。
这个 2 个参数被定义为: API keys 和 signing secret。
为了 Stripe 的回调进行授权,从 Stripe 中获得必要的参数后回填到 Discourse 安装实例中。
为了避免生产环境的 Key 对实际的信用卡进行扣款,在 Stripe
的环境中可以使用测试模式,这个时候提供的 key 上面会使用字符 test j进行明确标识的。如下:pk_test
和sk_test
表示的是测试 Key。
在你的 Stripe 账号中可以看到下面的配置信息:
通过 Admin > Plugins > Installed > Subscriptions > Settings 路径安装到 Discourse 的安装实例中。
也可以使用快捷
URL 链接地址: /admin/site_settings/category/discourse_subscriptions?filter=plugin%3Adiscourse-subscriptions
.
在 Discourse 中设置用户组
当一个用户在你的 Discourse 安装实例中完成订购,同时信用卡也被正常处理后,这个用户将会添加到一个特定的用户组中。
通过对这个用户组的设置,你可以对订阅用户组中的用户设置你网站的访问权限。
对用户组的权限配置是 Discourse 的核心功能,这个插件只回把用户添加到用户组中和从用户组中删除。
至于这个用户组的权限有什么需要自己通过 Discourse 进行配置。
创建一个或者多个产品
访问Admin > Plugins > Subscriptions,单击添加一个新的产品。
当新的产品添加完成后,我们就可以对新添加的产品近定价了。
需要注意的是,添加的产品和定价在配置完成后是不可以修改的。
这个设置的主要原因还是为了避免产生数据上的冲突。
当完成产品的定价后,可以访问 Stripe Dashboard,在 Stripe 的网站,你可以看到我们在本地 Discourse 安装实例中配置的产品。
这是因为 Discourse 把本地配置的产品信息通过 API 推送到了 Stripe 网站上了。
实际上针对产品信息的维护是在 Stripe 网站上进行的。
测试
使用下面的信用卡信息来进行测试:
- 4242 4242 4242 4242
- 4111 1111 1111 1111 (不需要进行授权 no authentication required)
- 4000 0027 6000 3184 (需要进行授权 authentication required)
有关更多的测试信用卡信息,请参考文档:Test card numbers | Stripe Documentation
访问 Discourse 实例的 URL 后添加 /s
来进行一些信用卡测试。
上线
当完成所有的基础配置和设置后就可以上线了。
在上线的时候可以将信用卡的处理 Key 修改为生产环境中使用的 Key。
你需要针对上线后的模式创建一个新的产品和价格。
需要注意的是:如果你没有正确的配置 Stripe 回调地址,或者用户因为信用卡到期或者其他原因导致在交易的时候 Stripe 无法正确处理交易,那么这个用户还是会保留在你设置的用户组中的。
Discourse 不会自动把用户从用户组中进行移除。
为了避免 Stripe 自动取消订阅的问题,请设置你的 Manage failed payments 设置。
这个和上面的设置回调地址的设置是相同的。
更新支付信息
用户可以通过访问自己的订阅页面来更新按月订购的支付信息。
通过单击订阅按钮,可以对当前订阅使用的支付信息进行更新。
Stripe 通过 Stripe 价格表进行支付
你也可以使用 Stripe 的价格表和支付插件来替换掉 Discourse 的支付信息。
如果想在订阅插件中使用 Stripe 的价格表进行支付话,我们需要在 Discourse 中配置 Stripe
的价格表 ID。配置的参数名称为: discourse_subscriptions_pricing_table_id
在这个参数中输入 Stripe 的价格表 ID。
自动 Tax 收集
如果希望启用自动税务收集功能,请选择 discourse_subscriptions_enable_automatic_tax
选择对话框。
如果你在 Discourse 中启用了自动税率处理,但是没有在 Stripe 中对税率进行配置的话,在用户进行支付的时候将会看到下面信息:
请访问 Stripe 税率指南 来获得更多的有效信息,但是针对这个插件的配置应该也没有什么太多的内容需要进行配置。在 Stripe 的配置第 5 步中,我们只需要配置automatic_tax[enabled]=true
这个参数。
同时,别忘了在 (第 4 步) 中对注册的州进行相关的配置。
下图显示的是整个交易的过程中的税率计算情况:
参数配置表
参数名称 | 描述 |
---|---|
discourse subscriptions enabled | 启用 Discourse Subscriptions 插件. |
discourse subscriptions extra nav subscribe | 在主导航中显示订阅链接 |
discourse subscriptions public key | Stripe Publishable Key |
discourse subscriptions secret key | Stripe Secret Key |
discourse subscriptions webhook secret | Stripe Webhook Secret |
discourse subscriptions currency | 默认的货币代码。这个配置可以在创建订阅计划的时候被重新定义 |
discourse subscriptions campaign enabled | 启用捐助的进程对话框,这个能够帮助社区完成一定的捐助计划supporting this community financially. |
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 | 针对订阅的用户,给予 1 个月的免费订购。 |
discourse subscriptions pricing table id | Stripe 价格表 ID,这个被 用来使用 Stripe 的支付。 |
discourse subscriptions pricing table enabled | 使用 Stripe 的价格表来替代 Discourse 的产品信息。the existing subscribe page |
discourse_subscriptions_enable_automatic_tax | 选择是否对产品的税率进行计算,这个需要在 Stripe 中进行更多的配置。 |
:discourse2: Hosted by us? This plugin is available on all of our hosting plans Subscriptions | Discourse - Civilized Discussion