Использование
Описание процесса верификации карты лояльности на кассе при оплате через сервис Koshelek Pay.
Сценарий предъявления карты лояльности с участием модуля Koshelek TOTP
Диаграмма взаимодействия участников при предъявлении карты лояльности на кассе ТСП:
Предварительные условия
Для выполнения основного сценария необходимо выполнение следующих предварительных условий:
- На стороне кассового сервера кассы развёрнут модуль Koshelek TOTP.
- На стороне кассового сервера реализована поддержка предварительно согласованных с Кошельком значений параметров конфигурации модуля (см. Установка и конфигурирование).
- На стороне кассового сервера выполнена инициализация библиотеки Passcode Verify (вызван метод
init()
, в котором переданы обязательные параметры конфигурации). - На стороне кассы реализована обработка ответов, которые возвращает модуль Koshelek TOTP в ответ на запрос метода
barcodeVerify()
. - На сервере Кошелька осуществлена настройка сервисов для осуществления взаимодействия с ритейлером.
Основной сценарий
Info
Информация о методах, указанных в сценарии, приведена ниже, в разделе «Описание методов библиотеки Passcode Verify для оплаты через Koshelek Pay».
- Пользователь открывает карту лояльности сети ритейлера в Кошельке.
- Кошелёк запрашивает данные для отображения данных карты (содержит штрихкод TOTP).
- Кошелёк отображает данные карты лояльности.
- Кассир сканирует штрихкод (ШК) карты лояльности.
- Касса обрабатывает считанный ШК.
- Касса передаёт строковый параметр, соответствующий считанному ШК (
fullBarcode
), модулю Koshelek TOTP на кассовом сервере в качестве входного параметра для вызова методаbarcodeVerify()
библиотеки Passcode Verify. - Модуль Koshelek TOTP на кассовом сервере анализирует полноту ШК и выделяет из полученного значения
fullBarcode
префикс, номер карты лояльности, сессию предъявления карты (cardSession
), парольную часть TOTP — все ожидаемые модулем параметры присутствуют в ШК. - Модуль Koshelek TOTP на кассовом сервере проверяет:
- действительность парольной части TOTP на основе префикса и номера карты лояльности;
- доступность операций по карте лояльности (списание / начисление бонусов);
- возможность дальнейшей оплаты с помощью Koshelek Pay.
- Модуль Koshelek TOTP на кассовом сервере возвращает кассе ответ, содержащий параметры:
- Код ответа (
resultCode
=CARDSESSION_AVAILABLE
) - Успешный результат валидации (
totpCodeValid
=true
) - Номер карты лояльности (
cardNumber
) - Сессия карты (
cardSession
) - Полное значение ШК (
fullBarcode
)
- Код ответа (
- Касса обрабатывает успешный результат валидации и временно сохраняет значение сессии предъявления карты
cardSession
. - Кассир предлагает пользователю оплату через Koshelek Pay.
- Пользователь подтверждает оплату через Koshelek Pay.
- Касса формирует запрос инициализации платежа для отправки методов POST
/availability-info/task
, POST/checkout
, POST/refund
и временно сохраняет его. - Касса передаёт JSON тела запроса в качестве строкового параметра
requestData
модулю Koshelek TOTP на кассовом сервере в качестве входного параметра для вызова методаgetToken()
библиотеки Passcode Verify. - Кассовый модуль Koshelek TOTP на сервере кассы получает строковый параметр
requestData
. - Модуль Koshelek TOTP на кассовом сервере осуществляет необходимые преобразования для получения токена (
token
) для последующих действий. - Модуль Koshelek TOTP на кассовом сервере возвращает кассе параметр
token
. - Касса отправляет запросы POST
/availability-info/task
, POST/checkout
, POST/refund
на сервер Кошелька. В качестве заголовка передается параметрtoken
. - Сервер Кошелька получает и обрабатывает полученный заголовок и данные запроса.
- Сервер Кошелька осуществляет валидацию полученных данных.
- Сервер Кошелька возвращает кассе успешный ответ и формирует пречек для отправки в приложение в соответствии со сценарием оплаты с помощью Koshelek Pay.
- Дальнейший сценарий на кассе осуществляется в соответствии со сценарием проведения транзакции на кассе с помощью Koshelek Pay (см. Обзор сценариев API).
Альтернативные сценарии
Ниже описывается ожидаемое поведение модуля TOTP и кассового ПО в различных случаях отклонения сценария от основной последовательности.
Шаг 7 основного сценария: в ШК карты лояльности не содержится префикс или его значение отличается от значения, заявленного в конфигурации: источник предъявления карты не Кошелёк
- Модуль Koshelek TOTP на кассовом сервере возвращает кассе ответ, содержащий:
- Код ответа (
resultCode
=ANOTHER_INSTANCE
). - Неуспешный результат валидации (
totpCodeValid
=false
). - Номер карты лояльности отсутствует (
cardNumber
=null
). - Сессия карты отсутствует (
cardSession
=null
). - Полное значение ШК (
fullBarcode
).
- Код ответа (
- Касса обрабатывает ответ модуля.
- Сценарий на кассе осуществляется по схеме без списания / начисления бонусов, без использования функциональности оплаты через Koshelek Pay с учётом, что источник предъявления карты — не Кошелёк.
Шаг 7 основного сценария: карта лояльности действительна, но в ШК карты не содержится сессия предъявления карты cardSession
: функциональность Koshelek Pay недоступна
- Модуль Koshelek TOTP проверяет действительность парольной части TOTP: пароль действителен.
- Модуль Koshelek TOTP возвращает кассе ответ, содержащий:
- Код ответа (
resultCode
=CARDSESSION_NOT_AVAILABLE
) - Успешный результат валидации (
totpCodeValid
=true
) - Номер карты лояльности (
cardNumber
) - Указание на отсутствие сессии карты (
cardSession
=null
) - Полное значение ШК (
fullBarcode
)
- Код ответа (
- Касса обрабатывает ответ модуля.
- Сценарий на кассе осуществляется по стандартной схеме списания / начисления бонусов, без использования функциональности оплаты через Koshelek Pay.
Шаг 7 основного сценария: карта лояльности недействительна: ошибка списания / начисления бонусов, отсутствие дальнейших действий с участием карты
- Модуль Koshelek TOTP проверяет действительность парольной части TOTP: пароль недействителен.
- Модуль Koshelek TOTP возвращает кассе ответ, содержащий:
- Код ответа (
resultCode
=VALIDATION_FAILED
) - Неуспешный результат валидации (
totpCodeValid
=false
) - Номер карты лояльности (
cardNumber
) - Указание на отсутствие сессии карты (
cardSession
=null
) - Полное значение ШК (
fullBarcode
)
- Код ответа (
- Касса обрабатывает ответ модуля.
- Касса выводит в интерфейс сообщение об ошибке.
- Кассир сообщает о невозможности начислить / списать бонусы, а также совершить дальнейшие действия с картой.
Шаг 8 основного сценария: карта лояльности недействительна: ошибка списания / начисления бонусов, отсутствие дальнейших действий с участием карты
Сценарий полностью соответствует предыдущему.
Шаг 21 основного сценария: значение токена, полученное в заголовке запроса от кассы, недействительно: отсутствие дальнейших действий с участием карты
- Сервер Кошелька проанализировал и установил, что полученный
token
в заголовке запроса POST/availability-info/task
, POST/checkout
, POST/refund
недействителен. - Сервер Кошелька возвращает кассе ошибку.
- Касса обрабатывает ошибку.
- Кассир сообщает о невозможности совершить дальнейшие действия с картой.
Описание методов библиотеки Passcode Verify для оплаты через Koshelek Pay
Info
Названия методов и параметров могут незначительно отличаться в зависимости от формата библиотеки.
init()
Инициализация библиотеки.
Входные параметры
Параметр | Тип данных | Обязательно | Описание |
---|---|---|---|
algorythm |
String | Да | Используемый алгоритм шифрования. Возможные значения:HMACSHA256 HMACSHA1 |
passLength |
Int | Да | Число символов одноразового пароля. Максимальное значение: 10 . |
prefix |
String | Да | Префикс штрихкода (по умолчанию всегда CM ). |
key |
String | Да | Секретный ключ партнера (HEX String), нужен для формирования пароля. |
interval |
Int | Да | Интервал (в секундах), в рамках которого одноразовый пароль считается действительным. |
cardSessionLength |
Int | Да | Количество символов параметра cardSession . |
delimeter |
String | Да | Разделитель между составляющими штрихкода. |
Выходные параметры
Отсутствуют.
barcodeVerify()
Верификация штрихкода.
Входные параметры
Параметр | Тип данных | Обязательно | Описание |
---|---|---|---|
fullBarcode |
String | Да | Значение штрихкода. |
Выходные параметры
Параметр | Тип данных | Обязательно | Описание |
---|---|---|---|
resultCode |
String | Да | Возможные значения в зависимости от сценария:CARDSESSION_AVAILABLE ANOTHER_INSTANCE CARDSESSION_NOT_AVAILABLE VALIDATION_FAILED |
totpCodeValid |
Boolean | См. Описание → |
|
cardNumber |
String | См. Описание → |
|
cardSession |
String | См. Описание → |
|
fullBarcode |
String | Да | Значение штрихкода, полученное библиотекой от сканера кассы. |
getToken()
Получение токена.
Входные параметры
Параметр | Тип данных | Обязательно | Описание |
---|---|---|---|
requestData |
String | Да | Строка, содержащая JSON тела ответа запроса POST /checkout . |
Выходные параметры
Параметр | Тип данных | Обязательно | Описание |
---|---|---|---|
token |
String | Да | Токен для передачи в качестве заголовка запроса POST /checkout . |