Получение следующего счета за подписку в пробном режиме, без использования счета и без каких-либо способов оплаты

Я использую Stripe для управления платежами на работе.

Мне нужно показать моим пользователям список цен, но на самом деле меня интересует не цена до вычета налогов. Это цена после уплаты налогов и использования купона, если таковой имеется.

Так что это выглядит как идеальный вариант использования конечной точки получения предстоящего счета. За исключением следующих условий, это не работает:

  • Подписка находится в пробном режиме
  • Подписка настроена на оплату сейчас (не опция выставления счета)
  • На данный момент у клиента вообще нет способов оплаты. В этом случае я получаю сообщение об ошибке
The subscription will pause at the end of the trial instead of generating an invoice because the customer has not provided a payment method and trial_settings[end_behavior][missing_payment_method] is set to `pause`.; code: invoice_upcoming_none;

Независимо от того, в каком штате сейчас находится мой пользователь, я хочу иметь возможность показывать цену после уплаты налогов, включая купон, если таковой имеется.

Я разговаривал с кем-то из команды Stripe на Discord здесь и спросил, почему это возможно с клиентского портала:

Но не в моем случае, и, к сожалению, ответ таков: очевидно, это не часть их общедоступного API...

Неужели я первый, кому это нужно? Как кто-нибудь нашел обходной путь?

Единственный обходной путь, который предлагает человек в Discord, — это изменить подписку и пометить ее для использования и выставления счета, вызвать на предстоящий счет, а затем вернуться обратно, чтобы не использовать счет, снова обновив подписку.

Это действительно ужасная идея обновлять подписку дважды, особенно для конечной точки только для чтения (GET) на моей стороне...

Я чувствую себя застрявшим и понятия не имею, как достичь того, что выглядит как базовый вариант использования. Любая помощь приветствуется!

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
88
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Если для trial_settings.end_behavior.missing_payment_method установлено значение pause и нет доступного способа оплаты, невозможно получить предстоящий или предварительный счет за подписку.

Единственный обходной путь, который предлагает человек в Discord, — это изменить подписку и пометить ее для использования и выставления счета, вызвать на предстоящий счет, а затем вернуться обратно, чтобы не использовать счет, снова обновив подписку.

Если они имеют в виду это:

  1. Обновите подписку, чтобы изменить trial_settings.end_behavior.missing_payment_method на create_invoice.
  2. Получить предстоящий или предварительный счет-фактуру
  3. Обновите подписку еще раз, чтобы вернуть trial_settings.end_behavior.missing_payment_method на pause.

Тогда да, это единственный способ. API Stripe не поддерживает изменение trial_settings.end_behavior.missing_payment_method при получении предстоящего или предварительного счета, поэтому временное изменение подписки — единственный вариант.

Это действительно ужасная идея обновлять подписку дважды, особенно для конечной точки только для чтения (GET) на моей стороне...

Это не идеально, но это единственный вариант в этом сценарии.

Думаю, мне придется смириться, просто это кажется самым простым вариантом использования, позволяющим переопределить trial_settings.end_behavior.missing_payment_method, хотя мне трудно в это поверить. Наличие пользователя на пробной версии с подпиской, которую следует приостановить в конце, и без способа оплаты кажется самым простым вариантом использования, который может возникнуть, когда пользователь присоединяется. Отсутствие возможности предварительного просмотра в этом случае действительно странно, но я думаю, мне придется использовать этот обходной путь... Я почему-то все еще надеюсь, что кто-то другой каким-то образом придумает лучшую идею/обходной путь, но... Сомневаюсь в этом. Спасибо

maxime1992 22.05.2024 20:45

Я действительно нашел правильное решение! Я поделюсь этим через секунду, но я удалил слово «принять» из вашего ответа. Извините, но я хочу, чтобы это было лучшим решением для других.

maxime1992 23.05.2024 11:57
Ответ принят как подходящий

Я разговаривал об этом с коллегой, и он просто не мог смириться с тем фактом, что Stripe не поддержит это. Итак, мы разговаривали и пробовали разные вещи в течение 2 с половиной часов, и в конце концов он нашел решение!

Сделайте GET звонок на https://api.stripe.com/v1/invoices/upcoming со следующими параметрами:

  • subscription_details[items][0][price]: идентификатор цены
  • customer: идентификатор клиента
  • automatic_tax[enabled]: true
  • discounts[0][coupon]: (необязательно) идентификатор купона.

И это дает мне общую стоимость с учетом налогов и купона, даже если пользователь использует пробную версию, с автоматической оплатой и без указания способа оплаты!

Нет необходимости обновлять подписку для оплаты по счету, делать запрос и автоматически переключаться обратно на оплату.

Это покажет предстоящий счет за гипотетическую подписку, которая еще не существует. Если это подходит для вашего варианта использования, это здорово, но имейте в виду, что это не будет отражать фактический предстоящий счет по существующей подписке.

Justin Michael 23.05.2024 18:10

Другие вопросы по теме