Модуль Кошелёк TOTP

Документация перемещена

Информация на этой странице не обновляется и может быть устаревшей. Наиболее полная и актуальная версия документации для разработчиков доступна по новому адресу:

https://developers.koshelek.app

Общие сведения

Модуль Кошелёк TOTP реализует механизм аутентификации (проверки подлинности) мобильных карт лояльности при их предъявлении на кассе с экрана смартфона в приложении «Кошелёк» при транзакции оплаты через Кошелёк Pay.

Назначение модуля и механизм аутентификации

Для аутентификации карты в системе ритейлера, а также для идентификации возможности осуществления транзакции с помощью Кошелёк Pay используется механизм Time-Based One Time Password (TOTP):

  1. При предъявлении карты Кошелёк формирует одноразовый временный пароль на основе префикса и номера карты.

  2. Временный пароль выводится на экран Кошелька вместе с номером карты в формате штрихкода (ШК).

  3. Кассовое ПО считывает ШК, который затем проверяется в инфраструктуре ритейлера.

Если ранее ритейлер взаимодействовал с Кошельком для аутентификации карт без применения оплаты с помощью Кошелёк Pay, модуль Кошелёк TOTP обеспечивает обратную совместимость для карт лояльности, для которых доступна только аутентификация (проверка безопасного предъявления) без функциональности Кошелёк Pay (например, для случая, если ШК карты предъявляется из устаревшей версии приложения).

Также модуль осуществляет формирование секретного токена, который ритейлер передает на сторону Кошелька вместе с запросом формирования пречека. Для осуществления оплаты с помощью Кошелёк Pay полученный токен должен быть действителен.

Таким образом, модуль решает следующие задачи:

  • Парсинг штрихкода карты лояльности, предъявляемой через Кошелёк.

  • Аутентификация пользователя в системе ритейлера.

  • Извлечение идентификатора лояльности.

  • Извлечение идентификатора сессии оплаты.

  • Контроль целостности и аутентичности запроса на оплату.

Пример штрихкода TOTP, формируемого приложением «Кошелёк» для оплаты с помощью Кошелёк Pay:

Если ТСП использует одномерные штрихкоды (например, формата code128), то максимальное значение любого штрихкода будет складываться из следующих данных:

  • prefix — префикс, не более 2-х символов (допустимы буквы латинского алфавита и цифры);

  • cardNumber — номер карты, не более 13 цифр при использовании префикса, или 16 цифр без использования префикса;

  • cardSession — код сессии предъявления карты, генерируется сервером, по умолчанию содержит 6 символов;

  • delimeter — разделитель, отделяет парольную часть TOTP;

  • TOTP password — парольная часть TOTP, 3 цифры (на основе конфигурации TOTP-профиля партнера).

Если длина номера карты и префикса (вместе) превышает указанные лимиты, ТСП необходимо использовать двумерные штрихкоды, т.к. одномерный штрихкод бóльшей длины не сможет быть корректно отображен на экранах смартфонов для его считывания сканером.

Last updated