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


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

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

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

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

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

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

  6. Сценарий № 2 если пользователь выбирает премиум-план, мы перенаправляем его на форму кредитной карты, которая затем будет отправлена в Stripe, и мы обновляем учетную запись клиента stripe временным маркером карты. что делать дальше ?:

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

1 56

1 ответ:

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

мы настроили webhook для получения событий stripe, поэтому через 30 дней наш webhook должен получить клиента.подписка.обновлено событие с объектом.статус = = Активный я прав?

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

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

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

#Сценарий 2 если пользователь выбирает премиум-план, мы перенаправляем его на форму кредитной карты, которая затем будет отправлена в Stripe, и мы обновляем учетную запись клиента stripe временным маркером карты. Что же нам делать дальше?:

  • должны ли мы ждать stripe, чтобы отправить нам событие, если да, то какое событие? клиент.подписка.обновлено? обвинить.удалось? Каково будет значение объекта.тогда статус?
  • должны ли мы напрямую активировать учетную запись пользователя на нашей стороне и ждать подтверждения от stripe? Если да, то каково будет имя события и данные, которые мы должны ждать?

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

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