Stripe - Как обрабатывать подписку со свободным планом и не требуется кредитная карта во время регистрации

Мы начали реализовывать Stripe на Redsmin (один из наших проектов), и я думаю, что мы, возможно, что-то пропустили, Вот как это работает:

  • Чтобы использовать наш продукт, пользователь должен выбрать план (бесплатно, s, m, xl, xxl...), затем ввести его логин/пароль, и тогда вам будет полезно пройти 30-дневную пробную версию. Когда пользователь отправляет форму, наш сервер вызывает Stripe create_customer с указанным планом и без кредитной карты (потому что мы хотим предложить 30 дней бесплатно без необходимости кредитной карты), и мы обновляем модель пользователя на нашей стороне с возвращенными customer_id и subscription_id.

  • Мы установили webhook для получения событий с полосой, поэтому через 30 дней наш веб-хост должен получить событие customer.subscription.updated с object.status == active. Я прав?

  • Однако, поскольку мы не указали связанную карту для пользователя во время регистрации, мы должны быстро получать через другое событие customer.subscription.updated с object.status == unpaid вправо? Затем на нашей стороне мы деактивируем учетную запись пользователя и заставим ее перейти на страницу выбора плана.

  • С этого момента пользователь может выбрать либо бесплатный план, либо один из наших премиальных планов:

  • #Scenario 1. Если пользователь выбирает бесплатный план, мы просто активируем его учетную запись на нашей стороне и ничего не делаем, потому что мы настроили бесплатный план на полосе, чтобы стоить 0 $. Мы реализовали правильный процесс с помощью нашего бесплатного плана? Есть ли лучшие способы?

  • #Scenario 2. Если пользователь выбирает премиальный план, мы перенаправляем его на форму кредитной карты, которая затем будет отправлена ​​на Stripe, и мы обновим учетную запись пользователя с полосой временный токен карты. Что нам делать дальше?:

    • Должны ли мы ждать появления полосы, чтобы отправить нам событие? Если да, то какое событие? customer.subscription.updated? charge.succeeded? Каким будет значение object.status тогда?
    • Следует ли нам непосредственно активировать учетную запись пользователя на нашей стороне и ждать подтверждения от полоски? Если да, то каково будет имя и данные события, которые мы должны ждать?

view?id=AAIAAAD-U-%0AYBJN9lpixm6nxrnAaHQY5DoZ0FcNQ&trk=nav_responsive_tab_profile

Ответ 1

В части 2, где вы это делаете:

Мы установили webhook для получения событий с полосой, поэтому через 30 дней наш веб-хост должен получить событие customer.subscription.updated с объектом object.status == active Я прав?

Вы также можете подумать о внедрении webtook customer.subscription.trial_will_end, этот веб-сайт будет отправлен за три дня до того, как пробная версия будет завершена, и вы сможете отправить клиенту уведомление об обновлении их платежной информации.

Таким образом, если пользователь решит пойти и обновить свою платежную информацию, Stripe сможет принять платеж, как только пробная версия будет завершена, и они смогут продолжать пользоваться вашим сервисом без перерыва.

# Сценарий 1 Если пользователь выбирает бесплатный план, мы просто активируем его учетную запись на нашей стороне и ничего не делаем, потому что мы настроили бесплатный план на полосе, чтобы стоить 0 $. Мы реализовали правильный процесс с помощью нашего бесплатного плана? есть ли лучшие способы?

Насколько я знаю, это лучший способ реализации бесплатных планов с использованием Stripe, я бы просто наверняка удостоверился, что клиентам не были отправлены какие-либо счета-фактуры, если это не было необходимо. Я сомневаюсь, что пользователи ожидают получить счет за каждый расчетный период, если они используют бесплатный план.

#Scenario 2 Если пользователь выбирает премиальный план, мы перенаправляем его на форму кредитной карты, которая затем будет отправлена ​​на Stripe, и мы обновим учетную запись пользователя полосы с помощью временного маркера карты. Что нам делать дальше?

  • Должны ли мы ждать, пока stripe отправит нам событие, если да, какое событие? customer.subscription.updated? charge.succeeded? Каким будет значение object.status?
  • Следует ли нам непосредственно активировать учетную запись пользователя на нашей стороне и ждать подтверждения от полоски? Если да, то каково будет имя и данные события, которые мы должны ждать?

После того как пользователь выбрал план и обновил свою платежную информацию, я сразу же активировал бы их аккаунт, если бы ответ на обновление подписки из Stripe был успешным.

Пока вы настроили настройки своей подписки на панели управления Stripe, вы должны иметь возможность разрешить Stripe обрабатывать то, что он будет делать, если платеж не удастся. Просто убедитесь, что вы реализуете webhook customer.subscription.updated, так как это будет веб-сайт, который Stripe отправит вам, если они пометят подписку как неоплаченную или отмененную, что позволит вам соответствующим образом обновить ваши собственные записи.