Backend система оплаты через QR коды. Программное обеспечение, которое позволяет клиенту проводить оплату по средством сканирования QR кода.
Основными задачами такой системы будут являться предоставление пользователю разных вариантов оплаты (разные банки, криптовалюты и т.д.), обеспечение безопасности пользовательских данных, обеспечение производительности.
Цели безопасности:
-
При любых обстоятельствах только авторизованный пользователь имеет доступ к своей конфиденциальной информации.
-
При любых обстоятельствах проводятся только аутентичные и авторизованные операции.
Предположения безопасности:
-
Аутентичное средство оплаты благонадёжно и выполняет возлагаемую на него логику.
-
Продавец и покупатель договорились о проведении операции.
Как продавец, так и покупатель взаимодействуют с сервисом по определённым сценариям, также сервис интегрируется к интерфейсам банков для проведения оплаты
Компоненты:
-
Генератор QR кодов - генерирует QR коды для продавца в соответствии с передаваемой информацией (фронтенд, который мы не реализовываем, но в схеме он необходим)
-
Сканер QR кодов - Получает QR код, достаёт нужную информацию оттуда (фронтенд, который мы не реализовываем, но в схеме он необходим)
-
Transaction - сервис, который хранит и работает с транзакциями. Дополнительно проверяет корректность статуса транзакции после Payment getaway
-
User - сервис, который обрабатывает и хранит пользовательскую информацию
-
Payment gateway - сервис, работающий с клиентами платежных систем. Получает приватные данные в зашифрованном виде и затем дешифрует, такой подход необходим для сохранения конфиденциальности пользователей
Базовый сценарий:
Негативный сценарий 1:
Компрометация клиента, отправляющего деньги – ЦБ 1 2 3 нарушены
Негативный сценарий 2:
Компрометация клиента, запрашивающего транзакцию – ЦБ 1 2 3 нарушены
Негативный сценарий 3:
Компрометация getaway – ЦБ 1 и 3 нарушены
Тест 1 - успешный сценарий:
- Запускается скрип заполняющий бд информацией о пользователях(сами ничего не создаём)
- Авторизируем продавца, получаем токен
- Создаём транзакцию с аккаунта продавца 4.Проверяем статус транзакции("created")
- Авторизируем покупателя, получаем токен
- Принимаем транзакцию за покупателя
- Проверяем статус транзакции("accept")
Тест 2 - отмена транзакции:
- Запускается скрип заполняющий бд информацией о пользователях(сами ничего не создаём)
- Авторизируем продавца, получаем токен
- Создаём транзакцию с аккаунта продавца 4.Проверяем статус транзакции("created")
- Отменяем транзакцию 6.Проверяем статус транзакции("cancelled")
https://docs.google.com/spreadsheets/d/1NFYdzP-s8rPzLp-JMxeqExbYZbgCdgFmjBpAcQE9rN4/edit?usp=sharing
https://drive.google.com/file/d/1bpc8uGlBVr7oEz4GABSWPcLvyC-9ss_e/view?usp=sharing