Как настроить оплату СБП в 1С:Розница 2.3 при использовании терминала Arcus2 и кода операции 15?

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

При интеграции Системы быстрых платежей (СБП) через эквайринг Arcus2 в конфигурации 1С:Розница 2.3 специалисты часто сталкиваются с техническим ограничением. Суть проблемы заключается в том, что для инициации оплаты по QR-коду СБП банковский терминал ожидает команду с кодом операции 15. Однако стандартная библиотека IngenicoDriver1C.dll, используемая в 1С, жестко транслирует команду «Оплата» в код операции 1 (Sale). Изменить это поведение внутри закрытого кода драйвера невозможно, поэтому мы применим методику «подмены» через создание дублирующей программной среды для терминала.

Проанализируем причину проблемы

Рассмотрим, как взаимодействуют системы: когда кассир в РМК выбирает способ оплаты, 1С обращается к объекту драйвера и вызывает метод ОплатитьПлатежнойКартой. Внутри этого метода драйвер автоматически формирует запрос к ПО Arcus2 с параметром Operation=1. Для обычной оплаты картой это корректно, но для СБП банк требует Operation=15. Поскольку 1С не позволяет напрямую передать этот номер операции через стандартный интерфейс торгового оборудования, нам необходимо обмануть систему на уровне конфигурационных файлов самого Arcus2.

Шаг 1. Создание изолированной среды для СБП

Для начала нам необходимо разделить потоки данных для обычных карт и для СБП. Выполним следующие действия:

  1. Перейдем в каталог, где установлена рабочая версия Arcus2 (например, C:\Arcus2).
  2. Скопируем всю папку целиком и создадим дубликат с названием C:\Arcus2_SBP.
  3. Теперь у нас есть две независимые точки входа для драйвера: одна будет отвечать за карты, вторая — за СБП.

Шаг 2. Настройка подмены кода операции в ops.ini

Это ключевой этап решения. Нам нужно заставить Arcus2 выполнять операцию 15, когда 1С просит выполнить операцию 1. Разберем настройку файла ops.ini во второй папке (C:\Arcus2_SBP\ops.ini):

Найдем секцию, описывающую стандартную продажу. Обычно это [O_1]. Нам нужно изменить её параметры так, чтобы они ссылались на логику СБП, которая в оригинале прописана в секции [O_15]. Проанализируем пример настройки:


[O_1]
OpClass=1
OpId=109
Name=ОПЛАТА СБП

Важный момент: значения OpClass и OpId могут отличаться в зависимости от требований вашего банка (ВТБ, Газпромбанк и др.). Обязательно посмотрите, какие значения прописаны в секции [O_15] вашего исходного файла, и перенесите их в секцию [O_1] в новой папке. Таким образом, когда 1С отправит запрос на операцию №1, Arcus2 прочитает настройки из этой папки и запустит сценарий СБП.

Шаг 3. Корректировка параметров в cashreg.ini

Чтобы вторая копия Arcus2 работала корректно и не конфликтовала с первой, отредактируем файл C:\Arcus2_SBP\cashreg.ini. Проверим и изменим следующие параметры:

Шаг 4. Настройка подключаемого оборудования в 1С

Теперь перейдем к настройке в самой 1С:Розница. Нам нужно создать виртуальную копию терминала:

  1. Зайдем в раздел Администрирование — Подключаемое оборудование.
  2. Создадим новый экземпляр оборудования с типом «Эквайринговый терминал» (по аналогии с тем, как настраивается старый драйвер Сбербанка).
  3. В настройках этого экземпляра в поле «Параметры подключения» укажем путь к нашей новой папке: C:\Arcus2_SBP.
  4. Наименуем его понятно, например, «Терминал СБП».
  5. В справочнике «Эквайринговые терминалы» (который связан с Кассой ККТ) создадим новую запись, привяжем её к новому оборудованию и обязательно создадим отдельный Вид оплаты — «СБП».

Шаг 5. Решение проблемы закрытия смены (Сверка итогов)

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

В настройках Кассы ККТ в 1С:Розница убедитесь, что в списке доступных эквайринговых терминалов указаны оба устройства. Если автоматическое закрытие не срабатывает для СБП, сверку итогов для папки Arcus2_SBP придется инициировать вручную через форму управления оборудованием. Это связано с тем, что команда сверки итогов также имеет свой код, и если в ops.ini мы переопределили только оплату, то команда закрытия смены (обычно код 7) должна остаться стандартной.

Альтернативный метод: Таблица подмен (Alias)

Разберем еще один способ, который иногда предлагают специалисты техподдержки банков. В некоторых версиях ПО Arcus2 в файле cashreg.ini поддерживается секция [OP_ALIAS]. Она позволяет выполнить перенаправление на уровне ядра драйвера без клонирования папок. Выглядит это примерно так:


[OP_ALIAS]
1=15

Однако этот метод менее надежен для 1С, так как он подменит все оплаты на СБП в рамках одной папки. Для корректной работы и карт, и СБП одновременно, метод с двумя разными каталогами, описанный выше, является наиболее жизнеспособным и стабильным.

Проверка корректности работы

Если после настройки при выборе оплаты СБП терминал всё равно пишет «Вставьте карту», проанализируем файл лога p_sbp.log. Ищите строку Operation: 1. Если после неё вы видите, что Arcus2 пытается запустить стандартный сценарий Sale, значит:

  1. Либо вы не сохранили изменения в ops.ini в папке Arcus2_SBP.
  2. Либо в настройках 1С в поле «Путь к каталогу» всё еще указана старая папка Arcus2.

Помните: 1С:Розница при закрытии чека (даже если это чек без фискализации) просто передает команду драйверу, а вся магия трансформации кода 1 в код 15 происходит именно внутри конфигурационных файлов Arcus2, которые лежат в указанном вами пути.

← На главную