Описание проекта
Конкретно система должна поддерживать несколько тарифов и уровней (месячные и годовые), бесплатные триалы с автоматической конвертацией в платную подписку, а также учёт по использованию для тенантов, вышедших за включённую квоту. При апгрейде в середине цикла нужна корректная пропорция — и кредит за неиспользованную часть старого тарифа, и списание за новый. Неуспешные списания должны запускать настраиваемую последовательность дуннинга с повторными попытками и напоминаниями до приостановки подписки, а каждое биллинговое событие обязано формировать понятный счёт со строками, налогами и применённым циклом. Всё строго изолировано по тенанту: ни один аккаунт не должен видеть данные другого.
Предложите, пожалуйста, ясную модель данных и интеграцию с платёжным провайдером на ваш выбор для списаний по картам и вебхуков. Для нас важны идемпотентная обработка колбэков провайдера, аудируемый реестр всех списаний и кредитов и админ-инструменты для просмотра и правки подписки тенанта. В отклике напишите, как вы раньше делали пропорцию и дуннинг.
— Тарифы и уровни с месячным/годовым циклом и апгрейдом в середине цикла
— Учёт по использованию с включёнными квотами и списанием за перерасход
— Пропорция при апгрейде, даунгрейде и изменении числа мест
— Бесплатные триалы с автоматической конвертацией в оплату
— Дуннинг: повторы, напоминания и приостановка при неуспешной оплате
— Счета со строками и налогами плюс реестр по каждому тенанту
— Строгая изоляция тенантов и идемпотентные платёжные вебхуки