Как интегрировать эквайринговые терминалы ИНПАС (UNIPOS) в 1С на операционной системе Linux?

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

При переходе на операционные системы семейства Linux (будь то дистрибутивы на базе RPM, такие как RedOS или AlmaLinux, или на базе DEB, включая особенности настройки Astra Linux с установкой необходимых зависимостей) системные администраторы и разработчики 1С часто сталкиваются с проблемой подключения эквайринга. Одной из самых сложных задач является запуск терминалов Verifone или Pax под управлением ПО INPAS (UNIPOS). Рассмотрим подробнее, почему стандартные механизмы 1С дают сбой и как реализовать рабочую схему интеграции.

Проанализируем причину ошибки: почему БПО не видит компоненту

Типичная ситуация: вы используете платформу 8.3.22 и выше, устанавливаете драйвер «ИНПАС:Эквайринговые терминалы UNIPOS» через интерфейс «Подключаемое оборудование», но система выдает ошибку: «Внешняя компонента для используемого клиентского приложения отсутствует». При этом аналогичные драйверы для Сбербанка или Ingenico подключаются мгновенно.

Выясним причину этого поведения. Библиотека подключаемого оборудования (БПО) хранит драйверы в виде ZIP-архивов в общих макетах конфигурации. Если мы разберем макет ДрайверИНПАСЭквайринговыеТерминалы, то увидим, что внутри архива содержатся только файлы формата .dll (для Windows x86 и x64). Скомпилированной библиотеки формата .so для Linux-архитектуры в составе типовой БПО на данный момент нет. Именно поэтому 1С «не видит» компоненту: она физически не находит исполняемый код для текущей ОС внутри макета драйвера.

Вариант 1. Интеграция через DualConnector 2.0 (HTTP/JSON)

Посмотрим на современное решение от компании INPAS. Вместо использования классической внешней компоненты a_inpasDC1c83.dll, рекомендуется перейти на использование DualConnector 2.0. Это решение работает как фоновый сервис, написанный на Java, и не зависит от графической оболочки или специфики клиентского приложения 1С.

Разберем по шагам логику этого метода:

  1. Установите пакет DualConnector (DC Service) на Linux-кассу.
  2. Запустите службу, которая по умолчанию начинает прослушивать порт 9015.
  3. В 1С откажитесь от использования стандартного драйвера БПО. Вместо этого напишите обработку, которая будет отправлять HTTP-запросы с JSON-пакетами на localhost:9015. В этом процессе вам может пригодиться быстрая организация HTTP-сервиса, позволяющая создать универсальный модуль для взаимодействия с API.

Проанализируем пример формирования структуры запроса на оплату, который необходимо отправить из 1С:


// Пример формирования JSON для DualConnector 2.0
ДанныеЗапроса = Новый Структура;
ДанныеЗапроса.Вставить("Command", "Sale"); // Операция оплаты
ДанныеЗапроса.Вставить("Amount", СуммаКопейки); // Сумма в копейках
ДанныеЗапроса.Вставить("CurrencyCode", "643");

Запрос = Новый HTTPЗапрос("/");
Запрос.УстановитьТелоИзСтроки(ДанныеИзJSON(ДанныеЗапроса));

Соединение = Новый HTTPСоединение("127.0.0.1", 9015);
Ответ = Соединение.ОтправитьДляОбъекта(Запрос);

Преимущество этого метода: вам не нужно бороться с регистрацией внешних компонент Native API, так как взаимодействие идет на уровне сетевых протоколов.

Вариант 2. Использование консольной утилиты DC Console

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

Схема работы будет следующей:

  1. 1С формирует текстовый файл с параметрами операции (сумма, тип транзакции).
  2. С помощью команды ЗапуститьПриложение вызывается консольный скрипт.
  3. Скрипт запускает dc_console, передавая параметры.
  4. После завершения операции утилита записывает результат в выходной файл, который 1С считывает и анализирует.

Пример вызова внешней утилиты из кода 1С:


КомандаЗапуска = "/opt/inpas/dc_console -o Sale -a " + Строка(Сумма);
ЗапуститьПриложение(КомандаЗапуска, , Истина, КодВозврата);

Если КодВозврата = 0 Тогда
    // Читаем файл ответа и обрабатываем результат
    ОбработатьРезультатОплаты();
КонецЕсли;

Важно помнить, что при использовании ЗапуститьПриложение в Linux необходимо следить за правами доступа пользователя, под которым запущен rphost или клиент 1С, к исполняемым файлам драйвера.

Вариант 3. Использование промежуточного ПО (KKMServer)

Разберем ситуацию, когда времени на разработку собственной «обертки» нет. В сообществе 1С-разработчиков популярным решением является KKMServer. Это специализированное ПО, которое имеет нативную поддержку Linux и умеет работать с эквайрингом ИНПАС.

Проанализируем плюсы этого подхода:

Хотя это решение является платным, оно часто обходится дешевле, чем часы работы программиста по созданию и поддержке собственного Native API моста.

Вариант 4. Создание собственной обертки Native API

Если вы скомпилировали исходные коды драйвера от ИНПАС под Linux с помощью make и make install, вы получили системные библиотеки (например, .so). Однако 1С не может вызвать их функции напрямую, если они не соответствуют стандарту 1C:Native API.

Рассмотрим подробнее, что для этого требуется. Для подготовки среды разработки вам могут понадобиться скрипты для настройки окружения gcc, которые помогут правильно собрать компоненту под Linux. Вам необходимо написать на C++ небольшую библиотеку-посредник, которая будет:

  1. Реализовывать интерфейс IComponentBase, понятный для 1С. В качестве примера реализации интерфейса можно изучить, как устроена внешняя компонента Native для отслеживания нажатия клавиш.
  2. Транслировать вызовы методов 1С (например, Оплатить()) в вызовы функций из скомпилированной системной библиотеки ИНПАС.
  3. Возвращать результат обратно в 1С через события или возвращаемые значения.

Этот путь самый трудозатратный и требует навыков системного программирования. Ориентиром качества может служить внешняя компонента для потокового сжатия данных, также поддерживающая Linux и работающая на низком уровне. Подобный подход позволяет получить максимально «бесшовную» интеграцию.

Подведем итоги

На сегодняшний день прямого пути подключения эквайринга ИНПАС в 1С под Linux «из коробки» (через кнопку «Установить драйвер» в БПО) не существует из-за отсутствия Linux-библиотек в макетах. Наиболее стабильным и современным способом является использование DualConnector 2.0 через HTTP/JSON. Если же требуется максимально быстрое решение с поддержкой множества устройств, стоит обратить внимание на KKMServer.

В качестве долгосрочной стратегии, если вы только планируете закупку оборудования, рекомендуется выбирать терминалы с поддержкой протоколов Sberbank или Ingenico, так как их компоненты уже включены в состав БПО для Linux и работают без дополнительных манипуляций.

← На главную