Инструкция по обработке ответов от КОМТЕТ Сканер маркировки
КОМТЕТ Сканер марикровки возвращает ответ в формате Base64. Перед дальнейшей обработкой полученную строку необходимо декодировать — так получится JSON-структура, из которой можно извлечь данные для заполнения тегов кассового чека (1265).
Для преобразования закодированной строки в читаемый JSON-формат можно использовать любой доступный инструмент:
- Онлайн-сервисы: https://base64.ru/, https://www.base64decode.org/
- Средства разработки: встроенные функции языков программирования (base64.b64decode() в Python, atob() в JavaScript)
Декодирование ответов для разных режимов работы сканера
В зависимости от настроек и режима проверки, декодированный ответ может иметь три варианта структуры.
Вариант 1. Онлайн-проверка КМ
Возвращается при проверке кода маркировки:
- с помощью токена ГИС МТ;
- через ТС ПИоТ в онлайн-режиме.
Пример закодированного ответа:
eyJjb2RlIjoiTURFd05EWXdOekF4TURNMU1ESTBOakl4Tld0U1pFY3RNU1ZYS0ZWdGJoMDVNMlJIVm5vPSIsInJlcUlkIjoiZjJlOWE3NzctNmNmMi04YmEzLTg2NGEtYjg3MDFkMDE4NzliIiwicmVxVGltZXN0YW1wIjoxNzgwOTI2MTAxNzc3fQ==
Декодированный JSON:
{
"code":"MDEwNDYwNzAxMDM1MDI0NjIxNWtSZEctMSVXKFVtbh05M2RHVno=",
"reqId":"f2e9a777-6cf2-8ba3-864a-b8701d01879b",
"reqTimestamp":1780926101777
}
Вариант 2. Офлайн-проверка КМ через локальный модуль ЧЗ
Возвращается при проверке кода маркировки через ТС ПИоТ с использованием локального модуля ЧЗ.
Пример закодированного ответа:
eyJjb2RlIjoiTURFd05EWXdOekF4TURNMU1ESTBOakl4Tld0U1pFY3RNU1ZYS0ZWdGJoMDVNMlJIVm5vPSIsInJlcUlkIjoiZjJlOWE3NzctNmNmMi04YmEzLTg2NGEtYjg3MDFkMDE4NzliIiwicmVxVGltZXN0YW1wIjoxNzgwOTI2MTAxNzc3LCJ2ZXJzaW9uIjoiMDE5ZTcyZjUtZDFmMC03OTdiLTkxZjUtNjM2NGNhYTRjOWMwIiwiaW5zdCI6IjAxOWU2ZWE5LTJlNjQtNzQ0Mi05OTkyLWRiNzEzZWQ4NzY4MCJ9
Декодированный JSON:
{
"code":"MDEwNDYwNzAxMDM1MDI0NjIxNWtSZEctMSVXKFVtbh05M2RHVno=",
"reqId":"f2e9a777-6cf2-8ba3-864a-b8701d01879b",
"reqTimestamp":1780926101777,
"version":"019e72f5-d1f0-797b-91f5-6364caa4c9c0",
"inst":"019e6ea9-2e64-7442-9992-db713ed87680"
}
Вариант 3. Без проверки КМ или аварийный режим
Возвращается в двух случаях:
- в настройках сканера указан способ проверки Не проверять;
- ТС ПИоТ на момент проверки находится в состоянии Аварийный режим.
Пример закодированного ответа:
eyJjb2RlIjoiTURFd05EWXdOekF4TURNMU1ESTBOakl4Tld0U1pFY3RNU1ZYS0ZWdGJoMDVNMlJIVm5vPSJ9
Декодированный JSON:
{"code":"MDEwNDYwNzAxMDM1MDI0NjIxNWtSZEctMSVXKFVtbh05M2RHVno="}
Формирование чека (заполнение тега 1265)
При формировании чека в списке позиций необходимо заполнить параметр sectoral_item_props декодированными данными, полученными от сканера. Реквизит value «значение отраслевого реквизита» (тег 1265) должен состоять из элементов данных и снабжаться уникальными префиксами-идентификаторами. Параметр value формируется как строка, состоящая из пар Ключ=Значение, объединённых символом &.
Сформированный тег 1265 передается в составе блока sectoral_item_props в данные товарной позиции при регистрации чека. В API КОМТЕТ Касса v2 данный тег служит для заполнения отраслевых реквизитов предмета расчета, а именно в указании информации о результатах проверки кода маркировки. Указанный тег может использоваться как при интеграции с API КОМТЕТ Касса, так и с любыми иными сервисами формирования фискальных чеков, поддерживающими передачу отраслевых реквизитов.
Правила формирования значений для тега 1265:
| Ключ | Источник | Обязательность | Описание |
| UUID | reqId из ответа сканера |
Всегда | Уникальный идентификатор запроса |
| Time | reqTimestamp из ответа сканера |
Всегда | Дата и время формирования запроса |
| Inst | inst из ответа сканера |
Только при офлайн-проверке |
Идентификатор экземпляра ПО «Локальный модуль «Честный ЗНАК» |
| Ver | version из ответа сканера |
Только при офлайн-проверке | Версия базы «черного списка», на которой выполнялась проверка КИ |
value: UUID=reqId&Time=reqTimestamp&Inst=inst&Ver=version
Пример структуры тега при онлайн-проверке.
В ответе сканера присутствуют только reqId и reqTimestamp. Параметры inst и version отсутствуют.
{
"federal_id":"030"
"date":"21.11.2023"
"number":"1944"
"value":"UUID=f2e9a777-6cf2-8ba3-864a-b8701d01879b&Time=1780926101777"
}
Соответствие полей:
- UUID = reqID (f2e9a777-6cf2-8ba3-864a-b8701d01879b)
- Time = reqTimestamp (1780926101777)
Пример структуры тега при офлайн-проверке через локальный модуль ЧЗ.
В ответе сканера присутствуют все параметры: reqId, reqTimestamp, inst, version.
{
"federal_id": "030"
"date": "21.11.2023"
"number": "1944"
"value":"UUID=f2e9a777-6cf2-8ba3-864a-b8701d01879b&Time=1780926101777&Inst=019e6ea9-2e64-7442-9992-db713ed87680&Ver=019e72f5-d1f0-797b-91f5-6364caa4c9c0"
}
Соответствие полей:
- UUID = reqID (f2e9a777-6cf2-8ba3-864a-b8701d01879b)
- Time = reqTimestamp (1780926101777)
- Inst = inst (019e6ea9-2e64-7442-9992-db713ed87680)
- Ver = version (019e72f5-d1f0-797b-91f5-6364caa4c9c0)