При проведении оплаты банковской картой через эквайринговый терминал Сбербанка в программе 1С (например, в 1С:Управление торговлей или 1С:Розница) пользователи нередко сталкиваются с ошибкой «Ошибка эквайринговой системы 4309». При этом фискальный регистратор корректно печатает чеки при наличной оплате, а сбой происходит исключительно на этапе безналичного расчета.
Разберем природу данной ошибки, выясним, почему она скрывает истинную причину проблемы, и рассмотрим пошаговый алгоритм ее устранения.
Код ошибки 4309 в банковском модуле Сбербанка расшифровывается как «Печатать нечего» (отсутствует образ документа для печати). Данная ошибка является вторичной и возникает из-за особенностей взаимодействия кассового модуля 1С и библиотеки эквайринга (sb_kernel.dll или драйвера pilot_nt).
Проанализируем типовой сценарий взаимодействия:
p в рабочем каталоге терминала).sb_kernel.dll слип-чек для печати на фискальном регистраторе.Чтобы понять, что именно пошло не так при проведении платежа, необходимо обратиться к журналам самого банковского ПО, минуя интерфейс 1С.
Перейдем в рабочую папку эквайринга (чаще всего это C:\sc552 или каталог, указанный в настройках драйвера) и найдем файлы журналов:
sb_kernel.log или upos.log с помощью текстового редактора.Host not found, ошибка ключей KLK error, Declined и др.).Проверим работоспособность оборудования без участия 1С, чтобы исключить влияние учетной системы и драйверов COM-соединения:
cd C:\sc552
sb_pilot.exe
или утилиту pilot_nt.exe с параметрами тестирования связи.Если терминал успешно проходит автономные тесты, проверим корректность конфигурации интеграции в файле pinpad.ini (находится в рабочей директории эквайринга):
PrinterFile настроен на правильное имя файла чека (обычно PrinterFile=p).Port) и скорость обмена (Speed). Они должны строго соответствовать настройкам устройства в диспетчере устройств Windows.pinpad.ini:
WorkingDir=%UserProfile%\SC552
TlvDir=%UserProfile%\SC552
Банковский драйвер постоянно создает, перезаписывает и удаляет файлы в своем рабочем каталоге (файлы p, e, sb_kernel.log). Если у пользователя Windows, под которым запущена 1С, отсутствуют права на запись, сформировать чек не удастся.
C:\sc552).При использовании устаревших обработок обслуживания взаимодействие происходит через COM-объект SBRFCOM.dll:
SBRF.dll и SBRFCOM.dll являются 32-разрядными (x86). При запуске 64-битного клиента 1С прямая работа с 32-битной COM-библиотекой не поддерживается. Для работы необходимо использовать 32-разрядный клиент 1С:Предприятие.
regsvr32 "C:\Program Files (x86)\1cv8\8.3.X.XXXX\bin\SBRFCOM.dll"
SBRFCOM.dll: более старые версии ожидали передачу 3 параметров при вызове методов, обновленные — 7 параметров. Если обработка обслуживания в 1С не совпадает по версии с используемой DLL, результат транзакции передается с ошибкой.Для полного исключения подобных коллизий рекомендуется отказаться от ручной регистрации DLL в системных папках и перейти на использование стандартного драйвера из состава Библиотеки подключаемого оборудования (БПО):
C:\sc552).