Как протестировать эквайринг в 1С и настроить смешанную оплату?

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

При доработке кассовых узлов в конфигурациях 1С (например, 1С:Розница 1.0 или 1С:Управление торговлей 10.3) разработчики часто сталкиваются с двумя задачами: как реализовать разделение чека на несколько видов оплаты (часть наличными, часть картой) и как отладить отправку команд на эквайринговый терминал без наличия физического оборудования и без риска списания личных средств. Разберем по шагам доступные способы тестирования эквайринга и особенности реализации комбинированной оплаты.

Способы тестирования эквайринга без реальных списаний

Для проверки работы интерфейса и программного кода взаимодействия с банковским терминалом можно использовать несколько подходов:

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

Реализация смешанной оплаты в 1С:Розница 1.0

В типовом интерфейсе рабочего места кассира (РМК) 1С:Розница 1.0 по умолчанию может отсутствовать кнопка для разделения платежа, однако на уровне метаданных документа ЧекККМ табличная часть для распределения оплат уже предусмотрена. Рассмотрим, как устроена эта логика:

  1. Заполнение табличной части оплат: В документе ЧекККМ существует табличная часть (например, Оплата), содержащая реквизиты вида оплаты (справочник ВидыОплатЧекаККМ) и суммы. Для проведения смешанной оплаты необходимо создать форму ввода, где кассир указывает, какая сумма вносится наличными, а какая — банковской картой.
  2. Контроль сумм: Сумма строк табличной части оплат обязана строго совпадать с итоговой суммой документа с учетом всех примененных скидок:
    
    ИтогОплат = ЧекККМ.Оплата.Итог("Сумма");
    Если ИтогОплат <> ЧекККМ.СуммаДокумента Тогда
        Предупреждение("Сумма оплат не совпадает с суммой чека!");
        Возврат;
    КонецЕсли;
    
  3. Передача данных в фискальный регистратор: При закрытии фискального чека на ККТ в параметры метода фискализации передаются раздельные суммы: сумма наличной оплаты и сумма безналичной (электронной) оплаты. Если суммы не будут сбалансированы с товарными позициями, драйвер ККТ вернет ошибку несовпадения сумм и откажется печатать чек.

Обработка слип-чеков и нештатных ситуаций

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

  1. Печать слип-чека: Если банковский пин-пад не имеет встроенного термопринтера, текстовый слип-чек возвращается драйвером в 1С. Эту строку необходимо передать на печать в фискальный регистратор в виде нефискального текста до или после основного чека.
  2. Откат транзакции при сбое печати: Критическая ситуация в кассовом узле — успешное списание средств по эквайрингу и последующий аппаратный сбой ККТ (закончилась кассовая лента, заклинило отрезчик или пропало питание). В коде 1С необходимо предусмотреть обработку исключений: если фискальный чек не закрыт, кассиру должно быть выведено диалоговое окно для повторной попытки печати либо должна инициироваться автоматическая отмена банковской транзакции по карте.
← На главную