Как подключить платежный терминал INPAS к 1С на операционной системе Linux

Системный администратор 1С v8.3 (Управляемые формы) 1С:Управление торговлей Торговля и дистрибуция
← На главную

Подключение торгового эквайринга в среде Linux часто становится серьезным испытанием для технических специалистов. Стандартное решение от компании INPAS — библиотека DualConnector — исторически разрабатывалось как COM-объект (библиотека dualconnector.dll), который предназначен исключительно для работы в ОС Windows. При переходе на Linux (например, Astra Linux, Ubuntu или РЕД ОС) системные администраторы сталкиваются с тем, что штатные средства от банка не запускаются, а поддержка вендора часто ограничивается предложением использовать Windows-стек.

В этой статье мы разберем, как обойти эти ограничения, какие существуют альтернативные способы интеграции терминалов INPAS с 1С и какие настройки необходимо выполнить на уровне операционной системы.

Почему стандартный DualConnector не работает в Linux

Прежде всего, проанализируем техническую причину проблемы. Модуль INPAS Dual Connector спроектирован для работы в режиме толстого или тонкого клиента 1С под управлением Windows XP, 7, 8 или 10. В архитектуре 1С под Linux механизм COM-соединений отсутствует. Попытки запустить установщик .msi через Wine часто приводят к нестабильной работе и ошибкам регистрации компонентов в реестре. Таким образом, нам необходимо искать решения, использующие технологию Native API или промежуточные сервисы (Middleware).

Решение 1: Использование драйвера «АТОЛ: Драйвер платежных систем»

Одним из самых стабильных способов подключения является использование платного драйвера от компании АТОЛ. Этот драйвер поддерживает протоколы обмена INPAS (SmartSale/UNIPOS) и имеет нативную реализацию для Linux (библиотеки формата .so).

Рассмотрим по шагам процесс настройки этого решения:

  1. Приобретение лицензии: Драйвер АТОЛ является коммерческим продуктом. Необходимо убедиться, что ваша версия поддерживает работу с протоколом INPAS.
  2. Установка библиотек: Установите пакет драйверов в систему. Обычно это делается через менеджер пакетов вашего дистрибутива или путем копирования файлов libfptr.so в системные директории.
  3. Настройка в 1С: В справочнике "Подключаемое оборудование" выберите тип "Эквайринговые терминалы" и укажите драйвер "АТОЛ: Драйвер платежных систем".
  4. Выбор протокола: В параметрах драйвера необходимо выбрать протокол Inpas SmartSale или Unipos. Именно эти протоколы используются в терминалах, поставляемых банком ВТБ.

Этот метод хорош тем, что он сертифицирован фирмой 1С и работает через стандартную Библиотеку Подключаемого Оборудования (БПО).

Решение 2: Использование ПО KkmServer (версия для Linux)

Если прямое подключение через драйвер 1С вызывает трудности, проанализируем вариант с использованием промежуточного сервера печати и эквайринга — KkmServer. Это кроссплатформенное ПО, которое запускается в Linux как демон (сервисная служба) и предоставляет HTTP API для взаимодействия с оборудованием.

Алгоритм настройки выглядит следующим образом:

  1. Скачайте и установите дистрибутив KkmServer для вашего дистрибутива Linux (доступны пакеты DEB и RPM).
  2. Запустите веб-интерфейс управления сервером (обычно доступен по адресу localhost:5893).
  3. В разделе "Настройка оборудования" добавьте новое устройство с типом "Эквайринговый терминал" и выберите протокол INPAS.
  4. В 1С подключитесь к этому серверу, используя драйвер "ККМ-Server: Эквайринговые терминалы (HTTP)".

Преимущество этого метода заключается в том, что 1С общается с оборудованием через обычные HTTP-запросы, что полностью снимает проблемы совместимости битовых версий (32/64 bit) и отсутствия COM-объектов.

Решение 3: Нативный клиент SmartSale от INPAS

Компания INPAS разработала специализированное ПО под названием SmartSale (или UNIPOS Terminal), которое имеет версию для Linux. В состав этого ПО входит библиотека libdc_client.so. Посмотрим на структуру такого решения:

Обычно банки предоставляют ссылку на закрытое хранилище (например, на базе ownCloud), где хранятся архивы с дистрибутивами. Если вам удалось получить доступ к такому архиву, процедура будет следующей:

  1. Разверните исполняемые файлы SmartSale в систему.
  2. Настройте конфигурационный файл terminal.xml или dc_client.xml, указав параметры связи с банком и порт подключения терминала.
  3. Для интеграции с 1С используйте Native API компоненту, которая поставляется в составе SmartSale. Она позволяет 1С вызывать методы оплаты и отмены напрямую, без использования Windows-прослоек.

