При автоматизации торговых точек на платформе 1С 7.7 часто возникает необходимость настроить эквайринговый терминал Сбербанка (в частности, распространенные модели Verifone VX820 и VX810). Работа с терминалами Сбербанка организована таким образом, что сам тип физического устройства (VX820 или VX810) не играет ключевой роли для кода платформы. Взаимодействие с оборудованием осуществляется через фирменное программное обеспечение Сбербанка (пакет UPOS), расположенное обычно в каталоге C:\sc552.
Рассмотрим подробно способы интеграции терминала Verifone VX820 в конфигурацию 1С:Торговля и Склад 7.7, изучим ключевые этапы настройки оборудования и разберем практические примеры кода.
Это основной и наиболее удобный метод подключения, при котором 1C 7.7 взаимодействует с терминалом напрямую через COM-объект. При вызове функций компонента посылает команду на терминал, принимает карту, запрашивает ПИН-код и возвращает результат проведения транзакции.
Рассмотрим по шагам алгоритм работы с библиотекой SBRFCOM.dll:
C:\Windows\SysWOW64\regsvr32.exe C:\sc552\SBRFCOM.dll
Разберем пример реализации проведения оплаты в коде 1С 7.7:
// Подключение внешней компоненты Сбербанка
Попытка
СберТерминал = СоздатьОбъект("AddIn.SBRFCOMExtension");
Исключение
Предупреждение("Не удалось создать объект AddIn.SBRFCOMExtension!");
Возврат;
КонецПопытки;
// Формируем сумму оплаты в копейках (без разделителей)
СуммаВКопейках = Число(СуммаДокумента) * 100;
RRN = "";
КодАвторизации = "";
// Вызов функции оплаты (принимает сумму, RRN и код авторизации)
КодВозврата = СберТерминал.ОплатитьПлатежнойКартой(СуммаВКопейках, RRN, КодАвторизации);
Если КодВозврата = 0 Тогда
Сообщить("Оплата прошла успешно! RRN: " + RRN + ", Код авторизации: " + КодАвторизации);
// Получение текста слип-чека
КоличествоСтрок = СберТерминал.КоличествоСтрокСлипЧека();
ТекстЧека = "";
Для Сч = 1 По КоличествоСтрок Цикл
СтрокаЧека = СберТерминал.ПолучитьСтрокуСлипЧека(Сч);
ТекстЧека = ТекстЧека + СтрокаЧека + Симв(13) + Симв(10);
КонецЦикла;
// Печать полученного текста чека на ККТ или принтере
ПечатьСлипЧека(ТекстЧека);
Иначе
Предупреждение("Ошибка проведения оплаты по карте! Код ошибки: " + Строка(КодВозврата));
КонецЕсли;
Если работу через COM-объект настроить не удается, используется альтернативный файловый вариант интеграции через консольную утилиту sbpilot.exe. При таком подходе 1С 7.7 запускает исполняемый файл с ключами операций и считывает результат из формируемых текстовых файлов в папке C:\sc552.
Основные параметры вызова sbpilot.exe:
1 [СуммаВКопейках] — проведение операции оплаты.2 [СуммаВКопейках] — проведение операции возврата.3 [СуммаВКопейках] — отмена транзакции (до закрытия смены).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 важно учитывать следующие аспекты:
silence.bat из дистрибутива Сбербанка). Заданный в Диспетчере устройств номер COM-порта должен строго совпадать с настройкой ComPort в файле конфигурации pinpad.ini.LoadParm.exe или sbpilot.exe вручную из каталога C:\sc552.