在 Stripe 中创建订阅 - 我很困惑

Creating a subscription in Stripe - I'm confused

我为我的用户使用 stripe 订阅,有一个计划,比如说,每月 10 美元用于 100 个 API 请求,这是一个 标准 价格。但是,如果用户使用了 150 API 个请求,我会向他们收取 10 美元 + 3 美元的费用。对于 200 个或更多请求,它是 10 美元 + 7 美元。

说,我订阅了 10 月 9 日的用户。 11 月 9 日,stripe 将调用 webhook 事件 invoice.created。因此,如果用户使用了 150 API 个请求,我必须在基本价格的基础上再增加 3 美元(根据 Stripe 文档 https://support.stripe.com/questions/metered-subscription-billing,我只能在 1 小时内完成)。

  if even.type == 'invoice.created'
    Stripe::InvoiceItem.create(
      customer: stripe_customer_id,
      invoice: event.data.object.invoice
      amount: 300,
      currency: 'usd',
      description: 'additional price'
     )

题目:

  1. 活动 invoice.created 确实会在 11 月 9 日 第一次 举行吗?

  2. 10 月 9 日至 11 月 9 日 3 美元的额外价格会添加到当前 10 美元的发票中,还是会添加到 未来 的发票中11月9日-12月9日?从文档中看不清楚。

  3. 如何将元数据添加到 原始 10 美元的发票?我可以将元数据添加到附加发票,但如果用户使用的请求少于 100 API,我根本不需要创建附加发票,所以我不能依赖附加发票。

  4. 它说

Create any invoice items before your customer is subscribed to the plan, and then create the subscription via an update customer subscription call.

每次创建发票时,您都会在 webhook 上收到事件 invoice.created。因此,当您在 11 月 9 日为客户订阅包月计划时,您将在 11 月 9 日、12 月 9 日、1 月 9 日等日期收到此活动

订阅的第一张发票(在您创建订阅时生成)总是立即关闭,因此无法在此时添加发票项目。如果这是您想要做的事情(例如,为了支付安装费),您需要在创建订阅之前 创建发票项目。这样它就会自动添加到订阅您的客户时创建的第一张发票中。

在您的情况下,您希望根据客户在刚刚结束的月份中提出的 API 请求数量向下一张发票添加费用。因此,在 invoice.created 事件中,您需要检测它是新月份的开始还是第一个月份。如果是新月,则需要决定是否必须向用户添加发票项目(基于 API 请求的数量)。

您不能将元数据添加到上个月的上一张发票中。您只需将发票项目添加到当前发票(对于开始的月份)并添加说明以表明额外的行项目用于上个月的消费。