Описание API оплаты по QR-коду

Использование QR API

QR API - программный интерфейс для оплаты покупок по QR-коду.

В качестве транспорта использует HTTPS протокол. Сообщения кодируются в JSON формат.

Общие положения

Мобильное приложение взаимодействует с сервером по протоколу REST. Протокол REST односторонний, только клиент может сделать запрос к серверу и получить ответ. Сервер не может передать данные на клиента без запроса. Многие операции на сервере асинхронные. Для их выполнения используется идентификатор (deferredId), по которому можно будет получить результат. После выполнения асинхронного запроса и получения в ответ deferredId, клиент в цикле запрашивает результат операции до тех пор, пока не получит непустое значение, либо не произойдет тайм-аут.

Общее описание процесса оплаты

Процесс оплаты выглядит следующим образом:

  1. Касса отправляет чек в систему SWiP.

  2. Пользователь, используя приложение SWiP, сканирует QR-код и получает электронный пречек. 

  3. Пользователь подтверждает оплату.

  4. Касса получает от системы SWiP статус оплаты и закрывает чек.

  5. Пользователь забирает фискальный чек.

Сценарии использования

Регистрация

Действующие лица

Пользователь, Приложение

Описание

Регистрация нового пользователя.

Триггер

Желание пользователя оплачивать покупки бесконтактно.

Предусловия 

Пользователь установил приложение "SWiP" с Play Маркет или App Store на свой мобильный телефон и запустил его.

Цели

Осуществить успешную регистрацию.

Успешный сценарий:

  1. Пользователь просматривает инструкцию с функциями SWiP и нажимает "Начать". 

  2. Пользователь вводит номер телефона, на который будет выслано СМС с кодом для подтверждения. Ознакомляется и соглашается с Пользовательским соглашением SWiP, Правилами программы лояльности и Политикой в отношении обработки персональных данных, отмечает галочкой необходимый чекбокс и нажимает "Далее".

  3. Приложение отправляет код для подтверждения на указанный номер телефона.

  4. Пользователь вводит код, полученный по СМС.

  5. Пользователь придумывает ПИН-код для входа в приложение и повторяет его.

  6. Приложение отправляет ПИН-код на сервер. 

  7. Приложение показывает экран с предложением прикрепить банковскую карту, пользователь нажимает "Далее".

  8. Приложение показывает экран с предложением подключить функцию SELFIETOPAY, пользователь нажимает "Далее".

Результат

Пользователь успешно зарегистрировался в приложении SWiP.

Расширения:

Пользователь не ввел номер телефона. Отметил галочкой чекбоксы и нажал "Далее".

Результат: Приложение показывает сообщение: "Введите корректный номер телефона".

2b

Пользователь ввел номер телефона, отметил галочкой только одно соглашение.

Результат: Кнопка "Далее" отключена (неактивна).

4a

Пользователь не получил СМС. Нажимает "Отправить СМС ещё раз".

Результат: СМС будет отправлено повторно.

4b

Пользователь вернулся назад и нажал "Далее" до истечения 60 секунд.

Результат: Появляется сообщение о том, что лимит СМС исчерпан. Необходимо подождать 60 секунд.

4c

Пользователь ввел неверный код отправленный по СМС.

Результат: Приложение показывает сообщение: "Упс! Что-то пошло не так. Попробуйте повторить немного позже"

Пользователь вводит во второй раз неверный ПИН-код.

Результат: Приложение сообщает, что пароли не совпадают.

5b

Пользователь 3 раза подряд вводит неверный ПИН-код.

Результат: Переход на экран с номером телефона.

7a

Пользователь нажимает "Прикрепить".

Результат: Переход к сценарию "Прикрепление банковской карты".

8a

Пользователь нажимает "Подключить".

Результат: Переход к сценарию "Подключение функции SELFIETOPAY".

Прикрепление банковской карты

Действующие лица

Пользователь, Приложение, Система

Описание

Прикрепление банковской карты.

Триггер

Пользователь нажал "Прикрепить" на экране успешной регистрации или "Добавить карту" в профиле в разделе "Способ оплаты".

Предусловия 

Успешная регистрация пользователя.

Цели

Прикрепить банковскую карту для оплаты покупок сервисом SWiP.

