При доработке кассовых узлов в конфигурациях 1С (например, 1С:Розница 1.0 или 1С:Управление торговлей 10.3) разработчики часто сталкиваются с двумя задачами: как реализовать разделение чека на несколько видов оплаты (часть наличными, часть картой) и как отладить отправку команд на эквайринговый терминал без наличия физического оборудования и без риска списания личных средств. Разберем по шагам доступные способы тестирования эквайринга и особенности реализации комбинированной оплаты.
Способы тестирования эквайринга без реальных списаний
Для проверки работы интерфейса и программного кода взаимодействия с банковским терминалом можно использовать несколько подходов:
Программная заглушка в коде обработки обслуживания: Разберем механизм вызова торгового оборудования. В конфигурациях на обычных формах за обращение к оборудованию отвечает общий модуль или обработка ТОСервер. При вызове функции оплаты терминала (например, оплата платежной картой) управление передается в обработку обслуживания драйвера. На этапе разработки можно переопределить метод оплаты так, чтобы он возвращал статус успешной транзакции без фактического вызова внешней компоненты. В ответных параметрах формируются тестовый код авторизации, номер ссылки (RRN) и фиктивный текст слип-чека. Это позволяет полностью проверить проведение документа, заполнение табличных частей и печать чека на ККТ.
Установка банковского драйвера без физического устройства: Подключим в 1С драйвер эквайринга в разделе «Подключение и настройка торгового оборудования». При попытке выполнить оплату система отработает логику до момента непосредственного обращения к COM-порту или сетевому адресу пин-пада (обычно возвращается ошибка связи с устройством, например код 4309). Это дает возможность проверить корректность передачи параметров суммы и номеров чеков в обработку обслуживания.
Тестовый режим банка и тестовые карты: Банки-эквайеры (например, Сбербанк) по запросу технической поддержки предоставляют возможность перевода терминала на тестовый хост или выдают специальные неперсонифицированные тестовые карты. В конфигурационных файлах банковского ПО (файлы с расширением .ini или .cfg) включается демо-режим, при котором все ответы об успешной авторизации генерируются банком без реального движения денежных средств.
Тестирование минимальной суммой на боевом терминале: Если доработка уже перенесена к клиенту, финальную проверку выполняют операцией на 1 копейку (0.01 руб.) с последующей операцией отмены или возврата. При немедленной отмене операции комиссия за эквайринг обычно не удерживается.
Реализация смешанной оплаты в 1С:Розница 1.0
В типовом интерфейсе рабочего места кассира (РМК) 1С:Розница 1.0 по умолчанию может отсутствовать кнопка для разделения платежа, однако на уровне метаданных документа ЧекККМ табличная часть для распределения оплат уже предусмотрена. Рассмотрим, как устроена эта логика:
Заполнение табличной части оплат: В документе ЧекККМ существует табличная часть (например, Оплата), содержащая реквизиты вида оплаты (справочник ВидыОплатЧекаККМ) и суммы. Для проведения смешанной оплаты необходимо создать форму ввода, где кассир указывает, какая сумма вносится наличными, а какая — банковской картой.
Контроль сумм: Сумма строк табличной части оплат обязана строго совпадать с итоговой суммой документа с учетом всех примененных скидок:
ИтогОплат = ЧекККМ.Оплата.Итог("Сумма");
Если ИтогОплат <> ЧекККМ.СуммаДокумента Тогда
Предупреждение("Сумма оплат не совпадает с суммой чека!");
Возврат;
КонецЕсли;
Передача данных в фискальный регистратор: При закрытии фискального чека на ККТ в параметры метода фискализации передаются раздельные суммы: сумма наличной оплаты и сумма безналичной (электронной) оплаты. Если суммы не будут сбалансированы с товарными позициями, драйвер ККТ вернет ошибку несовпадения сумм и откажется печатать чек.
Обработка слип-чеков и нештатных ситуаций
Проанализируем важные нюансы, которые необходимо учесть при программировании взаимодействия с пин-падом:
Печать слип-чека: Если банковский пин-пад не имеет встроенного термопринтера, текстовый слип-чек возвращается драйвером в 1С. Эту строку необходимо передать на печать в фискальный регистратор в виде нефискального текста до или после основного чека.
Откат транзакции при сбое печати: Критическая ситуация в кассовом узле — успешное списание средств по эквайрингу и последующий аппаратный сбой ККТ (закончилась кассовая лента, заклинило отрезчик или пропало питание). В коде 1С необходимо предусмотреть обработку исключений: если фискальный чек не закрыт, кассиру должно быть выведено диалоговое окно для повторной попытки печати либо должна инициироваться автоматическая отмена банковской транзакции по карте.