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

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

Микросервис payment служит для управления оплатами заказов на сайте интернет-магазина. С его помощью можно просматривать, создавать, редактировать и удалять оплаты заказов.

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

Логика работы

В работе микросервиса участвует сущность Payment, которая содержит данные об оплате: id оплаты, id заказа, статус оплаты, поставщик платежных услуг, id покупателя, сумма заказа, id валюты, в которой был оплачен заказ и др.

Аутентификация

Для работы с микросервисом аутентификация не требуется.

Service context path

/api/payment/

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

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

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

По умолчанию

{
  "env": {
    "JAVA_XMS": "XXm",
    "JAVA_XMX": "YYYm",
    "POSTGRES_DATABASE": "payment",
    "POSTGRES_MIGRATION_USER": "payment_migration",
    "POSTGRES_PORT": "5432",
    "POSTGRES_USER": "payment_user",
    "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",
    "POSTGRES_HOST": "хост_бд",
    "POSTGRES_MIGRATION_PASSWORD": "пароль",
    "POSTGRES_PASSWORD": "пароль"
  }
}

Copy-icon

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

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

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

Request body sample
{
  "orderId": "0e5f923e-df96-4a80-9769-a0d2087dcb12",
  "status": "SUCCEED",
  "provider": "yookassa",
  "customerId": "1231231231",
  "externalId": "yk-12312321",
  "createdAt": "2024-09-18T10:02:41.243Z",
  "expiresAt": "2024-09-18T10:02:41.243Z",
  "amount": 0,
  "currencyId": "DC12312312",
  "confirmationType": "REDIRECT",
  "confirmationUrl": "https://provider.com/confirmation/123"
}
Copy-icon
Response sample
{
"id": "e0222e36-b568-4aaa-bc1c-473cd9523a5e",
  "orderId": "0e5f923e-df96-4a80-9769-a0d2087dcb12",
  "status": "SUCCEED",
  "provider": "yookassa",
  "customerId": "1231231231",
  "externalId": "yk-12312321",
  "createdAt": "2024-09-18T10:02:41.243Z",
  "expiresAt": "2024-09-18T10:02:41.243Z",
  "amount": 0,
  "currencyId": "DC12312312",
  "confirmationType": "REDIRECT",
  "confirmationUrl": "https://provider.com/confirmation/123"
}
Copy-icon
Response codes
  • 201 - операция выполнена успешно, оплата создана
  • 400 - ошибка, Bad Request
  • 409 -ошибка, у заказа с таким orderId уже есть оплата
  • 500 - ошибка, Internal Server Error
  • Получение страницы с оплатами (с возможностью фильтрации) - POST запрос, /v1/payments/page
Request parameters

page - query-параметр: номер страницы для отображения

size - query-параметр: количество элементов для отображения на странице

sort - query-параметр: сортировка элементов на странице

Copy-icon
Request body sample

{
  "customerId": "570d645c-3c7d-4d46-95cc-a040cf65d8d5"
}

