xmlTSDGalery/CommonModules/ОборудованиеПлатежныеСистемыКлиентСервер/Ext/Module.bsl
kykaevv 88098aa86f Initial commit: конфигурация ТСД с обменом УНФ.
Включает перемещение по ячейкам, стикеровку МП, синхронизацию справочников и обработку кодов маркировки.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-01 12:50:57 +03:00

170 lines
15 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#Область ПрограммныйИнтерфейс
// Заполняет структуру параметров карты.
//
// Возвращаемое значение:
// Структура.
Функция ПараметрыКарты() Экспорт;
Результат = Новый Структура();
Результат.Вставить("ОтПоследнейОперации");
Результат.Вставить("НомерКарты"); // Строка - Маскированный номер карты.
Результат.Вставить("ХешНомерКарты"); // Строка - PAN карты хешированном по алгоритму SHA256 виде.
Результат.Вставить("ТипКарты"); // Строка - Тип карты (VISA,MasterCard).
Результат.Вставить("СвояКарта"); // Булево - Карта банка которые предоставляет услуги эквайринга.
Возврат Результат;
КонецФункции
// Заполняет структуру получение параметров карты.
//
// Возвращаемое значение:
// Структура.
//
Функция ПараметрыПолучениеПараметровКарты() Экспорт;
Результат = Новый Структура();
Результат.Вставить("ОтПоследнейОперации", Ложь);
Результат.Вставить("РеквизитыКартыQR"); // Строка,Необязательно - Отсканированный QR-код с мобильном устройства держателя карты, в котором содержатся EMV-реквизиты карты или токена.
Возврат Результат;
КонецФункции
// Заполняет структуру параметров выполнения эквайринговой операции.
//
// Возвращаемое значение:
// Структура.
//
Функция ПараметрыВыполненияЭквайринговойОперации() Экспорт;
Результат = Новый Структура();
Результат.Вставить("ДокументОснование");// Строка,Необязательно - ОпределяемыйТип.ОснованиеФискальнойОперацииБПО.
Результат.Вставить("ТипТранзакции"); // Строка,Обязательно - Тип транзакции.
Результат.Вставить("РеквизитыКартыQR"); // Строка,Необязательно - Отсканированный QR-код с мобильном устройства держателя карты, в котором содержатся EMV-реквизиты карты или токена.
Результат.Вставить("СуммаОперации", 0); // Число,Обязательно - Сумма операции.
Результат.Вставить("СуммаОригинальнойОперации", 0); // Число,Необязательно - Сумма оригинальной операции.
Результат.Вставить("СуммаНаличных", 0); // Число,Необязательно - Сумма выдаваемых наличных.
Результат.Вставить("НомерМерчанта"); // Целое,Необязательно - Номер мерчанта доступного для данного эквайрингового терминала.
Результат.Вставить("НомерКарты"); // Строка,Необязательно - Маскированный номер карты.
Результат.Вставить("НомерЧека"); // Строка,Необязательно - Номер чека.
Результат.Вставить("НомерЧекаЭТ"); // Строка,Необязательно - Номер чека эквайрингового терминала.
Результат.Вставить("СсылочныйНомер"); // Строка,Необязательно - Уникальный код транзакции RRN.
Результат.Вставить("КодАвторизации"); // Строка,Необязательно - Код авторизации транзакции.
Результат.Вставить("ТекстСлипЧека"); // Строка,Необязательно - Текст квитанции, сформированный Эквайринговым ПО.
Результат.Вставить("ИспользоватьБиометрию", Ложь); // Булево,Необязательно - Разрешено использовать биометрию для операции.
Результат.Вставить("ВидОплатыНаТерминалеКод", 0); // Число, Необязательно - Код вида оплаты на терминале.
Результат.Вставить("ВидОплатыНаТерминале"); // Перечисление.ВидОплатыНаТерминале, Необязательно - Вид оплаты на терминале.
// Параметры выполнения эквайринговой операции c электронным сертификатом.
Результат.Вставить("СуммаЭлектронногоСертификата", 0); // Число,Обязательно - Сумма операции за счет электронных сертификатов.
Результат.Вставить("СуммаСобственныхСредств" , 0); // Число,Обязательно - Сумма операции за счет собственных средств по карте.
Результат.Вставить("ИдентификаторКорзины"); // Строка,Необязательно - Передается Basket ID Уникальный идентификатор операции в ФЭС НСПК.
// Basket ID операции оплаты в ФЭС НСПК. Необходим для операции возврата без карты в рамках текущего операционного дня.
Результат.Вставить("ИдентификаторКорзиныОперацииОплаты"); // Строка,Необязательно - Basket ID операции оплаты в ФЭС НСПК.
Результат.Вставить("ИдентификаторЗапроса"); // Строка,Необязательно - Уникальный идентификатор запроса к эквайринговому терминалу.
Результат.Вставить("ИдентификаторФискальнойОперации"); // Строка,Необязательно - Уникальный идентификатор фискальной операции.
Результат.Вставить("ИспользоватьПечатающееУстройство", Истина); // Булево,Необязательно - определяет использование печатного устройства при выполнении фискальной операции.
// Расширение
Результат.Вставить("ХешНомерКарты"); // Строка,Необязательно - PAN карты хешированном по алгоритму SHA256 виде.
Возврат Результат;
КонецФункции
// Заполняет структуру параметров проведенной эквайринговой операции.
//
// Возвращаемое значение:
// Структура.
//
Функция ПараметрыПроведеннойЭквайринговойОперации() Экспорт;
Результат = Новый Структура();
Результат.Вставить("ТипТранзакции"); // Строка,Обязательно - Тип транзакции.
Результат.Вставить("НомерМерчанта"); // Целое,Необязательно - Номер мерчанта доступного для данного эквайрингового терминала.
Результат.Вставить("НомерКарты"); // Строка,Необязательно - Маскированный номер карты.
Результат.Вставить("ХешНомерКарты"); // Строка,Необязательно - Хеш номер карты.
Результат.Вставить("СуммаОперации", 0); // Число,Обязательно - Сумма операции.
Результат.Вставить("СуммаНаличных", 0); // Число,Необязательно - Сумма выдаваемых наличных.
Результат.Вставить("СуммаЭлектронногоСертификата", 0); // Число,Необязательно - Сумма операции за счет электронных сертификатов.
Результат.Вставить("СуммаСобственныхСредств" , 0); // Число,Необязательно - Сумма операции за счет собственных средств по карте.
Результат.Вставить("СсылочныйНомер"); // Строка,Необязательно - Ссылочный номер.
Результат.Вставить("КодАвторизации"); // Строка,Необязательно - Код авторизации.
Результат.Вставить("ДатаВремя"); // Дата,Необязательно - Дата и время инициализации транзакции, содержит локальную дату и время инициализации транзакции
Результат.Вставить("КодЗавершения"); // Число,Необязательно - Дополнительный код завершения операции.
Результат.Вставить("ИдентификаторПлатежнойСистемы"); // Строка,Необязательно - Уникальный идентификатор платежной системы, через которую проводилась операция.
Результат.Вставить("ИдентификаторБанковскойТранзакции"); // Строка,Необязательно - Уникальный идентификатор банковской транзакции, формируемый на стороне банка-эмитента.
Возврат Результат;
КонецФункции
// Проверяет, что QR-код в формате Base64-строки является Consumer-Presented QR
//
// Параметры:
// QRКод - Строка
//
// Возвращаемое значение:
// Булево
Функция ЭтоРеквизитыКартыQR(Знач QRКод) Экспорт
// Функциональные требования к терминально-кассовому модулю (POI) по обработке транзакции
// Проверка, что QR-код в формате Base64-строки начинается с «hQVDUFY» (индикатор версии и формата).
Результат = СтрНачинаетсяС(QRКод, "hQVDUFY"); //@NON-NLS-1 @NON-NLS-2
Возврат Результат;
КонецФункции
Функция ТипыПлатежнойСистемыККТ() Экспорт
Соответствие = Новый Соответствие();
Соответствие.Вставить("СистемаБыстрыхПлатежей" , ПредопределенноеЗначение("Перечисление.ТипыПлатежнойСистемыККТ.СистемаБыстрыхПлатежей"));
Соответствие.Вставить("СертификатНСПК" , ПредопределенноеЗначение("Перечисление.ТипыПлатежнойСистемыККТ.СертификатНСПК"));
Соответствие.Вставить("ЮКасса" , ПредопределенноеЗначение("Перечисление.ТипыПлатежнойСистемыККТ.ЮКасса"));
Возврат Соответствие;
КонецФункции
// Возвращает текст слип-чека по умолчанию
//
// Параметры:
// ПараметрыСлипЧека - Структура - Параметры слип чека:
// * КодАвторизации - Строка
// * НомерКарты - Строка
// * НомерЧекаЭТ - Строка
// * СсылочныйНомер - Строка
// * СуммаОперации - Число
// * ТекстСлипЧека - Строка
// КороткийСлипЧек - Булево - сформировать текст короткого слип-чека
//
// Возвращаемое значение:
// Строка - Текст слип чека
//
Функция ТекстСлипЧекаПоУмолчанию(ПараметрыСлипЧека, КороткийСлипЧек = Истина) Экспорт
Если ПараметрыСлипЧека.Результат Тогда
Текст = НСтр("ru = 'ПЛАТЕЖНАЯ ОПЕРАЦИЯ'") + Символы.ПС;
Текст = Текст + СтрШаблон(НСтр("ru = 'Код авторизации: %1'"), ПараметрыСлипЧека.КодАвторизации) + Символы.ПС;
Текст = Текст + СтрШаблон(НСтр("ru = 'Номер карты: %1'"), ПараметрыСлипЧека.НомерКарты) + Символы.ПС;
Текст = Текст + СтрШаблон(НСтр("ru = 'Номер чека ЭТ: %1'"), ПараметрыСлипЧека.НомерЧекаЭТ) + Символы.ПС;
Текст = Текст + СтрШаблон(НСтр("ru = 'Ссылочный номер: %1'"), ПараметрыСлипЧека.СсылочныйНомер) + Символы.ПС;
Если ПараметрыСлипЧека.Свойство("СуммаОперации") Тогда
Текст = Текст + СтрШаблон(НСтр("ru = 'Сумма: %1'"), ПараметрыСлипЧека.СуммаОперации) + Символы.ПС;
КонецЕсли;
Если Не КороткийСлипЧек И ПараметрыСлипЧека.Свойство("ТекстСлипЧека") Тогда
Текст = Текст + ПараметрыСлипЧека.ТекстСлипЧека;
КонецЕсли;
Иначе
Текст = НСтр("ru = 'ОПЕРАЦИЯ ОТКЛОНЕНА'") + Символы.ПС;
Текст = Текст + ПараметрыСлипЧека.ОписаниеОшибки;
КонецЕсли;
Возврат Текст;
КонецФункции
#КонецОбласти