Интеграция эквайринга Сбербанка в нетиповые (самописные) конфигурации 1С часто сопровождается трудностями. Одной из самых частых и неприятных проблем является ситуация, когда при вызове метода оплаты терминал никак не реагирует (экран остается темным, карта не запрашивается), а система 1С возвращает неинформативную ошибку 4309.
В этой статье мы подробно разберем, как устроено взаимодействие платформы 1С с банковским ПО Сбербанка (UPOS), почему возникает ошибка 4309, как проверить работоспособность оборудования без 1С и как правильно перенести рабочие настройки в вашу «нетленку».
Многие разработчики ошибочно полагают, что код 4309 — это техническая ошибка связи или сбой самой компоненты 1С. На самом деле в протоколе Сбербанка UPOS ошибка 4309 означает «Печатать нечего».
Проанализируем механику этого процесса:
ОплатитьПлатежнойКартой.Решение: Чтобы узнать реальную причину сбоя, необходимо обратиться к лог-файлам Сбербанка. Перейдите в рабочий каталог Сбера на локальном компьютере (по умолчанию это C:\sc552 или C:\SBRF) и откройте файл лога (обычно он называется p или extdll.log). Найдите строки, предшествующие ошибке 4309 — там будет указан настоящий код ошибки (например, отсутствие связи с хостом банка или неверная конфигурация COM-порта).
Если терминал PAX SP30 «молчит» и не загорается при отправке команды из 1С, это говорит об отсутствии связи между драйвером Сбербанка на компьютере и самим устройством. Выполним проверку по шагам:
USB Serial Port (PAX). Если устройство отображается с желтым восклицательным знаком, необходимо установить официальный USB-драйвер PAX.pinpad.ini, находящийся в папке C:\sc552 (или в папке, где установлено ПО Сбербанка). Проверьте параметры связи. Строка инициализации должна строго указывать на ваш порт, например:
ComPort=3
Speed=115200
pinpad.ini не совпадает с номером в Диспетчере устройств, драйвер будет отправлять запросы «в пустоту», провоцируя ошибку 4309.
Для корректного вызова методов эквайринга из самописной конфигурации 1С библиотеки Сбербанка должны быть зарегистрированы в операционной системе Windows. Особое внимание уделим разрядности платформы 1С:
regsvr32.exe, расположенную по пути C:\Windows\SysWOW64\.Пример корректной регистрации в командной строке (CMD):
cd C:\Windows\SysWOW64
regsvr32.exe "C:\sc552\SBRFCOM.dll"
Также убедитесь, что пользователь Windows, под которым запускается сеанс 1С, имеет полные права доступа (чтение, запись, изменение) на рабочий каталог Сбербанка (C:\sc552). В противном случае компонента не сможет обновить временные файлы транзакций во время выполнения платежа.
При разработке интеграции в самописной конфигурации часто возникает путаница с версиями библиотек Сбербанка. Существуют две основные версии компоненты SBRFCOM.dll, которые существенно отличаются сигнатурой метода оплаты:
ОплатитьПлатежнойКартой принимает 3 параметра:
// Сумма платежа, Ссылка/Код RRN, Код авторизации
Результат = ОбъектДрайвера.ОплатитьПлатежнойКартой(Сумма, RRN, КодАвторизации);
// Требуется передавать все 7 параметров, даже если они пустые
Результат = ОбъектДрайвера.ОплатитьПлатежнойКартой(Сумма, RRN, КодАвторизации, "", "", "", "");
Если в коде вашей конфигурации вызывается метод с 3 параметрами, а в системе зарегистрирована новая DLL, ожидающая 7 параметров, вызов завершится аварийно и вернет ошибку 4309 еще до того, как сигнал дойдет до терминала.
Решение: Загляните в рабочий каталог Сбербанка. В дистрибутивах (папка 1С) обычно поставляются две подпапки: 3_par и 7_par. Скопируйте файл SBRFCOM.dll из нужной папки в рабочий каталог в соответствии с тем, как написан ваш код в 1С, и перерегистрируйте библиотеку в Windows.
Прежде чем переписывать код в 1С, нам необходимо выяснить, исправно ли само оборудование и загружены ли рабочие ключи Сбербанка в пин-пад. Сделать это можно с помощью встроенной утилиты тестирования:
C:\sc552.sb_pilot.exe (или запустите тест через командный файл test.bat, если он подготовлен банком).Анализ результатов теста:
pinpad.ini) и ключи Сбербанка настроены корректно. Проблема кроется исключительно в коде вашей 1С или разрядности зарегистрированных DLL.pinpad.ini либо на самом терминале не загружены рабочие ключи шифрования. В этом случае необходимо обратиться в службу поддержки Сбербанка для удаленной или очной загрузки ключей инженером.Рассмотрим наиболее быстрый и надежный способ запустить эквайринг на нетиповой конфигурации:
C:\sc552) и файлы настроек на целевой компьютер.При передаче числовых значений в метод оплаты всегда контролируйте тип данных. Например, сумма должна передаваться строго в формате Число с округлением до двух знаков после запятой, без лишних пробелов-разделителей:
СуммаПлатежа = Округлить(ДокументОбъект.СуммаДокумента, 2);
// Избегайте передачи строковых представлений чисел
Применяя данные шаги по локализации проблемы, вы сможете быстро подружить пин-пад PAX SP30 со своей конфигурацией и избавиться от неочевидных ошибок эквайринга Сбербанка.