Stripe Upcoming Invoice API во время пробного периода

Я хотел бы показать покупателю предварительный просмотр (или цитату) того, сколько будет взиматься плата за подписку, если они внесут изменения в свою подписку. Для этого я использую конечную точку API «предстоящий счет»:

https://stripe.com/docs/api/invoices/upcoming

По этой ссылке они заявляют, что «Вы можете предварительно просмотреть эффекты обновления подписки, включая предварительный просмотр того, какое пропорциональное распределение будет иметь место».

При изменении планов необходимо сначала получить идентификатор текущего элемента подписки (https://stripe.com/docs/api/subscription_items) и укажите "deleted" => true. Затем вы добавляете новый план как subscription_item.

Вот пример вызова:

[
  "subscription" => "sub_GUw5iYoBYiSAEl"
  "subscription_items" => [
    [
      "id" => "si_GUw53rbtqOpZYB"
      "deleted" => true
    ],
    [
      "plan" => "plan_GAf8EkL1VIPYZ9"
      "quantity" => "1"
    ]
  ]
]

Это отлично работает, когда у пользователя нет пробного периода.

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

Если вы находитесь в пробном периоде месячного плана и переходите на годовой (или наоборот), то в предстоящем счете будет указано 0,00 долларов США, подлежащих оплате сегодня.

Это также происходит через панель инструментов Stripe:

Полоса предстоящего счета

Есть ли способ показать реальную сумму, а не 0,00 долларов США?


person karel    schedule 07.01.2020    source источник
comment
Скорее всего, вы захотите пройти subscription_trial_end, чтобы увидеть, как это будет выглядеть, если суд немедленно закончился.   -  person taintedzodiac    schedule 07.01.2020
comment
@taintedzodiac, спасибо, это действительно полезный обходной путь. Я не смогу отобразить дату счета (мне пришлось бы отслеживать дату окончания пробной версии и использовать ее), но, по крайней мере, сумма будет правильной. Если вы добавите его в качестве ответа, я помечу его как принятый.   -  person karel    schedule 08.01.2020
comment
Рад, что помог! Добавлено как ответ.   -  person taintedzodiac    schedule 08.01.2020


Ответы (1)


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

person taintedzodiac    schedule 08.01.2020
comment
Это помогает! Одно неприятное поведение заключается в том, что если вы используете текущую временную метку, вам нужно будет учитывать сдвиг часов, так как вы все равно можете вернуть 0 долларов, если ваш компьютер немного быстрее с момента последнего запуска NTP. Если вы зайдете слишком далеко назад и клиент недавно обновил подписку, вы получите сообщение об ошибке, так как она не находится в текущем периоде выставления счета. Я вскинул руки и попросил текущую метку времени меньше 3 секунд. - person Nicholas Piasecki; 25.02.2021