2

Rails newb здесь, поэтому добавьте столько деталей к ответу, сколько хотите, и не стесняйтесь сказать мне, что я делаю это неправильно.Rails + Stripe: где хранить какой тип подписки у пользователя есть?

Контекст: Я создаю приложение SaaS rails и планирую добавить интеграцию полосы (оплаты) в ближайшее время. Я хотел бы создать функциональность, которая отличает различные типы аккаунтов (планы подписки), прежде чем интегрировать полосу.

Я использую множество операторов if/else через приложение в зависимости от типа учетной записи (например, бесплатно, уровень 1, уровень 2), чтобы показать/скрыть соответствующие функции пользователю. Мои основные положения выглядеть следующим образом:

<% if current_user.account_level == "1" %> 
    your account level is 1 
<% elsif current_user.account_level == "2" %> 
    your account level is 2 
<% else %> 

<% end %> 

Это предполагает Веду запись о том, что «уровень счета» имеет пользователь в модели пользователя (или какой-либо другой модели). Это подходящее место для этого? Технически, Stripe имеет самые последние данные (т. Е. Если карта отменена, уровень учетной записи будет отличаться). Должен ли я использовать Stripe api напрямую для определения уровня аккаунта? Похоже, мне следовало бы записать это где-то в моих данных.

Есть ли какие-либо другие рекомендации, которые я должен иметь в виду, развиваясь, зная, что я буду интегрировать Stripe в будущем?

ответ

9

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

Есть два основных подхода, которые Вы могли бы использовать, чтобы убедиться, что база данных имеет самое последнее состояние:

  • В своем коде, что делает API вызовы Stripe, убедитесь, что вы также обновить локальную копию, или

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

Основное преимущество для хранения этих данных локально скорость: вы, скорее всего, не хотите, чтобы ваши клиенты ждут от вызова API для каждого запроса, который обращается эти данные, тем более, что, кажется, что вам это нужно в течение вашего Веб-сайт.

Вы хотите, чтобы вы сохраняли customer ID в своей базе данных, чтобы вы могли сопоставить клиента Stripe с вашим местным пользователем.

Смежные вопросы