Как подключить эквайринг Кредит Европа Банка в 1С 7.7 «Торговля и Склад»?

Программист 1С v7.7 Управленческий учет Торговля и дистрибуция
← На главную

Интеграция современных банковских терминалов с устаревшими учетными системами на платформе 1С 7.7 (например, популярной конфигурацией «Торговля и Склад 7.7») часто становится серьезной головной болью для программистов и системных администраторов. Техническая поддержка Кредит Европа Банка (КЕБ) обычно предоставляет внешнюю библиотеку, ориентированную на современную платформу 1С 8.х (под Библиотеку подключаемого оборудования — БПО). Наша задача — разобраться, как подружить эквайринг этого банка с «семеркой» и какие существуют альтернативные, более стабильные пути решения этой проблемы.

В этой статье мы подробно разберем все возможные сценарии интеграции: от прямой работы со специализированной DLL-библиотекой до использования универсальных программных прослоек и автономных режимов.

---

Вариант 1. Прямое подключение библиотеки AddInCEB.dll в 1С 7.7

Официальная библиотека от Кредит Европа Банка — AddInCEB.dll (в некоторых дистрибутивах она также поставляется под именем CEBPayment.dll) — представляет собой внешнюю компоненту ActiveX/COM. Несмотря на то, что банк позиционирует ее для интеграции с 1С 8.х, мы можем успешно использовать ее в 1С 7.7.

Рассмотрим пошагово, как это сделать:

  1. Проверка разрядности. Платформа 1С 7.7 является строго 32-битным (x86) приложением. Убедитесь, что технические специалисты банка предоставили вам именно 32-битную версию библиотеки. Попытка зарегистрировать 64-битную dll в среде 1С 7.7 приведет к ошибке «Компонента не найдена».
  2. Регистрация в операционной системе. Библиотеку необходимо зарегистрировать на рабочем месте кассира. Для этого запустите командную строку от имени администратора и выполните следующую команду:

    regsvr32 "C:\ПутьКПапке\AddInCEB.dll"

  3. Подключение в коде 1С 7.7. Инициализацию компоненты выполним стандартными средствами платформы. Проанализируем пример кода для загрузки внешней компоненты:

Процедура ИнициализироватьЭквайрингКЕБ()
    Попытка
        // Пытаемся загрузить компоненту в память 1С
        ЗагрузитьВнешнююКомпоненту("AddInCEB.dll");
        ТерминалКЕБ = СоздатьОбъект("AddIn.AddInCEB");
        Сообщить("Компонента Кредит Европа Банка успешно подключена!", "i");
    Исключение
        Предупреждение("Не удалось загрузить или зарегистрировать AddInCEB.dll. Проверьте разрядность и права доступа!");
    КонецПопытки;
КонецПроцедуры

Важный технический нюанс: в отличие от 1С 8.х, где функции БПО берут на себя всю рутину по обработке запросов и ответов, в 1С 7.7 вам придется вручную прописывать вызовы методов компоненты (таких как оплата, отмена платежа, сверка итогов) и разбирать возвращаемые XML-пакеты или текстовые строки с результатами транзакции. Если документации к методам DLL нет, то программисту придется использовать утилиты для исследования COM-объектов (например, TLI.TypeLibInfo) для выяснения доступных свойств и методов объекта.

---

Вариант 2. Использование универсального драйвера «АТОЛ: Драйвер платежных систем»

Как справедливо отмечают практикующие специалисты, прямая привязка к банковской DLL делает систему крайне уязвимой к любым изменениям со стороны банка. Если завтра клиент решит сменить Кредит Европа Банк на Сбербанк или ВТБ ради более выгодного процента по эквайрингу, программисту придется заново переписывать весь код интеграции.

Для решения этой проблемы мы рекомендуем рассмотреть «АТОЛ: Драйвер платежных систем». Это платное, но чрезвычайно стабильное и универсальное решение.

Преимущества данного подхода:

Перед покупкой лицензии на драйвер АТОЛ обязательно уточните у технической поддержки Кредит Европа Банка, по какому именно протоколу прошит их терминал (обычно это Arcus2 или UCS). Убедившись в совместимости, вы сможете настроить интеграцию буквально за полчаса.

---

Вариант 3. Интеграция через процессинг UCS (United Card Services)

