Stripe Checkout - Создать сессию - Применить ставки налога на подписки

Я пытаюсь настроить новый Stripe Checkout Create session, Я не могу установить налоговую ставку для подписки во время создания сеанса, так как подписка автоматически создается Stripe.

Я установил ставку налога на приборной панели с ставкой НДС по умолчанию 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' и установить его непосредственно в подписке вместо того, чтобы устанавливать его в каждом счете?

Первая покупка подписки клиента, кажется, не применяет налоговую ставку, так как статус не сохраняется в течение часа, как это происходит во время цикла подписки. Это потому что я в тестовом режиме?

Любая помощь будет оценена

4 ответа

Достигнув технической поддержки Stripe, я получил это:

"В настоящее время у нас нет возможности установить налоговую ставку с помощью Checkout, но это функция, которая должна быть добавлена ​​в будущем".

Итак, вот обходной путь для тех, кому нужно установить налоги на подписку с новой сессией Stripe Checkout. Следующий план поможет вам добавить налог на вашу подписку прямо с первого счета и последующих счетов подписки!

  1. Создайте нового клиента и сохраните идентификатор клиента на своем бэкэнде:
new_customer = stripe.Customer.create(
    email = user.email
)
  1. Создайте элементы счета-фактуры для вашего налога в плане подписки: (Это будет автоматически включено в первый план подписки)
new_tax_invoice = stripe.InvoiceItem.create(
    customer=new_customer['id'],
    amount=int(plan.price*20),
    currency="eur",
    description="VAT"
)
  1. Создайте извлечение Stripe Session и передайте stripe_session.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'],
)
  1. Создайте объект налога на панели инструментов Stripe с вашей налоговой ставкой

  2. Прослушайте Stripe Webhook для customer.subscription.created и обновите объект подписки с идентификатором налоговых ставок по умолчанию, который вы получили на шаге 4

if stripe_webhook['type'] == 'customer.subscription.created':
    stripe.Subscription.modify(
        stripe_webhook['data']['object']['id'],
        default_tax_rates = [app.config['STRIPE_TAX_RATE']]
    )
  1. Прослушайте наш веб-крючок Stripe для checkout.session.completed и проведите необходимую уборку на бэкэнде с помощью stripe_subscription_id и stripe_customer_id

Вы не можете установить налоговые ставки для подписок, созданных с помощью сеансов. Над этим работает Stripe, но сейчас вам придется создавать подписки с налоговыми ставками через API.

У меня точно такая же проблема. Я попытался прослушать "customer.subscription.created" и обновить налоговые ставки.

Это не работает должным образом, потому что в момент получения хука 1-й счет уже создан и завершен...

Тогда следующие счета в порядке, хотя.

Любое обновление по этому поводу? Или ссылка на открытый запрос на Stripe?

ура

Adrien

Создайте объект «stripe.taxRates.create()» , затем назначьте «id» для «tax_rates» , как показано ниже:

      tax_rate = stripe.TaxRate.create( # Here
    display_name='Sales Tax',
    percentage=7.25,
    inclusive=False 
)

stripe.checkout.Session.create(
    line_items=[
        {
            'price_data': {
                'currency': 'usd',
                'unit_amount': 20,
                'product_data': {
                    'name': 'T-shirt',
                },
            },
            'quantity': 2,
            'tax_rates': [tax_rate['id']] # Here
        },
    ],
    mode="payment",
    success_url="https://example.com/success",
    cancel_url="https://example.com/cancel"
)
Другие вопросы по тегам