Как подключить эквайринговый терминал PAX SP30 от Сбербанка к самописной 1С и исправить ошибку 4309

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

Интеграция эквайринга Сбербанка в нетиповые (самописные) конфигурации 1С часто сопровождается трудностями. Одной из самых частых и неприятных проблем является ситуация, когда при вызове метода оплаты терминал никак не реагирует (экран остается темным, карта не запрашивается), а система 1С возвращает неинформативную ошибку 4309.

В этой статье мы подробно разберем, как устроено взаимодействие платформы 1С с банковским ПО Сбербанка (UPOS), почему возникает ошибка 4309, как проверить работоспособность оборудования без 1С и как правильно перенести рабочие настройки в вашу «нетленку».

Шаг 1. Выясняем истинную причину ошибки 4309

Многие разработчики ошибочно полагают, что код 4309 — это техническая ошибка связи или сбой самой компоненты 1С. На самом деле в протоколе Сбербанка UPOS ошибка 4309 означает «Печатать нечего».

Проанализируем механику этого процесса:

  1. Прикладное решение 1С вызывает метод ОплатитьПлатежнойКартой.
  2. Библиотека эквайринга пытается выполнить операцию (связаться с пин-падом, отправить запрос в банк).
  3. На каком-то из этапов происходит сбой: не загружены ключи безопасности в терминал, нет физической связи с портом устройства, не совпали параметры авторизации и т.д.
  4. Операция аварийно завершается, и банковское ядро не генерирует образ слип-чека.
  5. Платформа 1С пытается прочитать данные чека из буфера обмена компоненты, чтобы вывести его на печать. Но так как транзакция не состоялась, буфер пуст. Компонента возвращает ошибку «Печатать нечего» (4309), маскируя под собой реальную первоначальную ошибку.

Решение: Чтобы узнать реальную причину сбоя, необходимо обратиться к лог-файлам Сбербанка. Перейдите в рабочий каталог Сбера на локальном компьютере (по умолчанию это C:\sc552 или C:\SBRF) и откройте файл лога (обычно он называется p или extdll.log). Найдите строки, предшествующие ошибке 4309 — там будет указан настоящий код ошибки (например, отсутствие связи с хостом банка или неверная конфигурация COM-порта).

Шаг 2. Настраиваем физическое подключение и pinpad.ini

Если терминал PAX SP30 «молчит» и не загорается при отправке команды из 1С, это говорит об отсутствии связи между драйвером Сбербанка на компьютере и самим устройством. Выполним проверку по шагам:

  1. Проверка драйверов в Windows: Терминал PAX SP30 подключается по USB-кабелю, но работает через виртуальный COM-порт. Убедитесь, что в Диспетчере устройств Windows в разделе «Порты (COM и LPT)» присутствует устройство USB Serial Port (PAX). Если устройство отображается с желтым восклицательным знаком, необходимо установить официальный USB-драйвер PAX.
  2. Номер COM-порта: Рекомендуется принудительно задать виртуальному порту терминала номер не выше COM20 в свойствах драйвера устройства Windows.
  3. Конфигурация файла настроек: Откройте конфигурационный файл pinpad.ini, находящийся в папке C:\sc552 (или в папке, где установлено ПО Сбербанка). Проверьте параметры связи. Строка инициализации должна строго указывать на ваш порт, например:
    
    ComPort=3
    Speed=115200
    
    Если номер порта в файле pinpad.ini не совпадает с номером в Диспетчере устройств, драйвер будет отправлять запросы «в пустоту», провоцируя ошибку 4309.

Шаг 3. Регистрация библиотек SBRF.dll и SBRFCOM.dll

Для корректного вызова методов эквайринга из самописной конфигурации 1С библиотеки Сбербанка должны быть зарегистрированы в операционной системе Windows. Особое внимание уделим разрядности платформы 1С:

Пример корректной регистрации в командной строке (CMD):


