Вариант использования следующий:
- Клиент подписывается на наше приложение в качестве ежемесячной подписки.
- Они выбирают одну или несколько функций для подписки и нажимают«Купить», что дает им все функции.
- Каждая функция имеет различную цену и продолжительность (срок). Например, клиент может подписаться на 3 месяца функции A и 1 месяц функции B.
- Функции могут быть добавлены и удалены из подписки в любое время. Если они подписались на функцию А в течение 3 месяцев, то «отмена» функции таким способом на самом деле не должна изменять подписку до тех пор, пока не пройдет 3 месяца.
- Подписка и функции автоматического продления до отмены.
- Все списывается ежемесячно с одним счетом.
Насколько я вижу, Stripe не имеет хорошей поддержки для этого варианта использования. Мы можем сопоставить каждый объект с объектом плана Stripe, и подписка может ссылаться на несколько планов, но планы Stripe не имеют продолжительности. Многоплановые подписки поддерживают только элементы с одинаковым циклом выставления счетов.
Так что нам бы пришлось управлять этим самостоятельно. Мы будем моделировать функции как продукты с одним планом каждый, и мы обновим объект подписки Stripe списком элементов подписки. Мы должны были бы отслеживать жизненный цикл функций, независимо от состояния Stripe. Например, если пользователь подписался на 3 месяца функции A, а затем «отменяет» функцию через 1 месяц, мы не можем обновить подписку до тех пор, пока не пройдет еще 2 месяца, чтобы отразить текущий выбор функций. Это кажется сложным и ломким.
Есть ли другие варианты? Или конкуренты Stripe, которые могут справиться с этим? Я вижу, что у Chargebee есть концепция, называемая «надстройками», которая отображает наш вариант использования, но у них есть ограничение на циклы выставления счетов, которое у нас не работает.