在将用户注册到订阅时,如果用户在我的系统中有信用,我想收取不同的费率。但是,当用户注册订阅时,Stripe会立即向他们收费,而不是等待我改变发票创建的webhook上的发票对象。
我对文档的理解是,向用户收费将等到发票创建返回200后。但是,我的发票创建webhook正在返回500,所以我知道这不是真的。
我目前的代码如下:
stripe.Subscription.create(
customer=user.stripe_customer_id,
plan=subscription_plan.stripe_product_id,
trial_period_days=trial_period,
idempotency_key=key)
我的webhook看起来像:
def invoice_created(request, *args, **kwargs):
user = request.user
invoice = request.data['data']['object']
stripe_customer = stripe.Customer.retrieve(user.stripe_customer_id)
if request.user.credit:
stripe_customer.add_invoice_item(
amount=-user.credit,
currency='usd',
description='Applied ${:.2f} of credit for subscription.'.format(user.credit),
invoice=invoice['id'],
)
return Response(status=200)
当我尝试更新发票时,表示无法修改发票。我得到的错误是:
stripe.error.InvalidRequestError: Request "": Invalid invoice: This invoice is no longer editable
我应该在这做什么?
答案 0 :(得分:2)
我基于这些文档的理解是,向发票用户收费将等到发票创建返回200后。
first Invoice of a Subscription并非如此,我们会立即收费。
如果要在第一个项目中添加项目,则需要create the Invoice Items on the Customer first,然后才能创建订阅。