cd C:\Windows\SysWOW64
regsvr32.exe "C:\sc552\SBRFCOM.dll"

Также убедитесь, что пользователь Windows, под которым запускается сеанс 1С, имеет полные права доступа (чтение, запись, изменение) на рабочий каталог Сбербанка (C:\sc552). В противном случае компонента не сможет обновить временные файлы транзакций во время выполнения платежа.

Шаг 4. Устраняем конфликт версий SBRFCOM.dll (3 и 7 параметров)

При разработке интеграции в самописной конфигурации часто возникает путаница с версиями библиотек Сбербанка. Существуют две основные версии компоненты SBRFCOM.dll, которые существенно отличаются сигнатурой метода оплаты:

  1. Старая версия: Метод ОплатитьПлатежнойКартой принимает 3 параметра:
    
    // Сумма платежа, Ссылка/Код RRN, Код авторизации
    Результат = ОбъектДрайвера.ОплатитьПлатежнойКартой(Сумма, RRN, КодАвторизации);
    
  2. Новая версия: Метод принимает 7 параметров (включая ссылки на чековые принтеры, флаги печати и т.д.):
    
    // Требуется передавать все 7 параметров, даже если они пустые
    Результат = ОбъектДрайвера.ОплатитьПлатежнойКартой(Сумма, RRN, КодАвторизации, "", "", "", "");
    

Если в коде вашей конфигурации вызывается метод с 3 параметрами, а в системе зарегистрирована новая DLL, ожидающая 7 параметров, вызов завершится аварийно и вернет ошибку 4309 еще до того, как сигнал дойдет до терминала.

Решение: Загляните в рабочий каталог Сбербанка. В дистрибутивах (папка 1С) обычно поставляются две подпапки: 3_par и 7_par. Скопируйте файл SBRFCOM.dll из нужной папки в рабочий каталог в соответствии с тем, как написан ваш код в 1С, и перерегистрируйте библиотеку в Windows.

Шаг 5. Автономное тестирование терминала (без 1С)

Прежде чем переписывать код в 1С, нам необходимо выяснить, исправно ли само оборудование и загружены ли рабочие ключи Сбербанка в пин-пад. Сделать это можно с помощью встроенной утилиты тестирования:

  1. Перейдите в папку C:\sc552.
  2. Найдите и запустите исполняемый файл sb_pilot.exe (или запустите тест через командный файл test.bat, если он подготовлен банком).
  3. Выберите пункт меню «Сверка итогов» или выполните тестовую операцию продажи на 1 копейку.

Анализ результатов теста:

Шаг 6. Правильная методология интеграции

Рассмотрим наиболее быстрый и надежный способ запустить эквайринг на нетиповой конфигурации:

  1. Установите на компьютер разработчика любую чистую типовую конфигурацию (например, 1С:Розница или 1С:Управление нашей фирмой).
  2. Вызовите инженера Сбербанка и попросите его подключить пин-пад к этой типовой конфигурации через стандартную Библиотеку Подключаемого Оборудования (БПО).
  3. Как только оплата на типовой базе пройдет успешно, скопируйте всю папку с драйверами (C:\sc552) и файлы настроек на целевой компьютер.
  4. Изучите, какие именно методы и с какими параметрами вызывает типовая конфигурация при интеграции с этой версией драйвера, и перенесите аналогичные вызовы в вашу самописную конфигурацию.

При передаче числовых значений в метод оплаты всегда контролируйте тип данных. Например, сумма должна передаваться строго в формате Число с округлением до двух знаков после запятой, без лишних пробелов-разделителей:


СуммаПлатежа = Округлить(ДокументОбъект.СуммаДокумента, 2);
// Избегайте передачи строковых представлений чисел

Применяя данные шаги по локализации проблемы, вы сможете быстро подружить пин-пад PAX SP30 со своей конфигурацией и избавиться от неочевидных ошибок эквайринга Сбербанка.

← На главную