Как настроить интеграцию эквайрингового терминала Unitodi P8 Bio с 1С:Управление торговлей 10.3?

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

В современной розничной торговле автоматизация приема платежей является критически важной задачей. Однако при использовании старых конфигураций, таких как 1С:Управление торговлей 10.3, системные администраторы и программисты часто сталкиваются с проблемой отсутствия штатных драйверов для нового оборудования — для этого есть обновление драйверов эквайринга для 1С:УТ 10.3. Одним из таких устройств является терминал Unitodi P8 Bio, который активно предлагает «Альфа-Банк». Рассмотрим подробно, как «подружить» это «чудо инженерной мысли» со старой доброй «десяткой».

Анализ архитектуры взаимодействия

Терминалы Unitodi работают через программное обеспечение-прослойку, которое называется PosConnector (разработка PBF Group). В отличие от более привычных терминалов PAX или Verifone, которые используют другие, более распространенные протоколы вроде DualConnector или Arcus, Unitodi требует регистрации собственных COM-компонент. Главная сложность заключается в том, что в типовой поставке 1С:УТ 10.3 нет встроенного драйвера именно под этот бренд, так как он появился значительно позже выхода конфигурации. В то время как для других систем давно существует, например, обработка обслуживания ИНПАС: UNIPOS, для Unitodi часто приходится искать индивидуальные решения.

Проанализируем основные этапы настройки, которые нам предстоит выполнить:

  1. Установка и настройка ПО PosConnector на рабочем месте кассира.
  2. Регистрация системных библиотек (DLL) в операционной системе.
  3. Программная реализация обмена данными между 1С и терминалом через COM-интерфейс.

Шаг 1. Подготовка системного окружения

Прежде чем приступать к коду в 1С, необходимо убедиться, что само устройство корректно определяется операционной системой. Рассмотрим важный нюанс, связанный с разрядностью. Поскольку 1С:Предприятие 8.3 в режиме обычных форм (как и 8.2) чаще всего используется в 32-битном варианте (x86), драйверы терминала также должны быть 32-битными.

Важно: При установке PosConnector специалистом банка обязательно требуйте установку именно 32-битной версии библиотеки posconlib.dll. Если будет установлена только 64-битная версия, 1С просто не сможет создать COM-объект, и вы получите ошибку «Класс не зарегистрирован». Подробно вопросы регистрации 32-битных библиотек в среде x64 и решения проблем с COM-соединением описаны в отдельном руководстве.

Для регистрации библиотеки вручную используйте командную строку от имени администратора:

C:\Windows\SysWOW64\regsvr32.exe "C:\PathToPosConnector\posconlib.dll"

Шаг 2. Программная реализация обмена данными

Если штатной обработки обслуживания найти не удалось, мы можем реализовать обмен данными напрямую. Технология прямой работы с COM-объектами позволяет гибко управлять взаимодействием. Для этого используются два основных COM-объекта: пакет данных (SAPacket) и интерфейс соединения (POSConnectorInterface).

Рассмотрим пример кода для выполнения простейшей операции — получения краткого отчета (X-отчет). Этот код можно разместить в модуле формы обработки обслуживания или непосредственно в документе «Чек ККМ»:


// Создаем объекты для связи
Попытка
    Запрос = ПолучитьCOMОбъект("", "SAPacket-posconlib");
    Ответ = ПолучитьCOMОбъект("", "SAPacket-posconlib");
    Соединение = ПолучитьCOMОбъект("", "POSConnectorInterface-posconlib");
Исключение
    Сообщить("Не удалось инициализировать компоненты PosConnector. Проверьте регистрацию DLL.");
    Возврат;
КонецПопытки;

// Настраиваем параметры запроса
Запрос.CurrencyCode = "643"; // Код рубля
Запрос.OperationCode = 63;   // Код операции (63 - X-отчет, 1 - Оплата, 2 - Возврат)
Запрос.CommandMode2 = 20;    // Режим (20 - краткий отчет)