Важный момент: Если архив защищен паролем, его следует запрашивать у официальной техподдержки INPAS или через вашего банковского менеджера, так как эти данные привязаны к конкретному контракту на обслуживание.

Техническая настройка портов в Linux

Независимо от выбранного программного метода, нам необходимо подготовить операционную систему к работе с USB-устройством. Терминалы INPAS при подключении к USB-порту обычно определяются как виртуальные COM-порты (устройства /dev/ttyACM0 или /dev/ttyUSB0).

Выясним, как обеспечить корректный доступ 1С к этим портам. По умолчанию обычный пользователь в Linux не имеет прав на запись в системные порты. Выполним следующие действия:

Добавим пользователя, под которым работает 1С (или текущего пользователя), в группу dialout (в некоторых дистрибутивах — uucp):

sudo usermod -a -G dialout $USER

После этого необходимо перезайти в систему. Также рекомендуется создать правило udev, чтобы права на устройство устанавливались автоматически при его подключении. Создайте файл /etc/udev/rules.d/99-inpas.rules с текстом:


KERNEL=="ttyACM*", MODE="0666", GROUP="dialout"
KERNEL=="ttyUSB*", MODE="0666", GROUP="dialout"

Это позволит драйверу беспрепятственно обмениваться данными с терминалом.

Настройка режима работы терминала

Иногда Linux не видит устройство из-за неправильного режима работы самого терминала. Рекомендуется перевести терминал в режим CDC (Virtual Serial Port). Это делается через инженерное меню оборудования (обычно вход осуществляется через кнопку "F" или специальную комбинацию клавиш). Если терминал работает в проприетарном режиме USB, драйверы Linux могут его не распознать.

Программирование взаимодействия (пример кода)

Если вы используете решение через HTTP-сервис (например, KkmServer), взаимодействие в 1С будет выглядеть примерно так. Рассмотрим пример функции инициализации оплаты:


Функция ВыполнитьОплатуНаТерминале(СуммаЧека)
    
    // Подготовка структуры запроса к Middleware
    Запрос = Новый Структура;
    Запрос.Вставить("Command", "Pay");
    Запрос.Вставить("Amount", СуммаЧека);
    Запрос.Вставить("TerminalType", "INPAS");
    
    // Сериализация в JSON
    ЗаписьJSON = Новый ЗаписьJSON;
    ЗаписьJSON.УстановитьСтроку();
    ЗаписатьJSON(ЗаписьJSON, Запрос);
    СтрокаЗапроса = ЗаписьJSON.Закрыть();
    
    // Отправка HTTP-запроса к локальному сервису
    HTTPСоединение = Новый HTTPСоединение("127.0.0.1", 5893);
    HTTPЗапрос = Новый HTTPЗапрос("/Execute");
    HTTPЗапрос.УстановитьТелоИзСтроки(СтрокаЗапроса);
    
    Попытка
        Ответ = HTTPСоединение.ОтправитьДляОбъекта(HTTPЗапрос);
        Результат = Ответ.ПолучитьТелоКакСтроку();
        // Разбор ответа терминала...
        Возврат Результат;
    Исключение
        Сообщить("Ошибка связи с платежным терминалом: " + ОписаниеОшибки());
        Возврат Неопределено;
    КонецПопытки;
    
КонецФункции

Использование подобных микросервисных подходов позволяет полностью абстрагироваться от операционной системы и использовать одни и те же механизмы 1С как в Windows, так и в Linux.

Итоги и рекомендации

Подведем итог нашему анализу. Для успешного подключения INPAS на Linux у вас есть три основных пути:

  1. Промышленный: Использование платного драйвера АТОЛ для платежных систем. Это требует финансовых затрат, но обеспечивает наиболее простую интеграцию через стандартную БПО.
  2. Универсальный: Использование KkmServer. Идеально подходит, если на рабочих местах используется микс разных ОС или если вы хотите избежать проблем с регистрацией Native-компонент в 1С.
  3. Вендорский: Поиск ПО SmartSale с нативными библиотеками .so. Требует плотной работы с техподдержкой банка ВТБ или INPAS для получения дистрибутивов и паролей к ним.

Помните: работа с эквайрингом на Linux требует внимательного отношения к правам доступа на файлы устройств в директории /dev/. Всегда начинайте диагностику с проверки прав доступа и видимости устройства через команду lsusb.

← На главную