Как разработать кредитную систему для службы подписки, которая использует Stripe для оплаты

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

Цель:

Пользователь подпишется на план, который либо бесплатен навсегда, либо на 14-дневную пробную версию. При первоначальной регистрации в зависимости от плана к информации об учетной записи пользователя должно быть добавлено определенное количество кредитов (на самом деле это не так, поскольку у меня есть другой способ отслеживания, а просто принять учетную запись пользователя). Мне нужно, чтобы количество кредитов клиента увеличилось на сумму, которую диктует его план при продлении подписки.

Куча:

  • Node.js

  • Express.js

  • MongoDB

  • Полоса

Текущие мысли о том, как это сделать:

В Stripe есть разные веб-перехватчики, один из которых — invoice.payment_succeeded, для которого я могу добавить конечную точку веб-перехватчика, чтобы они присылали мне уведомления об успешном платеже (согласно Stripe: Occurs whenever an invoice payment attempt succeeds).

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

Кажется ли это хорошим решением для получения того, что я хочу, или есть лучший способ сделать это?

Стоит ли изучать 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 называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
668
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я бы предложил использовать событие invoice.paid, чтобы указать, когда счет-фактура перемещается в status=paid, как более простой сигнал, но в целом ваш подход соответствует тому, что я собирался порекомендовать:

  1. Отслеживайте этот кредит/баланс в своей собственной системе
  2. Назначение подходящих кредитов на тарифный план
  3. Слушайте веб-перехватчики счетов и добавляйте правильную сумму кредита к правильному балансу счета.
  4. Уменьшайте кредитный баланс по мере того, как ваш пользователь потребляет услуги.
  5. При необходимости инициируйте досрочное продление или разовые платежи для пополнения баланса, если он был исчерпан до продления.

Похоже, разница между вебхуком, который я сказал, и тем, что вы сделали, заключается в том, invoice is marked as paid out-of-band, имеет ли это значение и где это произойдет? Что касается остальной части того, что вы сказали, я думаю, что это хорошо согласуется с тем, что я имел в виду в качестве конечной цели, а также с моим приблизительным планом.

joshk132 19.12.2020 00:25

«Происходит всякий раз, когда попытка оплаты счета-фактуры успешна или счет-фактура помечен как оплаченный вне диапазона». Он включает в себя оба :) (в случае успешного платежа будут пропущены оплаченные счета-фактуры OOB)

Nolan H 19.12.2020 04:54

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