Добрый день!
Недавно на розничных точках установили терминалы банка УралСиб, продажи проходят хорошо: то есть при пробитии чека выбираем нужный эквайринг, сумма падает на терминал, человек прикладывает карту, проходит оплата, выдаются 2 банковских "слип" чека и по нажатию Enter пробивается основной чек.
Но когда делаем возврат - не работает ничего. То есть: в РМК нажимаем Возврат, выбираем чек, нажимаем пробить, выбираем способ оплаты соответствующий, и при нажатии Enter команда на терминал не подается, сразу выдается чек возврата. То есть даже не предлагается приложить карту. Инженер банка ссылается на 1С, у них все хорошо. Раньше стояли обычные терминалы, где кассир ручками вводил сумму оплаты и возврата.
Через администратора в эквайринговых операциях при заполнении номера ссылки,чека и суммы - команда на терминал идет, возврат проходит.
Мой первый вопрос здесь, помогите куда копать) Спасибо.
&НаКлиенте
Процедура ЗавершитьВозвратПлатежнойКартойЧерезЭквайринговыйТерминалНачало(ПараметрДействия)
СуммаОперации = ПараметрДействия.СуммаОперации;
ВыбраннаяСтрока = ВидыОплат.НайтиПоИдентификатору(ПараметрДействия.ИдентификаторВыбраннойСтроки);
Если ВыбраннаяСтрока = Неопределено Тогда
Возврат;
КонецЕсли;
ПараметрДействия.Вставить("СтрокаСлипЧека", "");
ПараметрДействия.Вставить("НомерСсылкиОперации", "");
ПараметрДействия.Вставить("НомерЧекаЭТ", "");
Если НЕ ПараметрДействия.ИспользоватьБезПодключенияОборудования Тогда
ПараметрыОперации = ОборудованиеПлатежныеСистемыКлиентСервер.ПараметрыВыполненияЭквайринговойОперации();
ПараметрыОперации.ТипТранзакции = "AuthorizeRefund";
ПараметрыОперации.СуммаОперации = СуммаОперации;
ПараметрыОперации.НомерЧека = " ";
ЭтаФорма.Доступность = Ложь;
Оповещение = Новый ОписаниеОповещения("ЗавершитьВозвратПлатежнойКартойЧерезЭквайринговыйТерминалЗавершение", ЭтотОбъект, ПараметрДействия);
ОборудованиеПлатежныеСистемыКлиент.НачатьВыполнениеОперацииНаЭквайринговомТерминале(Оповещение, УникальныйИдентификатор,
ПараметрДействия.ИдентификаторУстройстваЭТ, ПараметрыОперации, Неопределено, ПараметрДействия.ИдентификаторУстройстваФР);
Иначе
ТекстИнформации = НСтр("ru = 'Требуется выполнить операцию возврата оплаты на эквайринговом терминале.'") + Символы.ПС;
ТекстИнформации = ТекстИнформации + НСтр("ru = 'Сумма операции:'") + " "+ СуммаОперации + Символы.ПС;
ТекстИнформации = ТекстИнформации;
ЗаголовокИнформации = НСтр("ru = 'Операция возврата оплаты на терминале прошла успешно?'");
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("ПараметрДействия", ПараметрДействия);
Показать
в параметры терминала будут переданы
ПараметрДействия.СуммаОперации; - сумму будет
ПараметрДействия.НомерСсылкиОперации = ""; тут будет - пусто
ПараметрыОперации.НомерЧека = " "; тут будет - пусто
Через администратора в эквайринговых операциях при заполнении номера ссылки,чека и суммы - команда на терминал идет, возврат проходит.
Мой первый вопрос здесь, помогите куда копать) Спасибо.
В режиме РМК при возврате не передается НомерЧекаЭТ - ( номер чека оригинальной транзакции )
У отдельных банков есть требование к параметрам при выполнении операции возврата ( аля контроль 115 ФЗ) - это RRN ( ссылочный номер ), Номер карты ( должна совпадать) , Код авторизации ( номер чека ЭТ). Если какой то параметр не совпал или не заполнен.. то произойдет ошибка при выполнения операции на терминале ( в 1С драйвер не возвращает ее) ее можно увидеть в логе драйвера Инпас
Как решить? Два варианта
1.Запросить в банке оставить контроль только по RRN ( ссылочному номеру).
2.Сделать расширение и передавать при возврате НомерЧекаЭТ ( код авторизации) оригинальной транзакции
(10) Так при возврате ведь на терминал даже сумма не передается, чтобы приложить карту. Тех. поддержка банка в логах даже не видит обращение к терминалу при возврате.
(10) И еще момент хотел бы уточнить, вы говорите что это не передается в режиме РМК, значит ли это, что если попробовать сделать возврат из чека, используя "на основании" - чек возврата, то всё должно пройти?
&НаКлиенте
Процедура ЗавершитьВозвратПлатежнойКартойЧерезЭквайринговыйТерминалНачало(ПараметрДействия)
СуммаОперации = ПараметрДействия.СуммаОперации;
ВыбраннаяСтрока = ВидыОплат.НайтиПоИдентификатору(ПараметрДействия.ИдентификаторВыбраннойСтроки);
Если ВыбраннаяСтрока = Неопределено Тогда
Возврат;
КонецЕсли;
ПараметрДействия.Вставить("СтрокаСлипЧека", "");
ПараметрДействия.Вставить("НомерСсылкиОперации", "");
ПараметрДействия.Вставить("НомерЧекаЭТ", "");
Если НЕ ПараметрДействия.ИспользоватьБезПодключенияОборудования Тогда
ПараметрыОперации = ОборудованиеПлатежныеСистемыКлиентСервер.ПараметрыВыполненияЭквайринговойОперации();
ПараметрыОперации.ТипТранзакции = "AuthorizeRefund";
ПараметрыОперации.СуммаОперации = СуммаОперации;
ПараметрыОперации.НомерЧека = " ";
ЭтаФорма.Доступность = Ложь;
Оповещение = Новый ОписаниеОповещения("ЗавершитьВозвратПлатежнойКартойЧерезЭквайринговыйТерминалЗавершение", ЭтотОбъект, ПараметрДействия);
ОборудованиеПлатежныеСистемыКлиент.НачатьВыполнениеОперацииНаЭквайринговомТерминале(Оповещение, УникальныйИдентификатор,
ПараметрДействия.ИдентификаторУстройстваЭТ, ПараметрыОперации, Неопределено, ПараметрДействия.ИдентификаторУстройстваФР);
Иначе
ТекстИнформации = НСтр("ru = 'Требуется выполнить операцию возврата оплаты на эквайринговом терминале.'") + Символы.ПС;
ТекстИнформации = ТекстИнформации + НСтр("ru = 'Сумма операции:'") + " "+ СуммаОперации + Символы.ПС;
ТекстИнформации = ТекстИнформации;
ЗаголовокИнформации = НСтр("ru = 'Операция возврата оплаты на терминале прошла успешно?'");
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("ПараметрДействия", ПараметрДействия);
Показать
в параметры терминала будут переданы
ПараметрДействия.СуммаОперации; - сумму будет
ПараметрДействия.НомерСсылкиОперации = ""; тут будет - пусто
ПараметрыОперации.НомерЧека = " "; тут будет - пусто