Процесс оформления возврата алкогольной продукции через Универсальный транспортный модуль (УТМ) ЕГАИС часто вызывает затруднения у технических специалистов. Особенно часто проблемы возникают на этапе формирования правильной структуры XML-файла и при попытке прочитать ответ от сервера, который в консоли Windows часто выглядит как нечитаемый набор символов. В этой статье мы подробно разберем, как правильно составить запрос на возврат, отправить его с помощью утилиты curl и корректно интерпретировать результат.
Для начала проанализируем структуру документа, который необходимо отправить в УТМ. В системе ЕГАИС возврат в рознице оформляется через схему «Чеки». Основным отличием возврата от продажи в старых версиях протокола является использование отрицательного значения в поле цены. Рассмотрим пример корректно сформированного файла vozvrat.xml:
<?xml version="1.0" encoding="UTF-8"?>
<Cheque inn="XXXXXXXXX" kpp="XXXXXXXXX" datetime="0507181607" kassa="00106200708053" address="Адрес магазина" name="ООО Название организации" number="4346" shift="71">
<Bottle barcode="22N00000API84HY2F390U7K70118001008021SSMXHZFQ7VLTWIL6MNDA24VB9WQM1PY" ean="4680020410308" price="-390.0" />
</Cheque>
Разберем ключевые атрибуты тега Cheque:
Внутри тега Bottle крайне важно правильно указать barcode (акцизную марку) и price. Обратите внимание, что цена -390.0 со знаком «минус» сигнализирует системе о том, что это операция сторнирования (возврата).
Для взаимодействия с УТМ мы используем командную строку и утилиту curl. Команда для отправки файла выглядит следующим образом:
curl -F "xml_file=@vozvrat.xml" http://192.168.0.12:8080/xml
Здесь параметр -F указывает на отправку данных формы, где xml_file — имя параметра, ожидаемого УТМ, а префикс @ перед именем файла сообщает curl, что нужно считать содержимое файла с диска.
Часто после выполнения команды в консоли Windows вместо понятного ответа (например, об успешной регистрации или тексте ошибки) отображаются «кракозябры». Это происходит из-за несовпадения кодировки UTF-8, в которой отвечает УТМ, и кодировки OEM (CP866), используемой в командной строке Windows по умолчанию. Выясним, как это исправить.
Способ 1: Перенаправление вывода в файл
Самый простой и надежный способ — сохранить ответ сервера в текстовый файл и открыть его редактором, поддерживающим UTF-8 (например, Notepad++). Модернизируем нашу команду:
curl -F "xml_file=@vozvrat.xml" http://192.168.0.12:8080/xml > result.txt
После выполнения команды откройте файл result.txt. Вы увидите XML-ответ от УТМ, в котором будет содержаться либо идентификатор принятого чека, либо детальное описание ошибки на русском языке.
Способ 2: Смена кодовой страницы консоли
Если вы хотите видеть текст ошибки прямо в окне командной строки, перед запуском curl выполните команду смены кодировки на UTF-8:
chcp 65001
После этого консоль начнет корректно отображать кириллицу в кодировке UTF-8, и вы сможете прочитать ответ системы без дополнительных манипуляций с файлами.
Рассмотрим дополнительные факторы, которые могут влиять на успешность возврата, основываясь на развитии системы ЕГАИС:
http://localhost:8080). Это позволяет избежать «извращений» с командной строкой и визуально контролировать процесс загрузки.curl все равно не дает ясности, проанализируйте лог-файлы самого транспортного модуля. Они находятся в директории установки УТМ, в папке transporter/logs/transport_info.log. Там фиксируются все входящие запросы и детальные причины их отклонения.Использование вышеописанных методов позволит вам не только успешно отправлять чеки возврата, но и оперативно диагностировать ошибки взаимодействия с ЕГАИС, что критически важно для бесперебойной работы розничной точки.