Robokassa GS символ — ключ к успешной передаче кода маркировки
При работе с маркированными товарами в системе «Честный ЗНАК» критически важен символ GS (Group Separator, ASCII 29, 0x1D). Он разделяет поля в коде DataMatrix, включая криптохвост, без которого платёжный шлюз Robokassa не может корректно обработать чек.
Однако на практике многие сканеры по умолчанию работают в режиме HID (как клавиатура) и не передают символ GS — вместо него вводится пробел, табуляция или символ вообще пропадает. Это приводит к ошибкам:
«Неверный формат кода маркировки»
«Криптохвост недействителен»
«Не удалось проверить подпись»
Решение: Перевести сканер в COM-режим (виртуальный последовательный порт) и использовать LKS.exe
Почему это работает?
Когда сканер работает в HID-режиме, он эмулирует нажатия клавиш. Управляющие символы, такие как GS, не вводятся как есть — большинство операционных систем и браузеров их игнорируют или фильтруют.
Но при переводе сканера в COM-режим (через USB-COM или виртуальный COM-порт), данные передаются напрямую в бинарном виде, включая все управляющие символы, в том числе GS (0x1D).
Как настроить: пошаговая инструкция
1. Переведите сканер в COM-режим
Большинство промышленных сканеров (Zebra, Honeywell, Datalogic, CipherLab) поддерживают режим виртуального COM-порта. Чтобы включить его:
-
Отсканируйте настройочный штрих-код из инструкции сканера (ищите «Enable Virtual COM Port» или «USB-COM Mode»).
-
Или используйте конфигурационное ПО (например, Zebra Setup Utilities).
-
После перезагрузки сканера он будет появляться в системе как COM-порт (например,
COM4).
2. Запустите LKS.exe — драйвер-перехватчик данных
LKS.exe — это специализированное ПО (часто используется в российских кассовых системах), которое:
-
Подключается к COM-порту сканера.
-
Считывает сырые данные, включая символ GS.
-
Передаёт строку в нужном формате в активное поле ввода (например, в браузер, где открыта панель Robokassa).
-
Корректно вставляет GS как управляющий символ, не заменяя его.
Особый акцент: LKS.exe умеет сохранять структуру GS1 DataMatrix, включая
\x1D, и вставлять её в поле ввода как есть — это критически важно для Robokassa.
3. Настройте передачу в Robokassa
Убедитесь, что:
-
Поле ввода кода маркировки в интерфейсе Robokassa принимает управляющие символы.
-
Данные передаются в JSON с экранированием
\u001d:
"marking_code": "010460043993125621JgXJ5.T>lFqX\u001d91EE06\u001d92dGVzdA=="
-
Ваша система не фильтрует символы при логировании или валидации.
Почему LKS.exe — лучшее решение для браузера?
| Проблема в HID-режиме | Решение через LKS.exe + COM |
|---|---|
| GS пропадает или заменяется | LKS передаёт GS как 0x1D |
| Криптохвост не читается | Структура кода сохраняется полностью |
| Ошибки валидации в Robokassa | Данные приходят в правильном формате |
| Невозможно тестировать в браузере | LKS вставляет данные в любое поле |
Проверка: как убедиться, что всё работает?
-
Просканируйте тестовый код маркировки.
-
Откройте инструменты разработчика в браузере (F12).
-
В поле ввода проверьте, пришёл ли символ GS — он может отображаться как
␟или не отображаться вовсе, но в hex-дампе должен быть байт1D. -
Отправьте чек — ошибка должна исчезнуть.
Заключение: Robokassa + GS символ = COM-режим + LKS.exe
Если вы сталкиваетесь с проблемой передачи символа GS в Robokassa, единственное надёжное решение — это:
Перевести сканер в COM-режим
Использовать LKS.exe как драйвер-перехватчик
Обеспечить передачу сырых данных с символом GS (0x1D) напрямую в браузер
Такой подход гарантирует, что код маркировки будет корректно распознан, криптохвост проверен, а чек в Robokassa отправлен без ошибок.
#RobokassaGSсимвол #СимволGS #МаркировкаТоваров #ЧестныйЗНАК #LKSexe #COMрежим #СканерМаркировки #RobokassaОшибка #Криптохвост #DataMatrix #РешениеПроблемы