Как подключить эквайринговый терминал VeriFone VX520 к 1С:Розница на обычных формах

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

Подключение эквайринговых терминалов в конфигурациях 1С на обычных формах (в частности, 1С:Розница 1.0) часто вызывает затруднения из-за отсутствия универсального стандарта взаимодействия между 1С и банковским программным обеспечением. Разберем порядок действий при сопряжении терминала VeriFone VX520 с 1С, выясним причины ошибки «Ответ от терминала не был получен» и рассмотрим архитектуру работы с внешней обработкой обслуживания.

Причины сбоев при подключении VeriFone VX520

Специалисты поддержки банков поставляют терминал VeriFone VX520 с уникальной прошивкой и собственным протоколом связи. Использование стандартных протоколов вроде EFTPOS или стандартных драйверов из Библиотеки подключаемого оборудования (БПО) со сторонней прошивкой приводит к неработоспособности устройства. Проанализируем ключевые факторы, препятствующие корректной интеграции:

  1. Несовпадение протоколов обмена: Программное обеспечение терминала VeriFone VX520 управляется через проприетарную библиотеку банка (например, posapi.dll, Arcus2 или DualConnector). Стандартные обработки 1С не могут отправить команду терминалу без использования соответствующего COM-объекта.
  2. Разрядность компонентов: Клиентское приложение 1С на обычных формах выполняется в 32-битном режиме (x86). Поставляемая банком COM-библиотека также должна быть 32-разрядной и зарегистрированной в операционной системе Windows с помощью утилиты regsvr32.
  3. Номер виртуального COM-порта: При подключении терминала через USB с эмуляцией RS-232 драйвер USB-COM может назначить завышенный номер порта (например, COM12). Мультипротокольные библиотеки корректно работают с портами в диапазоне от COM1 до COM9. Изменить номер порта необходимо вручную в Диспетчере устройств.
  4. Режим работы терминала: Устройство должно быть переведено специалистом банка в кассовый (интегрированный) режим работы. В автономном режиме терминал не принимает команды от стороннего ПО.

Архитектура подключения в обычном приложении

В отличие от управляемого приложения, где применяется механизм БПО, в обычных формах 1С (Розница 1.0) связь с эквайринговым терминалом организуется через внешние обработки обслуживания торгового оборудования (файлы с расширением .epf). Обработка размещается в справочнике ОбработкиОбслуживанияТорговогоОборудования и выступает мостом между событиями 1С и библиотекой банка.

Рассмотрим по шагам процесс подготовки и подключения оборудования:

  1. Выполним настройку физического подключения терминала к ПК и установим драйвер виртуального COM-порта.
  2. Зарегистрируем банковскую библиотеку (например, posapi.dll) в командной строке от имени Администратора: regsvr32 "C:\BankPOS\posapi.dll"
  3. В конфигураторе или через меню справочников проверим активность подсистемы эквайринга в 1С:Розница.
  4. Подготовим или адаптируем внешнюю обработку обслуживания на основе стандартов 1С и вызовов методов зарегистрированного COM-объекта.

Реализация внешней обработки обслуживания

Разберем структуру ключевых функций, которые должна содержать внешняя обработка обслуживания эквайринга для работы с COM-объектом банка.

При инициализации устройства выполняется создание COM-объекта и установка параметров связи (номер порта, скорость, таймаут ожидания):


Функция ПодключитьОборудование(ОбъектДрайвера, ПараметрыПодключения) Экспорт

	Перем Результат;
	
	Попытка
		// Создаем COM-объект банковской библиотеки
		ОбъектДрайвера = Новый COMОбъект("PosApi.TerminalEngine");
		ОбъектДрайвера.ComPort = ПараметрыПодключения.Порт;
		ОбъектДрайвера.Timeout = 60; // Таймаут ожидания ответа (в секундах)
		
		Результат = ОбъектДрайвера.InitTerminal();
		Если НЕ Результат Тогда
			Возврат Ложь;
		КонецЕсли;
		Возврат Истина;
	Исключение
		Сообщить("Ошибка инициализации COM-объекта эквайринга: " + ОписаниеОшибки());
		Возврат Ложь;
	КонецПопытки;

КонецФункции

Выполнение оплаты по платежной карте требует передачи суммы операции и кода валюты в банковский модуль:


Функция ОплатитьОпределеннуюСумму(ОбъектДрайвера, Сумма, НомерЧека, КодОтвета, ТекстОшибки) Экспорт

	Попытка
		// Запуск транзакции оплаты
		ОбъектДрайвера.Amount = Сумма;
		ОбъектДрайвера.InvoiceNumber = НомерЧека;
		
		КодРезультата = ОбъектДрайвера.ProcessPayment();
		
		Если КодРезультата = 0 Тогда
			КодОтвета = ОбъектДрайвера.AuthCode;
			Возврат Истина;
		Иначе
			ТекстОшибки = ОбъектДрайвера.GetLastErrorDescription();
			Возврат Ложь;
		КонецЕсли;
	Исключение
		ТекстОшибки = ОписаниеОшибки();
		Возврат Ложь;
	КонецПопытки;

КонецФункции

Завершение смены и сверка итогов (закрытие эквайринговой смены) вызывают соответствующий метод банковского ядра для печати итогового чека:


Функция ЗакрытьСмену(ОбъектДрайвера, ТекстОшибки) Экспорт

	Попытка
		КодРезультата = ОбъектДрайвера.CloseDay();
		Если КодРезультата <> 0 Тогда
			ТекстОшибки = ОбъектДрайвера.GetLastErrorDescription();
			Возврат Ложь;
		КонецЕсли;
		Возврат Истина;
	Исключение
		ТекстОшибки = ОписаниеОшибки();
		Возврат Ложь;
	КонецПопытки;

КонецФункции

Рекомендации по отладке и тестированию

Проанализируем порядок действий при проведении тестовых платежей:

← На главную