Микросервис payment-orchestration

В статье описываются функции, логика работы, конфигурация и методы микросервиса payment-orchestration.

Микросервис payment-orchestration служит для управления оплатами заказов на сайте интернет-магазина.

 

Доступ к сервису предоставляется по запросу.

Логика работы Copy-icon

В работе микросервиса участвуют следующие сущности:

  • Payment (Оплата) - содержит данные об оплате: id оплаты, id заказа, статус оплаты, поставщик платежных услуг, id покупателя, сумма заказа, id валюты, в которой был оплачен заказ и др.
  • PaymentProviderInfo (Провайдер) - содержит название поставщика платежных услуг

Аутентификация Copy-icon

Для работы с микросервисом для некоторых запросов необходимо в заголовке Authorization указывать токен: Authorization: Bearer <токен>.

Service context path Copy-icon

/api/payment-orchestration/

Настройки и параметры конфигурации Copy-icon

Параметры конфигурации указываются в Vault.

Vault используется на нашей платформе в качестве хранилища всех конфигураций развертывания. Инструмент может быть выбран другой.

По умолчанию

{
  "env": {
    "JAVA_XMS": "XXm",
    "JAVA_XMX": "YYYm",
    "SERVER_ADDRESS": "адрес_хоста_для_привязки_сервиса",
    "SERVER_PORT": "порт_сервера",
    "SERVER_PORT_TECH": "порт_для_технических_операций_и_мониторинга_системы"
  }
}

Copy-icon
Указываемые на каждом отдельном стенде

//пример взят с тестового стенда


{
  "env": {
    "OAUTH_ECOM_CLIENT_ID": "токен_приложения_ECOM_OAuth",
    "OAUTH_ECOM_ISSUER_URI": "url_ECOM_OAuth",
    "OAUTH_ZITADEL_CLIENT_ID": "токен_приложения_Zitadel",
    "OAUTH_ZITADEL_ISSUER_URI": "url_Zitadel",
    "PAYMENT_PROVIDER_TEST_MODE": "активация_тестовго_режима_для_провайдера_платежей",
    "PAYMENT_URL": "url_доступа_к_сервису_payment",
    "PRICE_URL": "url_доступа_к_сервису_price",
    "YOOKASSA_SECRET_KEY": "ключ_для_аутентификации_в_API_YooKassa",
    "YOOKASSA_SHOP_ID": "id_продавца_для_аутентификации_в_API_YooKassa",
    "YOOKASSA_URL": "url_к_API_YooKassa"
  }
}

Copy-icon

Методы микросервиса Copy-icon

Работа с оплатами

  • Создание оплаты - POST запрос, /v1/payments
Request parameters

Отсутствуют.

Request body sample
{
  "orderId": "8af7d13c-750f-4481-a689-b867653e519b",
  "providerName": "yoo_kassa",
  "returnUrl": "https://example.com/orders/8af7d13c-750f-4481-a689-b867653e519b"
}
Copy-icon
Response sample
{
      "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"
    }
Copy-icon
Response codes
  • 201 - операция выполнена успешно, оплата создана
  • 400 - ошибка, Bad Request
  • 401 - ошибка, Unauthorized
  • 403 - ошибка, Forbidden
  • 404 - ошибка, заказ с таким orderId не найден
  • 409 - ошибка, оплата для заказа с таким orderId уже есть
  • 500 - ошибка, Internal Server Error
  • Синхронизация статуса оплаты - POST запрос, /v1/payments/sync-status
Request parameters

Отсутствуют.

Request body sample
{
  "orderId": "8af7d13c-750f-4481-a689-b867653e519b"
}
Copy-icon
Response sample
{
  "status": "PENDING"
}
Copy-icon
Response codes
  • 200 - операция выполнена успешно
  • 400 - ошибка, Bad Request
  • 401 - ошибка, Unauthorized
  • 403 - ошибка, Forbidden
  • 404 - ошибка, заказ с таким orderId не найден
  • 500 - ошибка, Internal Server Error
  • Получение оплаты по ее id - GET запрос, /v1/payments/{id}
Request parameters

id - path-параметр, обязательный: уникальный идентификатор оплаты

Copy-icon
Response sample

{
      "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"

 }

Copy-icon
Response codes
  • 200 - операция выполнена успешно, получены данные оплаты
  • 401 - ошибка, Unauthorized
  • 403 - ошибка, Forbidden
  • 404 - ошибка, оплата с таким id не найдена
  • 500 - ошибка, Internal Server Error

Работа с провайдерами

  • Получение списка доступных провайдеров - GET запрос,/v1/providers 
Request parameters

Отсутствуют.

Response sample
[
  {
    "name": "yoo_kassa"
  }
]
Copy-icon
Response codes
  • 200 - операция выполнена успешно, получен список провайдеров
  • 500 - ошибка, Internal Server Error

Связанные статьи

Микросервисы