Интеграция современных банковских терминалов с устаревшими учетными системами на платформе 1С 7.7 (например, популярной конфигурацией «Торговля и Склад 7.7») часто становится серьезной головной болью для программистов и системных администраторов. Техническая поддержка Кредит Европа Банка (КЕБ) обычно предоставляет внешнюю библиотеку, ориентированную на современную платформу 1С 8.х (под Библиотеку подключаемого оборудования — БПО). Наша задача — разобраться, как подружить эквайринг этого банка с «семеркой» и какие существуют альтернативные, более стабильные пути решения этой проблемы.
В этой статье мы подробно разберем все возможные сценарии интеграции: от прямой работы со специализированной DLL-библиотекой до использования универсальных программных прослоек и автономных режимов.
---
Официальная библиотека от Кредит Европа Банка — AddInCEB.dll (в некоторых дистрибутивах она также поставляется под именем CEBPayment.dll) — представляет собой внешнюю компоненту ActiveX/COM. Несмотря на то, что банк позиционирует ее для интеграции с 1С 8.х, мы можем успешно использовать ее в 1С 7.7.
Рассмотрим пошагово, как это сделать:
regsvr32 "C:\ПутьКПапке\AddInCEB.dll"
Процедура ИнициализироватьЭквайрингКЕБ()
Попытка
// Пытаемся загрузить компоненту в память 1С
ЗагрузитьВнешнююКомпоненту("AddInCEB.dll");
ТерминалКЕБ = СоздатьОбъект("AddIn.AddInCEB");
Сообщить("Компонента Кредит Европа Банка успешно подключена!", "i");
Исключение
Предупреждение("Не удалось загрузить или зарегистрировать AddInCEB.dll. Проверьте разрядность и права доступа!");
КонецПопытки;
КонецПроцедуры
Важный технический нюанс: в отличие от 1С 8.х, где функции БПО берут на себя всю рутину по обработке запросов и ответов, в 1С 7.7 вам придется вручную прописывать вызовы методов компоненты (таких как оплата, отмена платежа, сверка итогов) и разбирать возвращаемые XML-пакеты или текстовые строки с результатами транзакции. Если документации к методам DLL нет, то программисту придется использовать утилиты для исследования COM-объектов (например, TLI.TypeLibInfo) для выяснения доступных свойств и методов объекта.
---
Как справедливо отмечают практикующие специалисты, прямая привязка к банковской DLL делает систему крайне уязвимой к любым изменениям со стороны банка. Если завтра клиент решит сменить Кредит Европа Банк на Сбербанк или ВТБ ради более выгодного процента по эквайрингу, программисту придется заново переписывать весь код интеграции.
Для решения этой проблемы мы рекомендуем рассмотреть «АТОЛ: Драйвер платежных систем». Это платное, но чрезвычайно стабильное и универсальное решение.
Преимущества данного подхода:
Перед покупкой лицензии на драйвер АТОЛ обязательно уточните у технической поддержки Кредит Европа Банка, по какому именно протоколу прошит их терминал (обычно это Arcus2 или UCS). Убедившись в совместимости, вы сможете настроить интеграцию буквально за полчаса.
---
Значительная часть терминалов Кредит Европа Банка работает через крупнейший процессинговый центр UCS. Если это ваш случай, то вам вообще не нужна специализированная библиотека банка.
Обычно ПО от UCS устанавливается в локальную директорию на кассовом компьютере (например, C:\UCS\). Для работы с этим процессингом существуют проверенные временем и бесплатные обработки для 1С 7.7. Схема интеграции выглядит следующим образом:
---
Если подключить AddInCEB.dll напрямую в 1С 7.7 не удается из-за несовместимости операционных систем или ограничений прав, можно применить классический и невероятно надежный метод — файловый обмен с вызовом консольной утилиты банка.
У любого банковского софта (будь то ПО от КЕБ или UCS) есть консольная утилита командной строки, которая умеет инициировать транзакцию на пин-паде. Рассмотрим, как реализовать этот алгоритм в 1С 7.7 по шагам:
request.txt), в котором указывает тип операции и сумму.ЗапуститьПриложение(), передавая путь к файлу запроса в качестве параметра.response.txt).Посмотрим на пример реализации такого ожидания в коде «семерки»:
// Записываем файл запроса (код опущен для краткости)
...
// Запускаем банковскую утилиту
ЗапуститьПриложение("C:\CEB\RunTrans.exe -f C:\CEB\request.txt");
// Начинаем цикл ожидания ответа от терминала
ФС = СоздатьОбъект("ФС");
ИмяФайлаОтвета = "C:\CEB\response.txt";
СекундОжидания = 60; // Таймаут операции - 1 минута
Пока (ФС.СуществуетФайл(ИмяФайлаОтвета) = 0) И (СекундОжидания > 0) Цикл
// Приостанавливаем выполнение (простой аналог Sleep в 1С 7.7)
Предупреждение("Ожидайте завершения операции на терминале...", 1);
СекундОжидания = СекундОжидания - 1;
КонецЦикла;
Если ФС.СуществуетФайл(ИмяФайлаОтвета) = 1 Тогда
// Читаем файл ответа и анализируем статус транзакции
ТекстОтвета = СоздатьОбъект("Текст");
ТекстОтвета.Открыть(ИмяФайлаОтвета);
// Проводим анализ строки ответа
...
Иначе
Предупреждение("Таймаут операции! Терминал не ответил вовремя.");
КонецЕсли;
---
Если на торговой точке пробивается небольшое количество чеков в день (до 20–30 транзакций), самым разумным, простым и абсолютно отказоустойчивым решением будет использование автономного режима работы терминала.
При таком подходе физической связи между терминалом Кредит Европа Банка и компьютером с 1С 7.7 нет вообще:
Этот способ исключает необходимость регистрации dll-библиотек, исключает конфликты оборудования, сбои com-портов и не требует от программиста написания сложного кода поддержки банковских протоколов.