条带计量计费方式

Stripe metered billing approach

我准备将 stripe 集成为我客户网站的支付网关。我客户的计划是根据每个月该组织的活跃用户数向该组织收费。例如,如果组织有 10 个用户,只有 8 个处于活动状态,那么在月底时,组织将被收取 8 x 每个用户每月 20 美元 = 160 美元的费用。每个月的活跃用户数可能会有所不同。

那么,考虑到上述情况,您能否就以下有关如何在 stripe 下进行设置的问题向我说明一下?

  1. 组织必须在月底收费
  2. 如果组织在月中订阅,则应按比例收费。 (示例:订阅日期是 3 月 10 日,假设我们在最后一天 3 月 31 日,组织在 3 月 31 日有 6 个活跃用户,那么 20/31 天 * 20 * 6 = 77.42 美元是组织必须支付的费用)

如果有的话,你能帮我提供步骤和建议吗?

谢谢, 赫曼特

这其实很简单。

你需要结合 Stripe 的 metered billing with a billing cycle anchor.

首先,您需要为结算创建一个“价格”。这可以通过 API 来完成。注意 intervalusage_typecurrencyunit_amount:

const stripe = require('stripe')('sk_test_4eC39HqLyjWDarjtT1zdp7dc');

const price = await stripe.prices.create({
  currency: 'usd',
  recurring: {
    interval: 'month',
    usage_type: 'metered'
  },
  product_data: {
    name: 'Gold special',
  },
  nickname: 'Gold special price',
  unit_amount: 3000,
});

然后您需要创建一个订阅,确保不要传入 quantity 参数。确保记录输出 subscription item ID - 这用于报告使用情况。

创建付款后,您需要使用 billing cycle anchor 设置订阅。锚是当前 UNIX 时间戳的 UNIX 时间戳(以秒为单位)。

为了达到您想要的效果,您需要创建一个在当月 31 日触发的锚点。当给定的月份没有 31 号时,将在该月的最后一天触发发票:

const stripe = require('stripe')('sk_test_4eC39HqLyjWDarjtT1zdp7dc');

const subscription = await stripe.subscriptions.create({
  customer: 'cus_4fdAW5ftNQow1a',
  items: [
    {
      price: 'price_CBb6IXqvTLXp3f',
    },
  ],
  billing_cycle_anchor: 1611008505, // Calculate current time in seconds until anchor date
});

这将按照文档中的说明自动按比例分配。

我给出的两个示例非常简单,您可以进行更多配置,但我希望它们能帮助您作为起点。请阅读答案顶部的两个文档链接,了解如何配置您可能需要的所有其他内容。