Эквайринговый терминал

Печать (Ctrl+P)

Библиотека подключаемого оборудования,версия 1.0

Сканер штрихкода
Считыватель магнитных карт
Терминал сбора данных
Дисплей покупателя
Фискальный регистратор
Эквайринговый терминал
Электронные весы
Весы с печатью этикеток
ККМ офлайн

Эквайринговый терминал (ЭТ) – электронное устройство, позволяющее считывать информацию с магнитной полосы или чипа карты, подключенное по каналам связи к процессинговому центру и предназначенное для автоматизированного совершения безналичных денежных операций.

В зависимости от аппаратных возможностей эквайрингового терминала печать подтверждающего оплату слип-чека производится на самом терминале или с помощью Фискального регистратора (ФР) (принтера печати чеков ЕНВД). В последнем случае Необходимо поддержать взаимодействие двух устройств в следующем порядке:

  • Подключение ЭТ при необходимости проведения безналичной оплаты;
  • Подключение ФР;
  • Проведение оплаты на ЭТ, получение подтверждения оплаты из процессингового центра;
  • Печать слип-чека, подтверждающего оплату при успешно завершенной операции на ЭТ, если это предусмотрено функциональностью устройства, или передача текста слип-чека из ЭТ в библиотеку для печати на фискальном регистраторе; 
  • Отключение устройства ЭТ;
  • Печать фискального чека на ФР;
  • Отключение ФР.

При успешном завершении транзакции процессинговый центр возвращает параметры транзакции:  номер платежной карты,  код авторизации, код транзакции, сумму оплаты и текст для печати слип чека. Печать чека на фискальном регистраторе производится с помощью операции печати произвольного текста с параметрами, полученными из процессингового центра. Если подтверждения оплаты не получено, следует прервать выполнение алгоритма и обработать сообщение об ошибке:

  • Подключение ЭТ при необходимости проведения безналичной оплаты;
  • Подключение ФР;
  • Проведение оплаты на ЭТ либо получение отказа в проведении операции;
  • Обработка сообщения об ошибке при проведении оплаты;
  • Отключение устройства ЭТ.

В случае успешного завершения операции на эквайринговом терминале и ошибки печати слип-чека на фискальном регистраторе, операцию на эквайринговом терминале нужно аварийно отменить. Для этого в устройство передаются полученные на выходе предыдущей операции параметры эквайринговой операции и выполняется команда Отмена последней операции.

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

Отмена оплаты по карте аналогична аварийной отмене операции и может быть проведена только в течение открытой смены, до проведения сверки итогов. При вызове метода передаются ссылочный номер операции (код RRN транзакции) и номер чека (код авторизации транзакции), полученные при проведении отменяемой операции Оплата по карте, и сумма возвращаемых на карту денежных средств.

Если сверка итогов произошла, то возможен только Возврат оплаты по карте. Для того чтобы осуществить возврат необходимо передать сумму, номер карты, ссылочный номер операции и номер чека.

При операции Отмена перечисленные в качестве оплаты средства практически мгновенно зачисляются обратно на карту, а операция Возврат предполагает возмещение суммы после подтверждения правомерности операции со стороны банка. 

Оплата картой

Оплата платёжной картой может производиться одним методом – преавторизация и её подтверждение производится на самом терминале (pin pad’e). Для проведения оплаты необходимо выполнить: подключение, оплату, печать слип-чека, аварийную отмену оплаты, если произошла ошибка, отключение.

Подключение

Для подключения ЭТ необходимо вызвать соответствующую функцию подсистемы БПО и передать ей уникальный идентификатор экземпляра формы, идентификатор устройства и пустую переменную ОписаниеОшибки, в которую функция вернёт описание ошибки. Функция возвращает Истину если подключить оборудование удалось.

Результат = МенеджерОборудованияКлиент.ПодключитьОборудованиеПоИдентификатору(УникальныйИдентификатор, ИдентификаторУстройстваЭТ, ОписаниеОшибки);

Аналогичным образом необходимо подключить и ФР подставив соответствующие параметры:

Результат = МенеджерОборудованияКлиент.ПодключитьОборудованиеПоИдентификатору(УникальныйИдентификатор, ИдентификаторУстройстваФР, ОписаниеОшибки);

Проведение оплаты

Если подключение успешно выполнено, то можно приступать к формированию входных параметров и проведению оплаты. На вход менеджеру устройства передаётся сумма операции и номер карты. Если номер карты пустой, то предполагается, что он будет получен считыванием карты непосредственно на ЭТ:

ВходныеПараметры = Новый Массив();
ВыходныеПараметры = Неопределено;
ВходныеПараметры.Добавить(СуммаОперации);
ВходныеПараметры.Добавить(НомерКарты); // Если пустая строка, то номер карты считывается на pin pad’e
РезультатЭТ = МенеджерОборудованияКлиент.ВыполнитьКоманду(ИдентификаторУстройстваЭТ,
            "AuthorizeSales",
            ВходныеПараметры,
            ВыходныеПараметры);
// Записываем выходные параметры (пригодятся при аварийной отмене операции)
НомерКарты = ?(Не ПустаяСтрока(НомерКарты) И ПустаяСтрока(СтрЗаменить(СокрЛП(ВыходныеПараметры[0]), "*", "")), НомерКарты, ВыходныеПараметры[0]);
НомерСсылкиОперации = ВыходныеПараметры[1];  // код RRN транзакции
НомерЧекаЭТ = ВыходныеПараметры[2];  // код авторизации транзакции
СтрокаСлипЧека = ВыходныеПараметры[3][1];  // Текст слип-чека, который надо будет напечатать на ФР
// Сохраняем слип-чек для последующей печати
Если Не ПустаяСтрока(ВыходныеПараметры[3][1]) Тогда
  глПодключаемоеОборудование.Вставить("ПоследнийСлипЧек", ВыходныеПараметры[3][1]);
