在 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'
)
题目:
活动 invoice.created
确实会在 11 月 9 日 第一次 举行吗?
10 月 9 日至 11 月 9 日 3 美元的额外价格会添加到当前 10 美元的发票中,还是会添加到 未来 的发票中11月9日-12月9日?从文档中看不清楚。
如何将元数据添加到 原始 10 美元的发票?我可以将元数据添加到附加发票,但如果用户使用的请求少于 100 API,我根本不需要创建附加发票,所以我不能依赖附加发票。
它说
Create any invoice items before your customer is subscribed to the
plan, and then create the subscription via an update customer
subscription call.
- 但我在 10 月 9 日永远订阅了用户!如果一个月还没有过去,我如何在该日期之前或该日期(10 月 9 日)创建一个
InvoiceItem
,因此不知道用户进行了多少次 API 调用(10 月 9 日显然,用户进行了零次 API 调用)?我只能在 30 天内创建 InvoiceItems
,因为那时我 知道 在 10 美元的基础上向他们收取多少费用! 10 月 9 日,我不知道。难道我什么都不懂吗?
每次创建发票时,您都会在 webhook 上收到事件 invoice.created
。因此,当您在 11 月 9 日为客户订阅包月计划时,您将在 11 月 9 日、12 月 9 日、1 月 9 日等日期收到此活动
订阅的第一张发票(在您创建订阅时生成)总是立即关闭,因此无法在此时添加发票项目。如果这是您想要做的事情(例如,为了支付安装费),您需要在创建订阅之前 创建发票项目。这样它就会自动添加到订阅您的客户时创建的第一张发票中。
在您的情况下,您希望根据客户在刚刚结束的月份中提出的 API 请求数量向下一张发票添加费用。因此,在 invoice.created
事件中,您需要检测它是新月份的开始还是第一个月份。如果是新月,则需要决定是否必须向用户添加发票项目(基于 API 请求的数量)。
您不能将元数据添加到上个月的上一张发票中。您只需将发票项目添加到当前发票(对于开始的月份)并添加说明以表明额外的行项目用于上个月的消费。
我为我的用户使用 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'
)
题目:
活动
invoice.created
确实会在 11 月 9 日 第一次 举行吗?10 月 9 日至 11 月 9 日 3 美元的额外价格会添加到当前 10 美元的发票中,还是会添加到 未来 的发票中11月9日-12月9日?从文档中看不清楚。
如何将元数据添加到 原始 10 美元的发票?我可以将元数据添加到附加发票,但如果用户使用的请求少于 100 API,我根本不需要创建附加发票,所以我不能依赖附加发票。
它说
Create any invoice items before your customer is subscribed to the plan, and then create the subscription via an update customer subscription call.
- 但我在 10 月 9 日永远订阅了用户!如果一个月还没有过去,我如何在该日期之前或该日期(10 月 9 日)创建一个
InvoiceItem
,因此不知道用户进行了多少次 API 调用(10 月 9 日显然,用户进行了零次 API 调用)?我只能在 30 天内创建InvoiceItems
,因为那时我 知道 在 10 美元的基础上向他们收取多少费用! 10 月 9 日,我不知道。难道我什么都不懂吗?
每次创建发票时,您都会在 webhook 上收到事件 invoice.created
。因此,当您在 11 月 9 日为客户订阅包月计划时,您将在 11 月 9 日、12 月 9 日、1 月 9 日等日期收到此活动
订阅的第一张发票(在您创建订阅时生成)总是立即关闭,因此无法在此时添加发票项目。如果这是您想要做的事情(例如,为了支付安装费),您需要在创建订阅之前 创建发票项目。这样它就会自动添加到订阅您的客户时创建的第一张发票中。
在您的情况下,您希望根据客户在刚刚结束的月份中提出的 API 请求数量向下一张发票添加费用。因此,在 invoice.created
事件中,您需要检测它是新月份的开始还是第一个月份。如果是新月,则需要决定是否必须向用户添加发票项目(基于 API 请求的数量)。
您不能将元数据添加到上个月的上一张发票中。您只需将发票项目添加到当前发票(对于开始的月份)并添加说明以表明额外的行项目用于上个月的消费。