При интеграции Системы быстрых платежей (СБП) через эквайринг Arcus2 в конфигурации 1С:Розница 2.3 специалисты часто сталкиваются с техническим ограничением. Суть проблемы заключается в том, что для инициации оплаты по QR-коду СБП банковский терминал ожидает команду с кодом операции 15. Однако стандартная библиотека IngenicoDriver1C.dll, используемая в 1С, жестко транслирует команду «Оплата» в код операции 1 (Sale). Изменить это поведение внутри закрытого кода драйвера невозможно, поэтому мы применим методику «подмены» через создание дублирующей программной среды для терминала.
Рассмотрим, как взаимодействуют системы: когда кассир в РМК выбирает способ оплаты, 1С обращается к объекту драйвера и вызывает метод ОплатитьПлатежнойКартой. Внутри этого метода драйвер автоматически формирует запрос к ПО Arcus2 с параметром Operation=1. Для обычной оплаты картой это корректно, но для СБП банк требует Operation=15. Поскольку 1С не позволяет напрямую передать этот номер операции через стандартный интерфейс торгового оборудования, нам необходимо обмануть систему на уровне конфигурационных файлов самого Arcus2.
Для начала нам необходимо разделить потоки данных для обычных карт и для СБП. Выполним следующие действия:
C:\Arcus2).C:\Arcus2_SBP.Это ключевой этап решения. Нам нужно заставить 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 прочитает настройки из этой папки и запустит сценарий СБП.
Чтобы вторая копия Arcus2 работала корректно и не конфликтовала с первой, отредактируем файл C:\Arcus2_SBP\cashreg.ini. Проверим и изменим следующие параметры:
LOG_FILE=p_sbp.log. Это критически важно для отладки: вы сможете видеть ошибки СБП отдельно от ошибок по картам.Теперь перейдем к настройке в самой 1С:Розница. Нам нужно создать виртуальную копию терминала:
C:\Arcus2_SBP.Выясним причину, по которой могут возникнуть сложности при закрытии смены. Поскольку у нас теперь два «логических» терминала в 1С, при выполнении сверки итогов 1С может закрывать смену только по одному из них. Рассмотрим, как этого избежать:
В настройках Кассы ККТ в 1С:Розница убедитесь, что в списке доступных эквайринговых терминалов указаны оба устройства. Если автоматическое закрытие не срабатывает для СБП, сверку итогов для папки Arcus2_SBP придется инициировать вручную через форму управления оборудованием. Это связано с тем, что команда сверки итогов также имеет свой код, и если в ops.ini мы переопределили только оплату, то команда закрытия смены (обычно код 7) должна остаться стандартной.
Разберем еще один способ, который иногда предлагают специалисты техподдержки банков. В некоторых версиях ПО Arcus2 в файле cashreg.ini поддерживается секция [OP_ALIAS]. Она позволяет выполнить перенаправление на уровне ядра драйвера без клонирования папок. Выглядит это примерно так:
[OP_ALIAS]
1=15
Однако этот метод менее надежен для 1С, так как он подменит все оплаты на СБП в рамках одной папки. Для корректной работы и карт, и СБП одновременно, метод с двумя разными каталогами, описанный выше, является наиболее жизнеспособным и стабильным.
Если после настройки при выборе оплаты СБП терминал всё равно пишет «Вставьте карту», проанализируем файл лога p_sbp.log. Ищите строку Operation: 1. Если после неё вы видите, что Arcus2 пытается запустить стандартный сценарий Sale, значит:
ops.ini в папке Arcus2_SBP.Arcus2.Помните: 1С:Розница при закрытии чека (даже если это чек без фискализации) просто передает команду драйверу, а вся магия трансформации кода 1 в код 15 происходит именно внутри конфигурационных файлов Arcus2, которые лежат в указанном вами пути.