Эквайринговый терминал
Библиотека подключаемого оборудования,версия 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", ВходныеПараметры, ВыходныеПараметры);