Микросервис 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