Успешный сценарий:

  1. Пользователь вводит номер карты, срок действия карты, код CVC, имя и фамилию владельца  и нажимает "Далее".

  2. Приложение переходит на веб-страницу банка для подтверждения операции.

  3. Пользователь вводит пароль для подтверждения операции из СМС.

  4. Система временно блокирует 1 рубль на указанной карте и привязывает карту к аккаунту пользователя. Через некоторое время блокировка суммы снимается эмитентом карты.

  5. Пользователь видит на экране сообщение "Карта добавлена".

Результат

Банковская карта успешно прикреплена.

Расширения:

1a

Пользователь неверно ввел номер карты и нажал "Далее".

Результат: Приложение показывает сообщение "Не удалось добавить карту: Некорректный номер карты."

1b

Пользователь неверно ввел данные и нажал "Далее".

Результат: Система переходит на веб-страницу банка и показывает сообщение: "Операция отклонена. Необходимо обратиться в банк, выпустивший карту".

Пользователь сканирует карту.

Результат: Номер карты вводится автоматически. Пользователь вводит срок действия карты, код CVC, имя и фамилию владельца нажимает "Далее".

3a

Пользователь не успел ввести пароль.

Результат: Повторная отправка СМС.

4a

Система не смогла списать 1 рубль (недостаточно средств на карте).

Результат: Появляется сообщение "Операция отклонена. Проверьте введенные данные, достаточность средств на карте и повторите операцию". 

Удаление банковской карты

Действующие лица

Пользователь, Приложение

Описание

Удаление банковской карты.

Триггер

Пользователь хочет удалить банковскую карту.

Предусловия 

Банковская карта была прикреплена.

Цели

Банковская карта успешно удалена.

Успешный сценарий:

  1. Пользователь заходит в профиль в раздел "Способы оплаты", нажимает иконку "Детали" возле необходимой карты. Затем нажимает "Удалить".

  2. Приложение удаляет банковскую карту из системы.

Результат

Банковская карта успешно удалена.

Расширения:

1a

Пользователь заходит в профиль в раздел "Способы оплаты" и проводит, не отрывая пальца, справа налево по необходимой карте (iOS).

Результат: Переход к шагу 2.

Оплата по QR-коду

Действующие лица

Пользователь, Приложение, Система

Описание

Оплата покупки по QR-коду.

Триггер

Пользователь сообщает, что будет расплачиваться сервисом SWiP.

Предусловия 

Регистрация пользователя и прикрепление банковской карты.

Цели

Произвести оплату покупки по QR-коду.

Успешный сценарий:

  1. Касса создает заказ в системе SWiP.

  2. Пользователь нажимает на значок "Рубль".

  3. Приложение запрашивает разрешение на доступ к камере.

  4. Пользователь дает разрешение на доступ к камере.

  5. Пользователь сканирует QR-код, используя приложение SWiP.

  6. Приложение выводит на экран электронный пречек.
    Информация в пречеке:

    • Товары (наименования товара, количество товара, сумма, скидка, сумма чека);

    • ФИО кассира и номер пречека;

    • 4 последние цифры карты, с которой будет произведена оплата.

  7. Пользователь ознакомляется с пречеком и нажимает "Оплатить".

  8. Система проводит оплату.

  9. Пользователю предлагается оценить сервис.

Результат

Пользователь успешно оплатил покупку по QR-коду.

Расширения:

1a

Касса ещё не создала заказ в системе SWiP и пользователь сканировал QR-код.

Результат: Пользователь видит ошибку и нажимает "Ок". После этого пользователь возвращается на экран со сканером QR-кода и нажимает "Повторное сканирование".
Переход к шагу 5.

2a

Пользователь нажимает на значок QR-кода на экране.

Результат: На экране генерируется QR-код, который необходимо поднести к 2D-сканеру на кассе.
Переход к шагу 6.

7a

Пользователь не нажал "Оплатить" в установленный тайм-аут.

Результат: Касса сбрасывает заказ.
Переход к шагу 1. 

8a

Система не может провести оплату (нет денег, недоступен банк, нет интернет-соединения).

Результат: Касса проводит отмену платежа. Пользователь оплачивает банковской картой или наличными.