Микросервис 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"
  }
}
    
    
      
//пример взят с тестового стенда
{
  "env": {
    "OAUTH_ECOM_CLIENT_ID": "токен_приложения_ECOM_OAuth",
    "OAUTH_ZITADEL_CLIENT_ID": "токен_приложения_Zitadel",
    "OAUTH_ZITADEL_ISSUER_URI": "url_Zitadel",
    "POSTGRES_HOST": "хост_бд",
    "POSTGRES_MIGRATION_PASSWORD": "пароль",
    "POSTGRES_PASSWORD": "пароль"
  }
}
    
    
Методы микросервиса
- Создание оплаты - POST запрос, /v1/payments
 
Отсутствуют.
      {
  "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"
}
    
      {
  "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"
}
    
- 201 - операция выполнена успешно, оплата создана
 - 400 - ошибка, Bad Request
 - 409 -ошибка, у заказа с таким orderId уже есть оплата
 - 500 - ошибка, Internal Server Error
 
- Получение страницы с оплатами (с возможностью фильтрации) - POST запрос, /v1/payments/page
 
      
      page - query-параметр: номер страницы для отображения
size - query-параметр: количество элементов для отображения на странице
sort - query-параметр: сортировка элементов на странице
    
      {
  "customerId": "570d645c-3c7d-4d46-95cc-a040cf65d8d5"
}
    
      
{
  "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
}
    
- 200 - операция успешно выполнена, получена страница с оплатами
 - 500 - ошибка, Internal Server Error
 
- Получение оплаты по ее id - GET запрос, /v1/payments/{id}
 
      id - path-параметр, обязательный: уникальный идентификатор оплаты
    
         {
      "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"
    }
    
- 200 - операция выполнена успешно, получены данные оплаты
 - 404 - ошибка, оплата с таким id не найдена
 - 500 - ошибка, Internal Server Error
 
- Удаление оплаты по ее id - DELETE запрос, /v1/payments/{id}
 
      id - path-параметр, обязательный: уникальный идентификатор оплаты
    
Отсутствует. В ответе приходит только код операции, например, 204.
- 204 - операция выполнена успешно, оплата удалена
 - 404 - ошибка, оплата с таким id не найдена
 - 500 - ошибка, Internal Server Error
 
- Редактирование оплаты - PATCH запрос, /v1/payments/{id}
 
      id - path-параметр, обязательный: уникальный идентификатор оплаты
    
      {
  "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"
}
    
      {
  "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"
}
    
- 200 - операция выполненау спешно, оплата изменена
 - 400 - ошибка, Bad Request
 - 404 - ошибка, оплата с таким id не найдена
 - 500 - ошибка, Internal Server Error
 
- Получение оплаты по id заказа - GET запрос, /v1/payments/by-order-id/{orderId}
 
      
      orderId - path-параметр, обязательный: уникальный идентификатор заказа
    
      {
  "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"
}
    
- 200 - операция успешно выполнена, получены данные оплаты
 - 404 - ошибка, заказ с таким orderId не найден
 - 500 - ошибка, Internal Server Error