Дисконтно-бонусная карта, далее карта – это идентификатор покупателя в процессинге, с которым взаимодействует модуль менеджера оплат с индексом PayType.
Работа с картами производится в несколько этапов:
1. Получение информации о карте (процент скидки и остаток средств) и применение скидки к чеку.
2. Списание средств с карты 1) – Оплата.
3. Учет покупки в процессинге.
Выполняется функция GetDiscountCardInfo. В случае успешного выполнения модифицируются свойства Amount и Discount, содержащие остаток на карте и процент скидки по карте соответственно.
Если МенеджерОплат.GetDiscountCardInfo() = 1 Тогда ПроцентСкидки = МенеджерОплат.Discount / 100; СуммаБонусовНаКарте = МенеджерОплат.Amount / 100; Если ПроцентСкидки <> 0 Тогда ПрименитьСкидку(ПроцентСкидки); КонецЕсли; КонецЕсли;
Перед закрытием кассового чека требуется сообщить процессигру о том, что чек закрывается с использованием карты. Рекомендуется выполнять эту операция непосредственно перед закрытием чека в ККМ. При успешном закрытии чека в ККМ, при необходимости, производится операция подтверждения. При не успешном закрытии чека в ККМ производится отмена операции.
Учёт покупки:
МенеджерОплат.PayType = МенеджерОплат.GetPayTypeIndex(Идентификатор); МенеджерОплат.CardNumber = Трэк2; МенеджерОплат.CardInputType = 0; МенеджерОплат.Amount = ИтогЧека * 100; МенеджерОплат.CashNumber = НомерКассы; МенеджерОплат.CheckNumber = НомерЧека; МенеджерОплат.DiscountAmount = СуммаСкидки * 100; Результат = МенеджерОплат.CorrectDiscountCard();
Если результат «0», продолжать дальнейшее закрытие чека не рекомендуется. Если результат «1», запоминаются свойства AuthCode и RRN. Их значения могут потребоваться вдальнейшем.
Подтверждение:
МенеджерОплат.CardNumber = Трэк2; МенеджерОплат.CardInputType = 0; МенеджерОплат.CashNumber = НомерКасы; МенеджерОплат.CheckNumber = НомерЧека; МенеджерОплат.AuthCode = AuthCode; МенеджерОплат.RRN = RRN; МенеджерОплат.Amount = ИтогЧека * 100; МенеджерОплат.DiscountAmount = СуммаСкидки * 100; Результат = МенеджерОплат.Commit();
Выполнение сценария продолжается независимо от результата. Но в случае результата равного «0», рекомендуется сообщить кассиру об ошибке.
Отмена опрерации:
Если операция «Учёт покупки» выполнилась и не трабует подтверждения, а чек в ККМ не закрылся, необходимо отменить операцию учёта покупки. В зависимости от возможностей процессинга выполняется либо метод CancelLastTransaction, либо выполняется операция «Учёт покупки», но с отрицательной суммой.