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. Следующий план поможет вам добавить налог на вашу подписку прямо с первого счета и последующих счетов подписки!
- Создайте нового клиента и сохраните идентификатор клиента на своем бэкэнде:
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 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'],
)
Создайте объект налога на панели инструментов Stripe с вашей налоговой ставкой
Прослушайте 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']]
)
- Прослушайте наш веб-крючок 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"
)