Описание процесса

Ваша компания разрабатывает интернет-магазин. Пользователи вашего магазина могут:

Для оплаты заказа ваш магазин использует внешнего провайдера оплаты. Он предоставляет вам N аккаунтов. Вы обращаетесь к провайдеру по протоколу HTTP, передавая данные аккаунта и детали оплаты. Описание вызова провайдера оплаты

Первоначальная интеграция оплаты уже произведена - все настроено и ваш сервис умеет делать HTTP запрос к одному из аккаунтов. Вы можете увидеть необходимый код в пакете ru.quipy.payments , интерфейсах PaymentService , PaymentExternalSystemAdapter и их реализациях

Вам необходимо оптимизировать процесс взаимодействия с провайдером при большом количестве запросов, учитывая особенности аккаунтов и возможное поведение системы провайдера.

Термины предметной области

Клиентские приложения / Клиенты - сервис или набор сервисов, которые делают покупки в онлайн-магазине, инициируют процесс оплаты заказа.

Онлайн-магазин / Интернет-магазин / Магазин - сервис, который осуществляет управление логикой создания заказов и оплаты через внешнего провайдера. Сервис, который вам предстоит дорабатывать.

Провайдер оплаты - внешний сервис, через который осуществляется оплата заказа

Аккаунт провайдера оплаты - логическая сущность, которая позволяет идентифицировать пользователя и его тариф. Стоит относиться к каждому аккаунту как к отдельному внешнему сервису со своим поведением.

Untitled

Кейсы

Каждое задание-кейс предоставляет вам следующие входные данные / контекст:

  1. Один или более аккаунтов провайдера оплаты
  2. Оплаты должна завершиться менее чем за T секунд, тогда пользователь магазина считает ее успешной
  3. Параметры для запуска тестирования

Цели

Извлечь максимальную финансовую выгоду для онлайн-магазина, оплачивая максимальное количество заказов.