Техническое задание: Интеграция платной подписки в Telegram-бота

Цель проекта

Доработать существующего Telegram-бота, написанного на Python, реализовав полноценную систему платной подписки с функцией автоматического продления (автосписания). Особое внимание уделить сценарию отмены подписки с поэтапным предложением скидок для удержания пользователя.

Основные задачи

  • Подключить и настроить работу с платежной системой (активирована, но требует интеграции).
  • Реализовать механизм рекуррентных платежей (автопродление подписки) для пользователей.
  • Исправить существующие ошибки, из-за которых подписка не продляется, несмотря на настройки.
  • Разработать корректный и оттестированный сценарий отмены подписки.

Детальное описание сценария отмены подписки

Шаг 1: Инициация отмены

При нажатии пользователем кнопки "Отменить подписку" бот должен вывести сообщение:

Текст бота: "Вы уверены, что хотите отменить подписку? Мы можем предложить вам скидку - 390 рублей в месяц вместо 490. Оставить подписку со скидкой?"

Кнопки: "✅ Да, оставить со скидкой 390 ₽" / "❌ Нет, продолжить отмену"

Шаг 2: Второе предложение (если пользователь выбрал "Нет")

Текст бота: "Мы можем сделать ещё лучше - всего 250 рублей в месяц, чтобы вы продолжили получать индивидуальные планы питания, напоминания и авторские рецепты. Оставить подписку за 250 ₽?"

Кнопки: "✅ Да, оставить за 250 ₽" / "❌ Всё равно отменить"

Шаг 3: Финальное решение (если пользователь снова выбирает отмену)

Текст бота: "Хорошо, подписка отменена. Вы всегда можете вернуться, когда будете готовы."
При этом функция автопродления должна быть деактивирована.

Важное требование к платежам

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

Критерии приемки

  • Платная подписка с автопродлением работает стабильно.
  • Сценарий отмены с предложением скидок реализован в точности, как описано.
  • Изменение стоимости подписки (на 390 или 250 ₽) корректно применяется для всех будущих рекуррентных платежей.
  • Все состояния бота (активная подписка, отмена, изменение тарифа) обрабатываются без ошибок.
  • Проведено полное тестирование всех возможных сценариев и путей пользователя.

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