// Выполняем обмен данными с терминалом (таймаут 180 секунд)
Результат = Соединение.Exchange(Запрос, Ответ, 1800);

Если Результат > 0 Тогда
    ТекстОшибки = Соединение.ErrorDescription;
    Сообщить("Ошибка связи: " + ТекстОшибки);
Иначе
    // Проверяем статус выполнения операции на стороне банка
    Если Ответ.Status = 1 Тогда
        СлипЧек = Ответ.ReceiptData;
        Сообщить("Операция успешна. Текст чека:");
        Сообщить(СлипЧек);
    Иначе
        Сообщить("Банк отклонил операцию. Статус: " + Ответ.Status);
    КонецЕсли;
КонецЕсли;

Шаг 3. Обработка кодов операций и ошибок

При интеграции оплаты нам необходимо передавать сумму. Проанализируем, как изменяется логика для проведения платежа. В объекте SAPacket сумма обычно передается в копейках (целое число).

Ниже приведен список основных кодов операций (OperationCode), которые вам понадобятся:

Рассмотрим пример обработки различных статусов ответа терминала, чтобы пользователь понимал, что пошло не так. Выясним причину отказа, анализируя свойство Status объекта ответа:


Статус = ПакетОтвета.Status;
Если Статус = 1 Тогда
    // Все хорошо
ИначеЕсли Статус = 15 Тогда
    ОписаниеОшибки = "В операции отказано банком (Insufficient funds / Другое)";
ИначеЕсли Статус = 53 Тогда
    ОписаниеОшибки = "Операция прервана пользователем (нажата кнопка Отмена)";
ИначеЕсли Статус = 34 Тогда
    ОписаниеОшибки = "Ошибка связи: нет соединения с хостом банка";
Иначе
    ОписаниеОшибки = "Неизвестная ошибка терминала. Код статуса: " + Статус;
КонецЕсли;

Шаг 4. Использование готовых обработок обслуживания

Если ручное написание кода кажется слишком трудоемким, можно использовать готовую обработку обслуживания «ПБФ:Эквайринговые терминалы» для УТ 10.х. Она изначально разрабатывалась для БПО (Библиотеки подключаемого оборудования) в новых конфигурациях, но существуют адаптированные версии для УТ 10.3.

Проанализируем преимущества использования обработки:

  1. Стандартизация: 1С работает с терминалом через стандартный интерфейс (Методы ОплатитьПлатежнойКартой, ВернутьПлатежПоПлатежнойКарте).
  2. Печать чеков: Обработка сама корректно разбивает текст слип-чека на строки для печати на фискальном регистраторе.
  3. Поддержка моделей: Помимо Unitodi P8, такие обработки часто поддерживают и другие модели ПБФ-групп, например, Aisino V37.

Нюансы при работе через RDP (Удаленный рабочий стол)

Часто 1С:УТ 10.3 развернута на терминальном сервере. В этом случае работа с COM-объектом усложняется, и здесь поможет подробное руководство по настройке оборудования в RDP. Рассмотрим два варианта решения:

Резюме и рекомендации

Подключение Unitodi P8 Bio к старым конфигурациям 1С вполне реально, несмотря на отсутствие официальной поддержки «из коробки». Главное — помнить о 32-битной архитектуре 1С и использовать правильные идентификаторы COM-объектов (SAPacket-posconlib и POSConnectorInterface-posconlib).

Если же процесс интеграции заходит в тупик из-за специфических проблем с драйверами банка, рассмотрите возможность замены терминала на модели PAX (например, Q25 или S200) — для этого подойдёт интеграция безналичной оплаты и СБП для 1С:УТ 10.3. Они используют более старый и распространенный драйвер DualConnector, который гарантированно работает в УТ 10.3 без дополнительных доработок кода. Также в качестве альтернативы можно рассмотреть терминалы TACTILION или современные решения, для которых доступна обработка обслуживания «Эквайринговые терминалы Сбербанк 2.Х», а также специализированная API-интеграция с терминалами Сбербанка Kozen.

← На главную