条带签出-创建会话-对订阅应用税率

人气:200 发布:2022-10-16 标签: stripe-payments tax-rate stripe-sca

问题描述

我正在尝试设置新的Stripe Checkout Create session。我无法在创建会话期间设置订阅的税率,因为订阅是由条纹自动创建的。

我已在仪表板上使用默认的20%增值税税率设置了税率。我希望这一点自动应用于所有订阅。有人能帮我解决这个问题吗?

stripe.checkout.Session.create(
        payment_method_types=['card'],
        subscription_data={
            'items': [{
            'plan': plan.stripe_plan_name,
            'quantity': 1
            }],
        },
        customer_email = user.email,
        success_url='https://www.jetpackdata.com/success',
        cancel_url='https://www.jetpackdata.com/cancel'
    )

,由stripe.redirectToCheckout在客户端挑选。

我正在侦听'checkout.session.completed'的网络挂钩以升级我后端的帐户。

我正在收听'invoice.created',当status=draft时,我设置了默认税率(因为我们在创建后有一个小时可以修改它)。

我是否应该改为收听'customer.subscription.created'并直接在订阅上设置它,而不是在每张发票上设置它?

第一次客户订阅购买似乎没有应用税率,因为在订阅周期中,状态不会在一个小时内保持为草稿。是因为我处于测试模式吗?

如有任何帮助,我们将不胜感激。

推荐答案

联系条纹技术支持,我得到了以下信息:

"目前,我们无法设置 税率通过结账,但这是我们路线图上的一项功能 将在将来添加。"

因此,这里有一个解决办法,同时为那些需要通过新的Stride Checkout会话为订阅设置税收的人。以下大纲将帮助您从第一张发票和后续的订阅发票中为您的订阅添加税!

创建新客户并将客户ID存储在后端:
new_customer = stripe.Customer.create(
    email = user.email
)
在订阅计划上为您的税项创建发票项:(这将自动拉入第一个订阅计划)
new_tax_invoice = stripe.InvoiceItem.create(
    customer=new_customer['id'],
    amount=int(plan.price*20),
    currency="eur",
    description="VAT"
)
创建条带会话签出并将stripe_ession.id移交给客户端的stripe.redirectToCheckout
stripe_session = stripe.checkout.Session.create(
    payment_method_types=['card'],
    subscription_data={
        'items': [{
        'plan': plan.stripe_plan_name,
        'quantity': 1
        }],
    },
    customer = new_customer['id'],
    success_url=app.config['STRIPE_SUCCESS_URL'],
    cancel_url=app.config['STRIPE_CANCEL_URL'],
)

使用您的税率在您的条纹仪表板上创建Tax对象

收听customer.subscription.created的条带网络挂钩,并使用您在步骤4中获得的默认税率id更新订阅对象

if stripe_webhook['type'] == 'customer.subscription.created':
    stripe.Subscription.modify(
        stripe_webhook['data']['object']['id'],
        default_tax_rates = [app.config['STRIPE_TAX_RATE']]
    )
监听check out.ession.Complete的条纹WebHook,并在您的后端使用stripe_预订_id和stripe_Customer_id执行必要的内务管理

620