Как настроить возврат по СБП на терминалах Ingenico с драйвером Arcus 2 в 1С:Розница

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

При интеграции платежных решений часто возникают ситуации, когда стандартные операции оплаты проходят успешно, но специфические функции, такие как возврат через Систему Быстрых Платежей (СБП), вызывают затруднения. Рассмотрим ситуацию, когда при использовании связки из терминала Ingenico Lane3000, ПО Arcus 2 и конфигурации 1С:Розница 2.3 (с банком ПСБ) возврат по СБП не срабатывает привычным образом.

Основная сложность заключается в том, что при попытке оформления возврата терминал может не реагировать на функциональные клавиши (например, F2 для выбора СБП) или требовать приложить физическую карту, игнорируя цифровую природу транзакции СБП. Разберем причины этого поведения и найдем способы решения проблемы.

Выясняем причину: почему терминал «ждет карту» при возврате СБП

Проанализируем механику взаимодействия 1С и программного обеспечения терминала. В типовых сценариях 1С через драйвер IngenicoDriver1C.dll посылает на терминал стандартную команду возврата. Для системы эквайринга это операция с кодом 11 (возврат товара по карте). Однако для СБП в протоколе Arcus 2 часто выделяется отдельный код операции — 110.

Когда драйвер 1С версии 1.0.0.2 отправляет команду, терминал переходит в режим ожидания карты, так как он получил инструкцию именно для карточного возврата. Программная кнопка выбора СБП в этот момент может быть заблокирована на уровне логики драйвера терминала. Для корректной работы нам необходимо заставить систему отправлять правильный идентификатор операции или подготовить окружение Arcus 2 к приему команд.

Решение 1: Использование утилиты CommandLineTool для обхода ограничений 1С

Если штатный механизм 1С не позволяет передать нужный код операции, мы можем воспользоваться встроенной утилитой Arcus 2 для прямой отправки команды в банк. Рассмотрим пример использования CommandLineTool.exe. Это решение подходит, когда нужно выполнить возврат «здесь и сейчас», минуя ограничения драйвера 1С.

Для реализации этого метода подготовим исполняемый файл (bat-ник) со следующим содержанием:

C:\Arcus2\CommandLineTool\BIN\CommandLineTool.exe /o3 /a12345 /z12345 /c643

Разберем параметры этой команды:

  1. /o3 — индекс операции в конфигурационном файле OPS.ini.
  2. /a12345 — сумма возврата (в копейках, где 12345 — это 123 рубля 45 копеек).
  3. /z12345 — номер чека или идентификатор транзакции (зависит от настроек банка).
  4. /c643 — код валюты (российский рубль).

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

Решение 2: Настройка конфигурационных файлов Arcus 2 (OPS.ini и CASH.INI)

Проанализируем возможность изменения поведения самого терминала через настройки Arcus 2. Основным файлом, отвечающим за список доступных операций, является C:\Arcus2\INI\OPS.ini. По умолчанию в нем прописаны стандартные операции:


[OPS]
2=2,3,ОТМЕНА ПОСЛ.
3=1,11,ВОЗВРАТ ТОВАРА

Для того чтобы терминал понимал, что операция возврата должна идти через СБП, необходимо изменить код операции с 11 на 110. Однако, если мы сделаем это статично, мы потеряем возможность делать возвраты по обычным картам. Рассмотрим вариант временной подмены («костыля»), который обсуждался на форумах:

Перед пробитием чека на возврат в 1С программно (с помощью встроенного языка 1С) открывается файл OPS.ini, в нем строка 3=1,11,ВОЗВРАТ ТОВАРА заменяется на 3=1,110,Возврат СБП. После завершения операции настройки возвращаются в исходное состояние. Это позволяет использовать стандартную кнопку возврата в 1С для работы с СБП.

Также важно проверить файл CASH.INI. Для стабильной работы протокола обмена убедимся, что параметры настроены следующим образом:

Решение 3: Архитектурный подход через создание второго терминала в 1С

Наиболее правильным и современным способом решения проблемы в 1С является разделение логики на уровне подключаемого оборудования. Вместо того чтобы пытаться уместить две разные технологии (карты и СБП) в одну настройку, мы создадим в справочнике Подключаемое оборудование две записи для одного и того же физического терминала. При необходимости работы с другой моделью можно использовать расширение для управления выбором способа оплаты на терминалах PAX D230.

Пошаговый алгоритм настройки:

  1. Создадим первую запись оборудования с типом «Эквайринговый терминал» для обычных карт. Назовем ее «Ingenico (Карты)». Настроим ее стандартным образом.
  2. Создадим вторую запись оборудования — «Ingenico (СБП)».
  3. В параметрах второй записи (если используется драйвер версии 1.0.0.4 и выше) укажем в поле кода операции возврата значение 110.
  4. В справочнике Виды оплаты создадим отдельный вид оплаты «СБП».
  5. В настройках этого вида оплаты укажем, что он должен обслуживаться «виртуальным» терминалом «Ingenico (СБП)».

Теперь при попытке возврата по виду оплаты «СБП» 1С сама отправит в Arcus 2 нужный код операции, и терминал автоматически сформирует запрос на возврат через Систему Быстрых Платежей, не требуя прикладывания карты.

Устранение типичной ошибки «Ошибка MAC»

При активных манипуляциях с настройками и кодами операций пользователи часто сталкиваются с сообщением «Ошибка MAC». Выясним причину: эта ошибка означает рассинхронизацию ключей безопасности между терминалом и банковским хостом. Она часто возникает при попытке выполнить операцию, которая не была корректно инициализирована в текущей смене.

Для исправления ситуации выполним следующие действия:

  1. Закроем 1С и все процессы, связанные с терминалом.
  2. Перейдем в каталог C:\Arcus2\DATA.
  3. Сделаем резервную копию содержимого и удалим все файлы из этой папки (это сбросит кэш ключей).
  4. Запустим операцию инициализации (Init/Загрузка ключей) через меню терминала или с помощью CommandLineTool.exe.

Обновление компонентов как долгосрочная стратегия

Рассмотрим рекомендации технической поддержки. Проблема с отсутствием выбора способа возврата была массовой в версиях драйвера IngenicoDriver1C.dll ниже 1.0.0.4. В современных релизах БПО (Библиотека подключаемого оборудования), начиная с версии 3.1.2, разработчики добавили полноценную поддержку тега «Тип оплаты».

Если ваша конфигурация позволяет выполнить обновление, рекомендуем перейти на версию драйвера 1.0.0.6. В ней реализована возможность разделения потоков оплаты и возврата на уровне настроек драйвера без необходимости редактировать текстовые файлы конфигурации .ini. Также убедитесь, что версия ПО Arcus 2 не ниже 2.0.0.41, так как именно в этой версии была стабилизирована работа с протоколами СБП для банка ПСБ.

Важный момент при возвратах через ПСБ: всегда проверяйте передачу RRN (Retrieval Reference Number). Без этого идентификатора банк может отклонить операцию возврата с ошибкой «Чек не найден», даже если технически соединение с СБП установлено верно. В 1С RRN обычно хранится в данных эквайринговой операции и должен автоматически подставляться драйвером при оформлении возврата на основании чека продажи.

← На главную