我为我的用户使用条带订阅,其中有一个计划,例如,每月10美元的100个API请求,这是一个标准价格。但是,如果用户使用了150个API请求,我会向他们收取10美元+ 3美元的费用。对于200多个请求,它是10美元+ 7美元。
说,我已于10月9日订阅了该用户。 11月9日,webhook事件invoice.created
将由stripe调用。因此,如果用户使用了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日当前10美元的发票中是否会加上3美元的额外价格,还是会被添加到11月9日至12月9日的未来发票中?从文档来看,目前尚不清楚。
如何将元数据添加到$ 10的原始发票中?我可以在附加发票中添加元数据,但是如果用户使用了较少的100个API请求,则根本不需要创建附加发票,因此我不能依赖附加发票。
它说
在客户订阅之前创建任何发票项目 计划,然后通过更新客户创建订阅 订阅电话。
InvoiceItem
,因此不知道用户有多少API调用(用户已在10月9日制作,显然,零API调用)?我只能在30天内创建InvoiceItems
,因为当我知道在10美元的最高价格上收费多少时! 10月9日我不知道。我不明白吗?答案 0 :(得分:1)
每次创建发票时,您都会在webhook上收到活动invoice.created
。因此,当您在11月9日订阅客户月度计划时,您将在11月9日,12月9日,1月9日等地举行此活动。
订阅的第一张发票(在您创建订阅时生成)始终立即关闭,因此无法在此时添加发票项目。如果您想要这样做(例如设置费用),您需要在创建订阅之前创建发票项。这样,它会自动添加到订阅客户时创建的第一张发票中。
在您的情况下,您希望根据客户在刚刚结束的月份中提出的API请求数量,为下一张发票添加费用。因此,在invoice.created
事件中,您需要检测它是新月开始还是第一个月。如果是新月份,则需要决定是否必须向用户添加发票项目(基于API请求的数量)。
您无法从之前一个月向之前的发票添加元数据。您只需将发票项目添加到当前发票(对于正在开始的月份),并添加说明,指示额外行项目用于上个月的消费。