Микросервис payment-orchestration
Микросервис payment-orchestration служит для управления оплатами заказов на сайте интернет-магазина.
Доступ к сервису предоставляется по запросу.
Логика работы 
В работе микросервиса участвуют следующие сущности:
- Payment (Оплата) - содержит данные об оплате: id оплаты, id заказа, статус оплаты, поставщик платежных услуг, id покупателя, сумма заказа, id валюты, в которой был оплачен заказ и др.
 - PaymentProviderInfo (Провайдер) - содержит название поставщика платежных услуг
 
Аутентификация 
Для работы с микросервисом для некоторых запросов необходимо в заголовке Authorization указывать токен: Authorization: Bearer <токен>.
Service context path 
/api/payment-orchestration/
Настройки и параметры конфигурации 
Параметры конфигурации указываются в Vault.
Vault используется на нашей платформе в качестве хранилища всех конфигураций развертывания. Инструмент может быть выбран другой.
      
{
  "env": {
    "JAVA_XMS": "XXm",
    "JAVA_XMX": "YYYm"
  }
}
    
    
      
//пример взят с тестового стенда
{
  "env": {
    "OAUTH_ECOM_CLIENT_ID": "токен_приложения_ECOM_OAuth",
    "OAUTH_ZITADEL_CLIENT_ID": "токен_приложения_Zitadel",
    "OAUTH_ZITADEL_ISSUER_URI": "url_Zitadel",
    "PAYMENT_PROVIDER_TEST_MODE": "активация_тестового_режима_для_провайдера_платежей",
    "YOOKASSA_SECRET_KEY": "ключ_для_аутентификации_в_API_YooKassa",
    "YOOKASSA_SHOP_ID": "id_продавца_для_аутентификации_в_API_YooKassa",
    "YOOKASSA_URL": "url_к_API_YooKassa"
  }
}
    
    
Отсутствуют.
      {
  "orderId": "8af7d13c-750f-4481-a689-b867653e519b",
  "providerName": "yoo_kassa",
  "returnUrl": "https://example.com/orders/8af7d13c-750f-4481-a689-b867653e519b"
}
    
      {
      "id": "99849a1e-372a-4863-99dc-f8946ca19374",
      "orderId": "8af7d13c-750f-4481-a689-b867653e519b",
      "status": "PENDING",
      "provider": "yoo_kassa",
      "customerId": "570d645c-3c7d-4d46-95cc-a040cf65d8d5",
      "externalId": "2e7b9246-000f-5000-a000-1dd4fcdfc3e7",
      "createdAt": "2024-09-17T13:05:10.421702Z",
      "amount": 950,
      "currencyId": "90e5fed1-1eaa-4e45-8574-b687605817fd",
      "confirmationType": "REDIRECT",
      "confirmationUrl": "https://yoomoney.ru/checkout/payments/v2/contract?orderId=2e7b9246-000f-5000-a000-1dd4fcdfc3e7"
    }
    
- 201 - операция выполнена успешно, оплата создана
 - 400 - ошибка, Bad Request
 - 401 - ошибка, Unauthorized
 - 403 - ошибка, Forbidden
 - 404 - ошибка, заказ с таким orderId не найден
 - 409 - ошибка, оплата для заказа с таким orderId уже есть
 - 500 - ошибка, Internal Server Error
 
- Синхронизация статуса оплаты - POST запрос, /v1/payments/sync-status
 
Отсутствуют.
      {
  "orderId": "8af7d13c-750f-4481-a689-b867653e519b"
}
    
      {
  "status": "PENDING"
}
    
- 200 - операция выполнена успешно
 - 400 - ошибка, Bad Request
 - 401 - ошибка, Unauthorized
 - 403 - ошибка, Forbidden
 - 404 - ошибка, заказ с таким orderId не найден
 - 500 - ошибка, Internal Server Error
 
- Получение оплаты по ее id - GET запрос, /v1/payments/{id}
 
      
id - path-параметр, обязательный: уникальный идентификатор оплаты
    
      {
      "id": "3d1c40e2-fa43-48a9-acfe-ba08dbe49d56",
      "orderId": "536b3ccc-a4da-4743-9014-7d4fdbae0971",
      "status": "PENDING",
      "provider": "yoo_kassa",
      "customerId": "570d645c-3c7d-4d46-95cc-a040cf65d8d5",
      "externalId": "2e7b9d25-000f-5000-9000-13687a9b6e1f",
      "createdAt": "2024-09-17T13:51:33.921594Z",
      "amount": 5500,
      "currencyId": "90e5fed1-1eaa-4e45-8574-b687605817fd",
      "confirmationType": "REDIRECT",
      "confirmationUrl": "https://yoomoney.ru/checkout/payments/v2/contract?orderId=2e7b9d25-000f-5000-9000-13687a9b6e1f"
 }
    
- 200 - операция выполнена успешно, получены данные оплаты
 - 401 - ошибка, Unauthorized
 - 403 - ошибка, Forbidden
 - 404 - ошибка, оплата с таким id не найдена
 - 500 - ошибка, Internal Server Error
 
Работа с провайдерами
- Получение списка доступных провайдеров - GET запрос,/v1/providers
 
Отсутствуют.
      [
  {
    "name": "yoo_kassa"
  }
]
    
- 200 - операция выполнена успешно, получен список провайдеров
 - 500 - ошибка, Internal Server Error