Клиент — региональный ISP (~8 000 абонентов). Личный кабинет на сайте — слабый mobile UX; 60% обращений в поддержку: «сколько на балансе», «какой тариф», «как оплатить». Абоненты активны в Telegram — канал провайдера 12K подписчиков.
Задача: Mini App ЛК — баланс, текущий тариф, расход трафика, история платежей, смена тарифа, пополнение через ЮKassa. Доступ по номеру договора + OTP или привязка при первом входе.
Реализация:
• Mini App: dashboard, график трафика, кнопка «Оплатить»;
• API к billing-системе провайдера: balance, tariff, payments, change_plan;
• OTP по SMS для привязки аккаунта; session в Telegram initData + JWT;
• оплата: invoice link, webhook → обновление баланса в реальном времени;
• FAQ и «сообщить о проблеме» → тикет в helpdesk;
• offline banner при недоступности billing API;
• админ: метрики MAU Mini App, топ запросов в поддержку.
Стек: React, Telegram WebApp SDK, FastAPI, REST billing API, ЮKassa, PostgreSQL, aiogram, Docker. Приёмка: 10 абонентских сценариев на staging billing.
Итог: обращений «баланс/тариф» −35%; оплата через Mini App — 28% всех пополнений. NDA: провайдер не публикуется.