Telegram-бот для фискализации заказов через Бизнес.Ру Онлайн-Чеки

Владимир3 месяца в сервисе
Данные заказчика будут вам доступны после подачи заявки
24.02.2026

Сделать и настроить Telegram-бота, который:

  1. Получает в Telegram текст заказа (из внешней системы/оператора)

  2. Парсит текст и формирует структуру заказа

  3. Показывает превью чека и кнопку подтверждения

  4. После подтверждения отправляет чек в Бизнес.Ру Online-check API

  5. Опрашивает статус выполнения и возвращает:

    • ссылку на электронный чек receipt_url (если есть)

    • фискальные реквизиты: fn_number, fiscal_document_number, fiscal_document_attribute

  6. Обрабатывает ошибки и пишет понятные сообщения в 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_TOKEN

    • BUSINESSRU_APP_ID

    • BUSINESSRU_SECRET

    • BUSINESSRU_CASHBOX_ID

    • AGENT_INN

    • PAYMENT_ADDRESS

    2.5 Маппинг поставщиков

    suppliers.json содержит словарь:

    Ключ = place_name (точно совпадает с первой строкой заказа)
    Значение:

    • supplier_name

    • supplier_inn

    • supplier_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_name

      • order_id

      • items[]

      • суммы и оплату

      • данные клиента

    Из suppliers.json

    По place_name получаем реквизиты поставщика для агентских товаров.

    Из .env

    • реквизиты интеграции и кассы

    • AGENT_INN, PAYMENT_ADDRESS


    5) Нефункциональные требования

    • Python 3.10+

    • requests

    • python-telegram-bot

    • простая установка через venv + requirements.txt

    • логирование запросов API (в консоль) без утечки секретов


      Ожидаем от вас персональные предложения по бюджету на эту задачу. Спасибо

Заявки фрилансеров