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