Copy-icon
Response sample
{
  "content": [
    {
      "id": "b6112c45-4573-4b60-bdc6-54bc40d34548",
      "orderId": "0e5f923e-df96-4a80-9769-a0d2087dcb12",
      "status": "SUCCEEDED",
      "provider": "yoo_kassa",
      "customerId": "570d645c-3c7d-4d46-95cc-a040cf65d8d5",
      "externalId": "2e7cb84d-000f-5000-9000-104ed5aa4704",
      "createdAt": "2024-09-18T09:59:41.326508Z",
      "amount": 1900,
      "currencyId": "90e5fed1-1eaa-4e45-8574-b687605817fd",
      "confirmationType": "REDIRECT",
      "confirmationUrl": "https://yoomoney.ru/checkout/payments/v2/contract?orderId=2e7cb84d-000f-5000-9000-104ed5aa4704"
    },
    {
      "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"
    },
    {
      "id": "2812aaf0-9845-4d12-a84e-498b7894b70a",
      "orderId": "7d3633f8-71e5-4866-8056-29cabd56653c",
      "status": "SUCCEEDED",
      "provider": "yoo_kassa",
      "customerId": "570d645c-3c7d-4d46-95cc-a040cf65d8d5",
      "externalId": "2e7b930e-000f-5000-a000-1666af097e3d",
      "createdAt": "2024-09-17T13:08:30.559834Z",
      "amount": 5500,
      "currencyId": "90e5fed1-1eaa-4e45-8574-b687605817fd",
      "confirmationType": "REDIRECT",
      "confirmationUrl": "https://yoomoney.ru/checkout/payments/v2/contract?orderId=2e7b930e-000f-5000-a000-1666af097e3d"
    },
    {
      "id": "fc520d6d-7935-472a-ab7a-133d139cb0cc",
      "orderId": "6f1394f3-86c2-403a-bd48-9f538b3d0962",
      "status": "SUCCEEDED",
      "provider": "yoo_kassa",
      "customerId": "570d645c-3c7d-4d46-95cc-a040cf65d8d5",
      "externalId": "2e7b927f-000f-5000-9000-18d4db57f332",
      "createdAt": "2024-09-17T13:06:07.191218Z",
      "amount": 950,
      "currencyId": "90e5fed1-1eaa-4e45-8574-b687605817fd",
      "confirmationType": "REDIRECT",
      "confirmationUrl": "https://yoomoney.ru/checkout/payments/v2/contract?orderId=2e7b927f-000f-5000-9000-18d4db57f332"
    },
    {
      "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"
    }
  ],
  "number": 0,
  "size": 5,
  "totalElements": 5,
  "pageable": {
    "sort": {
      "unsorted": true,
      "sorted": false,
      "empty": true
    },
    "pageNumber": 0,
    "pageSize": 5,
    "offset": 0,
    "paged": true,
    "unpaged": false
  },
  "last": true,
  "totalPages": 1,
  "sort": {
    "unsorted": true,
    "sorted": false,
    "empty": true
  },
  "first": true,
  "numberOfElements": 5,
  "empty": false
}
Copy-icon
Response codes
  • 200 - операция успешно выполнена, получена страница с оплатами
  • 500 - ошибка, Internal Server Error
  • Получение оплаты по ее id - GET запрос, /v1/payments/{id}
Request parameters

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

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
  • 200 - операция выполнена успешно, получены данные оплаты
  • 404 - ошибка, оплата с таким id не найдена
  • 500 - ошибка, Internal Server Error
  • Удаление оплаты по ее id - DELETE запрос, /v1/payments/{id}
Request parameters

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

Copy-icon
Response sample

Отсутствует. В ответе приходит только код операции, например, 204.

Response codes
  • 204 - операция выполнена успешно, оплата удалена
  • 404 - ошибка, оплата с таким id не найдена
  • 500 - ошибка, Internal Server Error
  • Редактирование оплаты - PATCH запрос, /v1/payments/{id}
Request parameters

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

Copy-icon
Request body sample
{
  "id": "e0222e36-b568-4aaa-bc1c-473cd9523a5e",
  "orderId": "123123",
  "status": "SUCCEED",
  "provider": "yookassa",
  "customerId": "1231231231",
  "externalId": "yk-12312321",
  "createdAt": "2024-09-18T10:37:36.328Z",
  "expiresAt": "2024-09-18T10:37:36.328Z",
  "amount": 900,
  "currencyId": "DC12312312",
  "confirmationType": "REDIRECT",
  "confirmationUrl": "https://provider.com/confirmation/123"
}
Copy-icon
Response sample
{
  "id": "e0222e36-b568-4aaa-bc1c-473cd9523a5e",
  "orderId": "123123",
  "status": "SUCCEED",
  "provider": "yookassa",
  "customerId": "1231231231",
  "externalId": "yk-12312321",
  "createdAt": "2024-09-18T10:37:36.328Z",
  "expiresAt": "2024-09-18T10:37:36.328Z",
  "amount": 900,
  "currencyId": "DC12312312",
  "confirmationType": "REDIRECT",
  "confirmationUrl": "https://provider.com/confirmation/123"
}
Copy-icon
Response codes
  • 200 - операция выполненау спешно, оплата изменена
  • 400 - ошибка, Bad Request
  • 404 - ошибка, оплата с таким id не найдена
  • 500 - ошибка, Internal Server Error
  • Получение оплаты по id заказа - GET запрос, /v1/payments/by-order-id/{orderId}
Request parameters

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

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
  • 200 - операция успешно выполнена, получены данные оплаты
  • 404 - ошибка, заказ с таким orderId не найден
  • 500 - ошибка, Internal Server Error

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

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