Как подключить эквайринговый терминал Verifone VX820 Сбербанка к 1С:Торговля и Склад 7.7?

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

При автоматизации торговых точек на платформе 1С 7.7 часто возникает необходимость настроить эквайринговый терминал Сбербанка (в частности, распространенные модели Verifone VX820 и VX810). Работа с терминалами Сбербанка организована таким образом, что сам тип физического устройства (VX820 или VX810) не играет ключевой роли для кода платформы. Взаимодействие с оборудованием осуществляется через фирменное программное обеспечение Сбербанка (пакет UPOS), расположенное обычно в каталоге C:\sc552.

Рассмотрим подробно способы интеграции терминала Verifone VX820 в конфигурацию 1С:Торговля и Склад 7.7, изучим ключевые этапы настройки оборудования и разберем практические примеры кода.

Способ 1. Использование внешней компоненты SBRFCOM.dll

Это основной и наиболее удобный метод подключения, при котором 1C 7.7 взаимодействует с терминалом напрямую через COM-объект. При вызове функций компонента посылает команду на терминал, принимает карту, запрашивает ПИН-код и возвращает результат проведения транзакции.

Рассмотрим по шагам алгоритм работы с библиотекой SBRFCOM.dll:

  1. Регистрация библиотеки в операционной системе: поскольку платформа 1С 7.7 является 32-разрядной, на 64-битных ОС Windows библиотеку необходимо регистрировать через 32-битный регистратор. Выполним команду в командной строке от имени администратора: C:\Windows\SysWOW64\regsvr32.exe C:\sc552\SBRFCOM.dll
  2. Инициализация COM-объекта в коде 1С: создаем объект внешней компоненты и проверяем успешность подключения.
  3. Выполнение транзакции оплаты: вызываем метод оплаты, передавая сумму покупки в копейках.
  4. Получение и печать слип-чека: вычитываем сформированный текст чека построчно и отправляем его на печать через фискальный регистратор или макет 1С.

Разберем пример реализации проведения оплаты в коде 1С 7.7:


// Подключение внешней компоненты Сбербанка
Попытка
    СберТерминал = СоздатьОбъект("AddIn.SBRFCOMExtension");
Исключение
    Предупреждение("Не удалось создать объект AddIn.SBRFCOMExtension!");
    Возврат;
КонецПопытки;

// Формируем сумму оплаты в копейках (без разделителей)
СуммаВКопейках = Число(СуммаДокумента) * 100;

RRN = "";
КодАвторизации = "";

// Вызов функции оплаты (принимает сумму, RRN и код авторизации)
КодВозврата = СберТерминал.ОплатитьПлатежнойКартой(СуммаВКопейках, RRN, КодАвторизации);

Если КодВозврата = 0 Тогда
    Сообщить("Оплата прошла успешно! RRN: " + RRN + ", Код авторизации: " + КодАвторизации);
    
    // Получение текста слип-чека
    КоличествоСтрок = СберТерминал.КоличествоСтрокСлипЧека();
    ТекстЧека = "";
    Для Сч = 1 По КоличествоСтрок Цикл
        СтрокаЧека = СберТерминал.ПолучитьСтрокуСлипЧека(Сч);
        ТекстЧека = ТекстЧека + СтрокаЧека + Симв(13) + Симв(10);
    КонецЦикла;
    
    // Печать полученного текста чека на ККТ или принтере
    ПечатьСлипЧека(ТекстЧека);
Иначе
    Предупреждение("Ошибка проведения оплаты по карте! Код ошибки: " + Строка(КодВозврата));
КонецЕсли;

Способ 2. Файловый обмен через утилиту sbpilot.exe

Если работу через COM-объект настроить не удается, используется альтернативный файловый вариант интеграции через консольную утилиту sbpilot.exe. При таком подходе 1С 7.7 запускает исполняемый файл с ключами операций и считывает результат из формируемых текстовых файлов в папке C:\sc552.

Основные параметры вызова sbpilot.exe:

  1. 1 [СуммаВКопейках] — проведение операции оплаты.
  2. 2 [СуммаВКопейках] — проведение операции возврата.
  3. 3 [СуммаВКопейках] — отмена транзакции (до закрытия смены).
  4. 7 — сверка итогов (закрытие банковской смены).

Проанализируем пример запуска операции через утилиту sbpilot.exe и обработку результатов:


СуммаВКопейках = Строка(Цел(СуммаДокумента * 100));
КомандаЗапуска = "C:\sc552\sbpilot.exe 1 " + СуммаВКопейках;

// Запуск утилиты с ожиданием завершения
КомандаСистемы(КомандаЗапуска);

// Проверка результата по файлу ошибок e.txt
ФайлРезультата = СоздатьОбъект("Текст");
ФайлРезультата.Открыть("C:\sc552\e.txt");

Если ФайлРезультата.КоличествоСтрок() > 0 Тогда
    КодОшибки = СокрЛП(ФайлРезультата.ПолучитьСтроку(1));
    Если КодОшибки = "0" Тогда
        Сообщить("Транзакция успешно выполнена!");
        
        // Считываем чек из файла p.txt или cheq.txt
        ФайлЧека = СоздатьОбъект("Текст");
        ФайлЧека.Открыть("C:\sc552\p.txt");
        // Выполняем перекодирование из DOS (CP866) в ANSIпри необходимости
        // И отправляем документ на печать
    Иначе
        Предупреждение("Ошибка оплаты по карте. Код: " + КодОшибки);
    КонецЕсли;
КонецЕсли;

Технические нюансы и первичная диагностика

При настройке терминала Verifone VX820 важно учитывать следующие аспекты:

  1. Настройка виртуального COM-порта: терминал Verifone VX820 при подключении по USB требует установки фирменного драйвера виртуального COM-порта (скрипт silence.bat из дистрибутива Сбербанка). Заданный в Диспетчере устройств номер COM-порта должен строго совпадать с настройкой ComPort в файле конфигурации pinpad.ini.
  2. Кодировка слип-чеков: текст чека, считываемый из текстовых файлов или возвращаемый библиотекой, часто сформирован в кодировке CP866 (OEM/DOS). Перед выводом текста на печать в 1С 7.7 необходимо выполнять перекодирование символов в CP1251 (ANSI).
  3. Разграничение операций отмены и возврата: если смена по банковскому терминалу еще не была закрыта (не проводилась сверка итогов), выполняется операция «Отмена» (код 3). Если сверка итогов уже выполнена, отменить операцию невозможно — необходимо выполнять операцию «Возврат» (код 2).
  4. Предварительное тестирование: перед отладкой кода в 1С 7.7 убедитесь в исправности связи терминала с банком, запустив утилиту LoadParm.exe или sbpilot.exe вручную из каталога C:\sc552.
← На главную