Telegram Mini App для кафе и магазина: как устроено и зачем
Разбираю, что такое мини-приложение в Telegram, как оно технически устроено, что даёт кафе и магазину и о чём стоит подумать в 2026 году, когда Telegram в России работает с перебоями.
Содержание
Mini App — это веб-приложение, которое открывается прямо внутри Telegram. Гость кафе нажимает кнопку в боте, видит меню с фотографиями, собирает заказ и выбирает время самовывоза. Ему не нужно ставить приложение, регистрироваться и вводить телефон — он уже в мессенджере.
Для бизнеса это способ сделать «своё приложение» без публикации в магазинах приложений. Ниже — как это устроено, зачем это кафе и магазину и где подводные камни.
Чем Mini App отличается от бота и сайта
Обычный бот общается сообщениями и кнопками. Для записи или анкеты этого достаточно, но меню на 40 позиций с модификаторами в чате превращается в бесконечную ленту.
Сайт даёт полную свободу, но гостя туда нужно привести, а потом ещё и вернуть: заказ, статус, повторная покупка — всё через почту или SMS.
Mini App — это сайт, который живёт внутри бота. Интерфейс как у приложения, а уведомления, статус заказа и повторные покупки — через чат с ботом, который у гостя уже есть.
Как Mini App открывается
Telegram поддерживает несколько способов запуска. Для кафе и магазина полезны четыре:
- кнопка меню в чате с ботом — постоянная точка входа, например «Меню»;
- кнопка под сообщением — «Открыть каталог» в приветствии или в рассылке;
- главное мини-приложение — кнопка запуска в профиле бота и ссылка вида
https://t.me/имя_бота?startapp; - прямая ссылка вида
https://t.me/имя_бота/имя_приложения— её удобно ставить в QR-код на столике или кассе.
В ссылке можно передать параметр startapp, например номер стола или точки. Он придёт в мини-приложение, и оно сразу откроется в нужном состоянии.
Как это устроено технически
Фронтенд
Это обычная веб-страница на HTML, CSS и JavaScript — на чистом JS или на любом фреймворке. Чтобы связать её с Telegram, подключают скрипт telegram-web-app.js. После этого доступен объект Telegram.WebApp, через который приложение:
- получает тему пользователя — светлую или тёмную и цвета — и подстраивается под неё;
- управляет нативными кнопками: главной кнопкой внизу экрана (
MainButton) и кнопкой «Назад» в шапке; - включает вибрацию при нажатиях (
HapticFeedback); - учитывает безопасные зоны экрана в полноэкранном режиме;
- получает данные пользователя в поле
initData.
Бэкенд и проверка initData
Главное правило: данным из браузера доверять нельзя. В initData приходят идентификатор пользователя, имя и подпись. Сервер обязан проверить подпись, прежде чем принимать заказ. Документация Telegram описывает алгоритм: из токена бота и строки WebAppData получают секретный ключ, затем считают HMAC-SHA-256 от отсортированных полей и сравнивают с переданным hash.
На Python это выглядит примерно так:
import hmac, hashlib, time
from urllib.parse import parse_qsl
def check_init_data(init_data: str, bot_token: str, max_age: int = 3600) -> dict | None:
fields = dict(parse_qsl(init_data, keep_blank_values=True))
received_hash = fields.pop("hash", "")
data_check_string = "\n".join(f"{k}={v}" for k, v in sorted(fields.items()))
secret = hmac.new(b"WebAppData", bot_token.encode(), hashlib.sha256).digest()
calc = hmac.new(secret, data_check_string.encode(), hashlib.sha256).hexdigest()
if not hmac.compare_digest(calc, received_hash):
return None # подпись не сошлась — запрос не от Telegram
if time.time() - int(fields.get("auth_date", 0)) > max_age:
return None # данные устарели
return fields
Второе правило вытекает из первого: цену считает сервер. Фронтенд присылает только состав заказа — позиции и опции, — а сумму бэкенд считает по своему прайсу. Иначе кто-нибудь обязательно попробует купить капучино за рубль.
Связь с ботом
После оформления заказа бэкенд через Bot API отправляет гостю сообщение: «Заказ №… принят». Дальше бот присылает статусы — «готовится», «готов» — а сотрудникам уходит уведомление в рабочий чат с кнопками смены статуса. Мини-приложение и бот — две половины одной системы.
Оплата
Здесь два разных случая, и путать их нельзя.
- Физические товары и услуги — кофе, еда, товары с доставкой — оплачиваются через сторонних платёжных провайдеров. В России это, например, ЮKassa: провайдер подключается через @BotFather, бот выставляет счёт, а мини-приложение может открыть его методом
openInvoice. - Цифровые товары и услуги внутри Telegram — подписки, внутриигровые предметы, доступ к контенту — по правилам Telegram оплачиваются только в Telegram Stars.
Для кафе актуален первый вариант. Можно обойтись и без оплаты в приложении — «оплата при получении» для самовывоза часто проще и для гостя, и для кассы. И отдельно не забудьте про онлайн-кассу и чеки по 54-ФЗ, если деньги принимаются онлайн: это вопрос к вашей кассе и платёжному сервису, а не к Telegram.
Зачем это кафе и магазину
Предзаказ и самовывоз. Гость заказывает по дороге и выбирает время, бариста видит заказ заранее. Меньше очереди у кассы в часы пик.
Меню, которое легко обновлять. Стоп-лист, сезонные напитки, цены — всё меняется в админке без перепечатки и правок в агрегаторах.
Своя программа лояльности. Карта «каждый шестой кофе бесплатно» живёт в том же приложении, а не в отдельной картонке, которая теряется.
Повторные покупки. У гостя остаётся чат с ботом. Через него можно напомнить о себе — аккуратно и по делу, а не спамом.
Свой канал продаж. В отличие от агрегаторов, база клиентов и история заказов остаются у вас.
Чего Mini App не даст сам по себе: трафика. Его всё равно нужно приводить — QR-кодами в зале, ссылкой в соцсетях, на сайте и в картах.
Что учесть в 2026 году
Это нельзя обойти стороной. С августа 2025 года Роскомнадзор ограничивает звонки в Telegram, а с февраля 2026 года объявил о «последовательных ограничениях» работы мессенджера. Пользователи по всей стране жалуются на медленную загрузку медиа и перебои с сообщениями. На момент публикации, в начале ноября 2026 года, официального решения о полной блокировке с конкретной датой нет, но работа мессенджера в России нестабильна.
Что это значит для бизнеса: строить продажи только на Telegram рискованно. Хорошая новость в том, что Mini App — это веб-приложение, и его можно сделать независимым от одной платформы:
- общий бэкенд — меню, заказы, лояльность и админка не привязаны к мессенджеру;
- тот же интерфейс в MAX. В MAX тоже есть мини-приложения, которые открываются из бота кнопкой
open_app. Отличаются способ запуска и проверка данных пользователя, а меню, корзина и заказы остаются общими; - версия в обычном браузере — та же страница по прямой ссылке для гостей без мессенджера.
Как подключить бота в MAX, я подробно разобрал в отдельной статье — «Бот в MAX для бизнеса».
Как это выглядит вживую
Я сделал демо-проект «Зерно и Пар» — Telegram-бота кофейни с мини-приложением. Кофейня вымышлена, оплата ненастоящая, заказ никто не готовит, но всё работает, и заказ можно оформить самому:
- меню из 16 позиций в четырёх разделах, светлая и тёмная тема;
- настройка напитка — объём, молоко, сиропы, дополнительный шот — с пересчётом цены на лету;
- корзина, слоты самовывоза каждые 10 минут и комментарий к заказу;
- нативные кнопки Telegram и вибрация;
- проверка подписи
initDataна сервере, цену считает бэкенд; - статусы заказа в чат, чек заказа в PDF и карта лояльности.
Мини-приложение открывается и в обычном браузере — именно так, как описано выше: интерфейс один, а точки входа разные.
Частые вопросы
Сколько стоит Mini App?
Зависит от объёма. По открытым прайсам студий и разработчиков простое мини-приложение начинается примерно от 100 тысяч рублей, а сложные проекты с каталогом на сотни товаров, личным кабинетом и интеграциями с учётной системой стоят в разы дороже. Подробнее о том, что влияет на цену, — в статье про стоимость ботов: логика расчёта для Telegram и MAX одна и та же.
Нужно ли гостю что-то устанавливать?
Нет. Mini App открывается внутри Telegram, как вкладка. Гостю нужен только сам мессенджер, а для браузерной версии — даже он не нужен.
Можно ли подключить кассу или учётную систему?
Да, через бэкенд. Заказ из мини-приложения можно передавать в учётную систему, CRM или таблицу так же, как заказы с сайта. Всё зависит от того, есть ли у системы API.
Чем Mini App лучше обычного сайта с корзиной?
Не лучше, а удобнее в одном конкретном месте: гость уже в мессенджере, и связь с ним после заказа остаётся. Статус, чек, напоминание и повторный заказ идут через чат. Если ваши клиенты в мессенджерах не сидят, хороший мобильный сайт может оказаться проще и дешевле.
С чего начать
- Опишите, что гость должен сделать за минуту: выбрать, настроить, указать время, подтвердить.
- Решите, где хранится меню и кто его обновляет.
- Определитесь с оплатой: онлайн через провайдера или при получении.
- Продумайте уведомления для персонала: куда приходит заказ и как меняется статус.
- Сразу закладывайте второй канал — MAX или браузерную версию, — чтобы не зависеть от одной платформы.
Если хотите обсудить мини-приложение для своего кафе или магазина, напишите мне — покажу демо и прикину объём работ под вашу задачу.
Посмотреть вживую
Мои демо-проекты по теме статьи. Они работают, их можно открыть и потрогать. Это демонстрации, а не работы для клиентов.