КонецЕсли;

Печать слип-чека

Если операция на ЭТ прошла успешно, то необходимо напечатать слип-чек. Печать чека осуществляет ФР. Для этого ему передаются необходимые данные, и вызывается соответствующая команда:

Если Не РезультатЭТ Тогда
  ТекстСообщения = НСтр("ru = 'При выполнении операции возникла ошибка:
  |""%ОписаниеОшибки%"".
  |Операция по карте не была произведена.'");
  ТекстСообщения = СтрЗаменить(ТекстСообщения, "%ОписаниеОшибки%", ВыходныеПараметры[1]);
  ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения);
Иначе
Если Не ПустаяСтрока(СтрокаСлипЧека) Тогда
  ВходныеПараметры = Новый Массив();
  ВходныеПараметры.Добавить(СтрокаСлипЧека);
  ВыходныеПараметры = Неопределено;
  РезультатФР = МенеджерОборудованияКлиент.ВыполнитьКоманду(ИдентификаторУстройстваФР,
              "PrintText",
              ВходныеПараметры,
              ВыходныеПараметры);
  НомерЧекаККМ = ВыходныеПараметры[1];
КонецЕсли;
КонецЕсли;

Отмена операции в случае ошибки

Если операция по ЭТ прошла успешно, а слип-чек при этом не напечатался (ошибка на ФР), то операцию на ЭТ необходимо аварийно отменить. Для этого менеджеру устройства передаются параметры, полученные на выходе предыдущей операции, и выполняется соответствующая команда:

Если РезультатЭТ И Не РезультатФР Тогда
  ОписаниеОшибкиФР = ВыходныеПараметры[1];
  ВходныеПараметры = Новый Массив();
  ВыходныеПараметры = Неопределено;
  ВходныеПараметры.Добавить(СуммаОперации);
  ВходныеПараметры.Добавить(НомерСсылкиОперации);
  ВходныеПараметры.Добавить(НомерЧекаЭТ);
  МенеджерОборудованияКлиент.ВыполнитьКоманду(ИдентификаторУстройстваЭТ,
"EmergencyVoid",
ВходныеПараметры,
ВыходныеПараметры);
  ТекстСообщения = НСтр("ru = 'При печати слип-чека возникла ошибка:
  |""%ОписаниеОшибки%"".
  |Операция по карте была отменена.'");
  ТекстСообщения = СтрЗаменить(ТекстСообщения, "%ОписаниеОшибки%", ОписаниеОшибкиФР);
  ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения);
КонецЕсли;

Отключение

По завершении работы с оборудованием его необходимо отключить:

МенеджерОборудованияКлиент.ОтключитьОборудованиеПоИдентификатору(УникальныйИдентификатор, ИдентификаторУстройстваЭТ);
МенеджерОборудованияКлиент.ОтключитьОборудованиеПоИдентификатору(УникальныйИдентификатор, ИдентификаторУстройстваФР);

Отмена и возврат

Отмена оплаты возможна, если не произведена сверка итогов. Если сверка итогов произошла, то возможен только возврат. Технически эти операции выполняются аналогично оплате картой: подключение, выполнение операции, печать слип-чекааварийная отмена в случае ошибкиотключение. Ниже описаны отличия:

Отмена оплаты по карте

Отмена платежа очень похожа на аварийную отмену операции. На вход подаются сумма операции, ссылочный номер операции (код RRN транзакции) и номер чека. Последние два параметра программист получает на выходе отменяемой операции.

ВходныеПараметры = Новый Массив();
ВыходныеПараметры = Неопределено;
ВходныеПараметры.Добавить(СуммаОперации);
ВходныеПараметры.Добавить(НомерСсылкиОперации);
ВходныеПараметры.Добавить(НомерЧека);
МенеджерОборудованияКлиент.ВыполнитьКоманду(ИдентификаторУстройстваЭТ,
"AuthorizeVoid",
ВходныеПараметры,
ВыходныеПараметры);

Возврат оплаты по карте

Для того чтобы осуществить возврат оплаты по карте необходимо передать сумму, номер карты, ссылочный номер операции и номер чека.

ВходныеПараметры = Новый Массив();
ВыходныеПараметры = Неопределено;
ВходныеПараметры.Добавить(СуммаОперации);
ВходныеПараметры.Добавить(НомерКарты); // Если пустая строка, то номер карты считывается на pin pad’e
ВходныеПараметры.Добавить(НомерСсылкиОперации);
ВходныеПараметры.Добавить(НомерЧека);
РезультатЭТ = МенеджерОборудованияКлиент.ВыполнитьКоманду(ИдентификаторУстройстваЭТ,
            "AuthorizeRefund",
            ВходныеПараметры,
            ВыходныеПараметры);

Сверка итогов

Операция сверки итогов, как правило, выполняется при закрытии кассовой смены. На вход не надо передавать никаких параметров, надо только организовать работу с оборудованием в аналогичном другим операциям порядке: подключение, выполнение операции, печать слип-чекааварийная отмена в случае ошибкиотключение. Сама операция выполняется следующим образом:

ВходныеПараметры = Неопределено;
ВыходныеПараметры = Неопределено;
РезультатЭТ = МенеджерОборудованияКлиент.ВыполнитьКоманду(ИдентификаторУстройстваЭТ,
            " Settlement",
            ВходныеПараметры,
            ВыходныеПараметры);
Previous Article
Next Article

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.