An open API service indexing awesome lists of open source software.

https://github.com/payneteasy/paynet-transfer-merchant-proxy


https://github.com/payneteasy/paynet-transfer-merchant-proxy

Last synced: 8 months ago
JSON representation

Awesome Lists containing this project

README

          

# Общая информация
Проект реализует proxy-сервер для взаимодействия между мобильным приложением (клиентом) и системой **Payneteasy payment gateway (PPG)** при осуществлении переводов денежных средств с карты на карту.

Взаимодействие происходит следующим образом:
1. Клиент отправляет запрос на proxy-сервер на получение токена (в дальнейшем он будет передаваться в других запросах)
2. Proxy-сервер генерирует случайный токен, привязанный к конкретному клиенту и возвращает его клиенту
3. Клиент отправляет запрос на proxy-сервер для иницировании транзакции.
4. Proxy-сервер на основании данных о транзакции возвращает набор конфигурационных данных для осуществления перевода в системе PPG
5. Клиент отправляет запрос в систему PPG на осуществление перевода.
6. Система PPG отправляет запрос на proxy-сервер для проверки соответствия данных транзакции тем, которые были переданы клиентом на proxy-сервер в п.3
7. В случае успешной проверки система PPG инициирует собственно перевод средств

В зависимости от настроек системы точная последовательность шагов при проведении транзакции может отличатся, например, используется или нет технология 3d-Secure.
Подробнее о протоколе обмена данными см. [документацию](http://doc.payneteasy.com/card_np_API_mobile_index.html#money-transfer)

# Сборка проекта и запуск системы
Для сборки проекта используется утилита 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 ..