Когда WebApp не отправляет корзину в бота, пользователь проходит самый важный сценарий внутри мини-приложения, но бот не получает результат и не может оформить заявку или заказ.

Для Telegram-магазина это прямой разрыв в продажах: витрина работает, товары выбираются, но заказ не доходит до администратора или CRM.

Коротко: нужно проверить Telegram.WebApp.sendData, формат JSON, обработчик web_app_data и создание заказа на backend.

Почему возникает проблема

Корзина не передается из-за ошибки JavaScript, слишком большого payload, некорректного JSON, отсутствия обработчика web_app_data, неверного webhook, потери состояния пользователя или того, что бот не отвечает после получения данных.

Что проверяю первым

  • вызывается ли Telegram.WebApp.sendData при отправке корзины
  • валиден ли JSON с товарами и суммой
  • приходит ли web_app_data в бот
  • создается ли заказ после получения данных
  • что происходит при пустой или большой корзине

Как проходит исправление

Я проверяю всю цепочку: кнопка отправки в WebApp, sendData, событие в боте, обработчик, сохранение заказа и ответ пользователю.

  • исправляю JS-отправку корзины
  • нормализую JSON и ограничения payload
  • чиню обработчик web_app_data в боте
  • связываю корзину с пользователем и заказом
  • добавляю сообщение подтверждения после отправки

Что подготовить

  • ссылку на WebApp
  • username бота
  • пример корзины
  • код обработчика web_app_data
  • лог бота при отправке

Какой результат нужен

После исправления WebApp должен передавать корзину в бот, бот должен создавать заказ и показывать пользователю понятное подтверждение.

Чего лучше не делать

Не храните критичные данные заказа только на стороне браузера. После отправки бот или backend должны сохранить заказ в надежном месте.

Вопросы и ответы

Почему маленькая корзина работает, а большая нет?

Возможно, payload слишком большой или JSON содержит лишние поля и картинки.

Можно ли отправлять корзину напрямую на backend?

Да, часто это надежнее: WebApp отправляет данные на сервер, а бот получает уже готовый заказ.

Почему бот молчит после отправки?

Обработчик мог получить данные, но не отправить пользователю ответ или упасть на создании заказа.

Нужно ли проверять initData?

Да, если backend принимает данные WebApp напрямую, initData нужна для проверки пользователя Telegram.

Нужна похожая задача?

Напишите в Telegram @rabotator_support или оставьте заявку на сайте. Коротко опишите проблему, приложите ссылку, скриншот или лог ошибки, и я подскажу, с чего безопасно начать исправление.

Итог

Корзина Telegram WebApp должна передаваться не только визуально, но и технически: sendData, обработчик, заказ и подтверждение должны работать вместе.