Репозиторий с макросервисом RBK.money 3D Secure Server для запуска внутри Docker
Directory Server = DS
3D Secure Server = 3DSS
docker-compose up -d
Запуск макросервиса полностью автоматизирован и производится внутри докера, образ скачивается напрямую из репозитория rbkmoney
на Docker Hub
Обращаем внимание, для корректного демо RBK.money 3D Secure Server порядок запуска:
docker-compose.yml
three-ds-server macroservice (сам макросервис 3DSS)docker-compose.yml
ds-simple-mock (пример сервиса, который может быть использован в качестве заглушки для обработкиPReq
&&AReq
запросов в DS отмакросервиса 3DSS
)docker-compose.yml
pseudo-schedulator (пример сервиса, который может быть использован в качестве заглушки для инциализацииPReq/PRes flow
вмакросервис 3DSS
)
Если запуск будет произведен корректно, то по задумке автора в качестве финального результата в логах должны быть записи об успешной записи карточных диапазонов в хранилище
Макросервис 3DSS
имплементирует требование по спецификации EMVCo
к 3D Secure
взаимодействию, поддерживает только аутентификацию из вебсайта (Browser-based
)
Подробнее — ЗДЕСЬ
Макросервис 3DSS
является клиентом для DS
, и использует DS
при выполенении запросов, обозначенных спецификацей EMVCo
(ссылка ниже), поэтому для корректной работы 3DSS
необходима настройка обоих доменов (сервисов)
При запуске макросервиса 3DSS
должен выполнить запрос на обновление карточных диапазонов PReq/PRes flow
, поэтому перед запуском макросервиса 3DSS
необходимо убедиться, что есть доступ к активному DS
, который готов принимать HTTP запросы
В этом репозитории находится ds-simple-mock, который может быть использован в качестве заглушки для обработки PReq
&& AReq
запросов в DS
от макросервиса 3DSS
)
Подробнее — ЗДЕСЬ
При запуске 3DSS
кто то должен выполнить запрос на обновление карточных диапазонов PReq/PRes flow
, поэтому перед запуском макросервиса 3DSS
необходимо убедиться, что подобный сервис имплементирован и готов выполнять запросы по инициализации PReq/PRes flow
в соотвествии с требованиями спецификации EMVCo
(то есть минимальный интервал между запросами — 1 час, максимальный — 24 часа)
Более детальное описание процесса — ЗДЕСЬ -> 5.6 PReq/PRes Message Handling Requirements (page 119)
В этом репозитории находится pseudo-schedulator, который может быть использован в качестве заглушки для инциализации PReq/PRes flow
в макросервис 3DSS
Подробнее — ЗДЕСЬ
На данный момент сервис поддерживает обработку 3 провайдеров {providerId}
— visa
, mastercard
, mir
- Указать в директории cert ключи
mir.p12
,visa.p12
,mastercard.p12
, которые используются3DSS
для соединения сDS
(для примера в директории нахадится тестовый сертификат)
Ключи будут использоваться параметром:
client.ds.ssl.{providerId}.trust-store: file:/opt/three-ds-server/cert/test.p12
Указать пароли для ключей:
client.ds.ssl.{providerId}.trust-store-password: {{password}}
Изменить (при необходимости) volume
volumes:
- ./three-ds-server/cert:/opt/three-ds-server/cert/:ro
- Указать адрес
DS
для каждого{providerId}
environment.{providerId}.ds-url: http://ds:8081/{providerId}/DS2/authenticate
- Настройка расписания для обновления карточных диапазонов
3DS Preparation Flow
В этом репозитории находится pseudo-schedulator, который может быть использован в качестве заглушки для инциализации PReq/PRes flow
в макросервис 3DSS
Подробнее — ЗДЕСЬ
Лучше пишите собственную импементацию
Cтандартная имплементация через rbkmoney-schedulator выключена (параметрrbkmoney-preparation-flow.scheduler.enabled: "false"
) (данный сервис тянет за собой каскад других rbkmoney сервисов, поэтому это выходит за рамки данной демонстрации)
Для теста в 3DSS
посылаются 2 запроса, у одного "acctNumber": "2201010000000000"
, у второго "acctNumber": "4012000000001001"
В данном тесте в качестве сервиса DS
используется собственный мок-сервис ds-simple-mock
3DSS
(с помощью мок-сервиса DS
) настроен так, что "acctNumber": "2201010000000000"
ассоциирует с mastercard
, "acctNumber": "4012000000001001"
ассоциирует с visa
, и отправляет запрос в соотвествующий DS
(mir
также поддерживается для запросов)