Проект реализует proxy-сервер для взаимодействия между мобильным приложением (клиентом) и системой Payneteasy payment gateway (PPG) при осуществлении переводов денежных средств с карты на карту.
Взаимодействие происходит следующим образом:
- Клиент отправляет запрос на proxy-сервер на получение токена (в дальнейшем он будет передаваться в других запросах)
- Proxy-сервер генерирует случайный токен, привязанный к конкретному клиенту и возвращает его клиенту
- Клиент отправляет запрос на proxy-сервер для иницировании транзакции.
- Proxy-сервер на основании данных о транзакции возвращает набор конфигурационных данных для осуществления перевода в системе PPG
- Клиент отправляет запрос в систему PPG на осуществление перевода.
- Система PPG отправляет запрос на proxy-сервер для проверки соответствия данных транзакции тем, которые были переданы клиентом на proxy-сервер в п.3
- В случае успешной проверки система PPG инициирует собственно перевод средств
В зависимости от настроек системы точная последовательность шагов при проведении транзакции может отличатся, например, используется или нет технология 3d-Secure. Подробнее о протоколе обмена данными см. документацию
Для сборки проекта используется утилита gradle.
Проект разделен на следующие модули:
- paynet-transfer-merchant-proxy-db - создание и обновление базы данных
- paynet-transfer-merchant-proxy-web - web-приложение, реализующее обработку запросов от клиента и PPG
- paynet-transfer-merchant-proxy-web-integration-test - интеграционные тесты для web-приложения
Для запуска системы (а также тестов) необходимо, чтобы были заданы следующие переменные окружения:
- MERCHANT_PROXY_ENDPOINT_ID - идентификатор точки доступа. Для тестов может быть любым числом, например, 111, для рабочей системы предоставляется при интеграции с PPG
- MERCHANT_PROXY_CONTROL_KEY - ключ для подписывания запросов. Для тестов может быть, например ABCD, для рабочей системы предоставляется при интеграции с PPG
Перед сборкой проекта (запуском тестов) необходимо создать базу данных. В данном случае используется файловая база данных h2db, т.е. отдельной установки сервера БД не требуется.
cd paynet-transfer-merchant-proxy-db ; ../gradlew flywayMigrate ; cd ..
Для сборки проекта и запуска тестов необходимо выполнить команды:
cd paynet-transfer-merchant-proxy-web ; ../gradlew clean build ; cd ..
При сборку создается файл paynet-merchant-proxy-web/target/libs/ROOT.war. Для запуска системы его необходимо развернуть на сервере приложений (в корневом контексте)
Для запуска интеграционных тестов необходимо выполнить команды:
cd paynet-transfer-merchant-proxy-web-integration-test ; ../gradlew clean build ; cd ..