Значительная часть терминалов Кредит Европа Банка работает через крупнейший процессинговый центр UCS. Если это ваш случай, то вам вообще не нужна специализированная библиотека банка.

Обычно ПО от UCS устанавливается в локальную директорию на кассовом компьютере (например, C:\UCS\). Для работы с этим процессингом существуют проверенные временем и бесплатные обработки для 1С 7.7. Схема интеграции выглядит следующим образом:

  1. Банковское ПО UCS настраивается на работу по OLE-протоколу или файловому обмену.
  2. В 1С 7.7 вы импортируете стандартную обработку интеграции с UCS (ее легко найти на профильных форумах или запросить у коллег).
  3. В коде документа «ЧекККМ» или «ПриходныйКассовыйОрдер» прописывается обращение к этой обработке с передачей суммы платежа.

---

Вариант 4. Обходной путь через файловый обмен и консольные утилиты

Если подключить AddInCEB.dll напрямую в 1С 7.7 не удается из-за несовместимости операционных систем или ограничений прав, можно применить классический и невероятно надежный метод — файловый обмен с вызовом консольной утилиты банка.

У любого банковского софта (будь то ПО от КЕБ или UCS) есть консольная утилита командной строки, которая умеет инициировать транзакцию на пин-паде. Рассмотрим, как реализовать этот алгоритм в 1С 7.7 по шагам:

  1. 1С записывает текстовый файл запроса (например, request.txt), в котором указывает тип операции и сумму.
  2. 1С запускает консольную утилиту банка через команду ЗапуститьПриложение(), передавая путь к файлу запроса в качестве параметра.
  3. Банковское ПО проводит операцию на терминале и записывает результат в файл ответа (например, response.txt).
  4. 1С в цикле ожидает появления файла ответа, считывает его, парсит результат транзакции и, в случае успеха, пробивает фискальный чек.

Посмотрим на пример реализации такого ожидания в коде «семерки»:


// Записываем файл запроса (код опущен для краткости)
...
// Запускаем банковскую утилиту
ЗапуститьПриложение("C:\CEB\RunTrans.exe -f C:\CEB\request.txt");

// Начинаем цикл ожидания ответа от терминала
ФС = СоздатьОбъект("ФС");
ИмяФайлаОтвета = "C:\CEB\response.txt";
СекундОжидания = 60; // Таймаут операции - 1 минута

Пока (ФС.СуществуетФайл(ИмяФайлаОтвета) = 0) И (СекундОжидания > 0) Цикл
    // Приостанавливаем выполнение (простой аналог Sleep в 1С 7.7)
    Предупреждение("Ожидайте завершения операции на терминале...", 1);
    СекундОжидания = СекундОжидания - 1;
КонецЦикла;

Если ФС.СуществуетФайл(ИмяФайлаОтвета) = 1 Тогда
    // Читаем файл ответа и анализируем статус транзакции
    ТекстОтвета = СоздатьОбъект("Текст");
    ТекстОтвета.Открыть(ИмяФайлаОтвета);
    // Проводим анализ строки ответа
    ...
Иначе
    Предупреждение("Таймаут операции! Терминал не ответил вовремя.");
КонецЕсли;

---

Вариант 5. Полуинтегрированный (автономный) режим

Если на торговой точке пробивается небольшое количество чеков в день (до 20–30 транзакций), самым разумным, простым и абсолютно отказоустойчивым решением будет использование автономного режима работы терминала.

При таком подходе физической связи между терминалом Кредит Европа Банка и компьютером с 1С 7.7 нет вообще:

  1. Кассир выбирает в 1С 7.7 вид оплаты «Безналичный расчет».
  2. Программа предлагает провести платеж по терминалу и выводит на экран окно с суммой.
  3. Кассир вручную вводит эту сумму на пин-паде терминала.
  4. Клиент прикладывает карту и вводит пин-код.
  5. После того как терминал распечатал слип-чек об успешном одобрении операции, кассир нажимает в 1С кнопку «Да» (подтверждая оплату).
  6. 1С отправляет команду на фискальный регистратор и пробивает обычный кассовый чек, где указан безналичный тип оплаты.

Этот способ исключает необходимость регистрации dll-библиотек, исключает конфликты оборудования, сбои com-портов и не требует от программиста написания сложного кода поддержки банковских протоколов.

← На главную