我有一个订阅计划,每个用户计划每月收费10美元,另加数据“超额”费用。换句话说,它类似于(但不限于)手机数据计划。
在周期结束时我应该何时添加每月数据使用量?
根据Subscription lifestyle documentation here,它表示invoice.created
事件发生在invoice.payment_succeeded
或charge.succeeded
之前大约一个小时。但是,似乎几乎不可能进行测试,因为每当首次为订阅创建发票时,所有的webhook事件似乎都会同时触发。应该如何处理?请注意,在循环结束时,我只想一次更新metered usage amount
。
我的代码目前是这样的:
def stripe_webhook(request):
if event_type == 'invoice.created':
subscription_item_id = [item['subscription_item'] for item in stripe_data_obj['lines']['data'] if item['plan']['usage_type'] == 'metered'][0]
data_usage = user.get_data_usage(start_date, end_date)
usage = stripe.UsageRecord.create(
quantity=data_usage,
timestamp=int(time.time()),
subscription_item=subscription_item_id,
action = 'set'
)
答案 0 :(得分:1)
如果您想将订单项手动添加到发票,则可以进行测试。想法是让您的客户试用几分钟。创建的第一个发票是用于试用的,您可以忽略该发票以及所有相关事件。几分钟后,试用期结束后,将创建新的发票并将invoice.created
事件发送到您的端点。那将使您能够修改新发票并添加本月要收取的额外金额/费用。
为此,您可以使用创建订阅API并将trial_end
参数作为表示未来几分钟的unix时间戳传递。
但是,如果确实要报告过度使用情况,则可以使用此处记录的计量计费和使用记录:https://stripe.com/docs/billing/subscriptions/metered-billing