Telegram-бот для фискализации заказов через Бизнес.Ру Онлайн-Чеки
Сделать и настроить Telegram-бота, который:
Получает в Telegram текст заказа (из внешней системы/оператора)
Парсит текст и формирует структуру заказа
Показывает превью чека и кнопку подтверждения
После подтверждения отправляет чек в Бизнес.Ру Online-check API
Опрашивает статус выполнения и возвращает:
ссылку на электронный чек
receipt_url(если есть)фискальные реквизиты:
fn_number,fiscal_document_number,fiscal_document_attribute
Обрабатывает ошибки и пишет понятные сообщения в Telegram.
Что уже сделано:В проекте уже есть рабочие блоки:
2.1 Telegram-бот
Реализован на
python-telegram-botПринимает текстовые сообщения
Показывает inline-кнопки: “Пробить чек / Отмена”
Имеет in-memory очередь подтверждений
PENDING
2.2 Парсер заказа
parse_order.pyразбирает текст заказа:название заведения (первая строка)
номер заказа
order_idпо строкеНомер:данные гостя
Имя,Телефонтип оплаты
суммы: “Итого к оплате”, “Оплачено бонусами”, “Сумма доставки”
позиции из блока
Состав заказа:
2.3 Формирование payload для API
build_payload()строит JSON для командыprintCheckТовары → агентские, НДС не облагается, поставщик из
suppliers.jsonДоставка → услуга, НДС 5%, без агентских реквизитов
Оплата:
наличные/безнал по тексту оплаты
бонусы как
payed_prepay(аванс)
2.4 Конфигурация через .env
Есть готовые переменные:
TG_BOT_TOKENBUSINESSRU_APP_IDBUSINESSRU_SECRETBUSINESSRU_CASHBOX_IDAGENT_INNPAYMENT_ADDRESS
2.5 Маппинг поставщиков
suppliers.jsonсодержит словарь:Ключ =
place_name(точно совпадает с первой строкой заказа)
Значение:supplier_namesupplier_innsupplier_phone
Используется для агентских товаров.
3) Что нужно сделать
3.1 Настроить корректную авторизацию и подпись в API Бизнес.Ру
Сейчас запросы к API получают
403сinvalid app_id / invalid sign.Нужно:
Реализовать правильный алгоритм
signстрого по документации:сортировка параметров
JSON сериализация
urlencoding строки параметров
sign = MD5(params_string + secret)
Чётко определить и реализовать:
где передаётся
app_idдляPOST /Command(body/query/both)что именно участвует в
signдляPOST /Command
Добиться успешного ответа
POST /Commandсcommand_id
3.2 Поддержка /Token (если требуется)
Док говорит, что /Token deprecated, но он есть.
Нужно:
выяснить, требуется ли токен для работы конкретной интеграции
если требуется — реализовать получение и кэширование токена
3.3 Подтверждение, отправка, статус
Нужно довести до устойчивой работы:
Пользователь подтверждает чек → отправка
POST /CommandОжидание результата:
polling
GET /Command/{commandId}успешное завершение:
receipt_urlилиresult_msg = "ok"
Возврат пользователю в Telegram:
ссылка на чек (опционально)
3.4 Корректная обработка ошибок
Нужно:
выводить точный ответ API пользователю (без подмен)
различать:
ошибки авторизации/подписи
ошибки валидации чека (422/400)
сетевые/таймаут
4) Откуда берутся данные
Из сообщения Telegram
текст заказа приходит целиком (в формате, который сейчас парсится)
из него берём:
place_nameorder_iditems[]суммы и оплату
данные клиента
Из suppliers.json
По
place_nameполучаем реквизиты поставщика для агентских товаров.Из .env
реквизиты интеграции и кассы
AGENT_INN,PAYMENT_ADDRESS
5) Нефункциональные требования
Python 3.10+
requests
python-telegram-bot
простая установка через venv + requirements.txt
логирование запросов API (в консоль) без утечки секретов
Ожидаем от вас персональные предложения по бюджету на эту задачу. Спасибо
Заявки фрилансеров













