Как запустить интернет-магазин внутри Telegram-бота
Практика3 минРедакция Innovialabs
Коротко
Магазин в боте — это каталог из категорий и карточек, корзина в базе данных, короткое оформление, оплата через Telegram Payments или ссылку платежной системы и уведомления о статусах; когда товаров много и нужны фильтры, витрину переносят в Mini App.
Короткий ответ
Интернет-магазин в Telegram-боте состоит из пяти частей:
- Каталог: категории, подкатегории и карточки товаров с фото, ценой и кнопкой «В корзину».
- Корзина, которая хранится на сервере, а не в переписке.
- Оформление заказа: контакт, адрес или самовывоз, способ оплаты — в несколько шагов.
- Оплата: встроенные платежи Telegram, ссылка на платежную систему или оплата при получении.
- Статусы заказа, о которых бот сам пишет покупателю.
Пока товаров немного и выбор простой, все это удобно делать кнопками в чате. Когда нужен поиск, фильтры и сравнение, витрину переносят в Mini App, а бот остается для уведомлений.
Каталог: как не утопить покупателя в кнопках
- Делайте не больше двух уровней вложенности: категория → товар. Глубокое «меню в меню» быстро теряется.
- Показывайте товары по одной карточке с кнопками «‹ Назад» и «Вперед ›» или списком с пагинацией.
- Редактируйте одно сообщение при листании вместо отправки новых, чтобы чат не засорялся.
- В кнопках передавайте короткие идентификаторы, а не названия: данные inline-кнопки (callback_data) ограничены 64 байтами.
- Храните фото в Telegram по file_id после первой загрузки — так карточки открываются быстрее.
Корзина и оформление заказа
Корзину храните в базе данных по ID пользователя. Тогда она переживет перезапуск бота, и вы сможете напомнить о брошенной корзине.
Оформление держите коротким:
- Телефон — через кнопку «Поделиться контактом», без ручного ввода.
- Доставка — выбор кнопками: курьер, самовывоз, пункт выдачи. Адрес — текстом или геопозицией.
- Проверка заказа — итоговое сообщение с составом, суммой, доставкой и кнопками «Подтвердить» и «Изменить».
Перед оплатой перепроверяйте наличие и цену на сервере: пока человек выбирал, товар мог закончиться.
Оплата: три варианта
| Способ | Как работает | Когда подходит |
|---|---|---|
| Telegram Payments | Бот отправляет счет (invoice), оплата проходит в окне Telegram через подключенного провайдера | Физические товары, если для вашей страны и валюты есть провайдер в BotFather |
| Telegram Stars | Счет во внутренней валюте Telegram | Цифровые товары и услуги внутри Telegram — для них Telegram требует именно Stars |
| Ссылка платежной системы | Бот присылает ссылку на оплату у локального провайдера, результат приходит на ваш сервер | Когда нужного провайдера нет в Telegram Payments |
Во встроенных платежах важен порядок: после нажатия «Оплатить» бот получает pre_checkout_query и должен быстро подтвердить или отклонить его — это последний момент, чтобы проверить остаток. Заказ считается оплаченным только после сообщения successful_payment. Актуальные правила — в документации Telegram Payments.
Статусы заказа и уведомления
Задайте понятную цепочку статусов и пишите покупателю на каждом переходе:
- Новый → Оплачен (или «Ожидает оплаты при получении»)
- Собирается → Передан в доставку → Доставлен
- Отменен — с причиной и информацией о возврате
Менеджерам удобно получать новые заказы в отдельный рабочий чат с кнопками смены статуса. Если у вас уже есть CRM или учетная система, бот должен писать заказы туда, а не вести вторую базу.
Когда переходить на Mini App
Признаки, что чат-меню уже мешает:
- товаров столько, что без поиска и фильтров не обойтись;
- у товара есть варианты: размер, цвет, комплектация;
- покупателю нужно сравнивать позиции или видеть много фото;
- корзина и оформление превратились в длинную цепочку сообщений.
Mini App открывается из кнопки меню бота и выглядит как мобильный сайт внутри Telegram. Бот при этом не исчезает: он присылает подтверждения, статусы и напоминания.
Частые ошибки
- Хранить корзину только в состоянии диалога — она пропадает после перезапуска.
- Считать заказ оплаченным по нажатию кнопки, а не по подтверждению платежа.
- Не давать человеку способа связаться с живым менеджером.
- Присылать каждую карточку новым сообщением и превращать чат в ленту.