openapi: 3.0.0
info:
  title: Документация Your Payments
  x-logo:
    url: ./images/ypmn-logo.svg
    backgroundColor: '#FFFFFF'
    altText: Your Payments
  description: |

    # Изменения
    | Номер версии | Раздел | Описание | Дата изменения |
    | ------------ | ------ | -------- | -------------- |
    | v 4.1.0      | [Все](#/) | Новая структура меню| 05.10.2025 |
    | v 4.0.7      | [Создание и авторизация платежа](#tag/payment-api/paths/~1v4~1payments~1authorize/post) | Удален параметр usePaymentPage, теперь решение об использовании платежной страницы принимается автоматически исходя из параметров запроса. При передаче usePaymentPage он будет проигнорирован| 24.07.2025 |
    | v 4.0.6      | [Создание и авторизация платежа](#tag/payment-api/paths/~1v4~1payments~1authorize/post) | Удалены метки необходимости передачи необязательных параметров | 18.06.2025 |
    | v 4.0.6      | [Аутентификация](#tag/authentication) | Добавлены примеры расчёта подписи запросов на разных языках программирования | 18.06.2025 |
    | v 4.0.5      | [Тестирование](#tag/testing) | Исправлены ошибки в коллекции Postman | 27.05.2025 |
    | v 4.0.4      | [Тестирование выплат](#tag/payouts-testing)<br><br>[Коды ответов на запрос авторизации](#tag/response-codes)<br><br>[Подключение сабмерчантов](#tag/qst) | Добавлены специфические суммы операций для выплат СБП в тестовом контуре.<br><br>Обновлен список кодов ответов.<br><br>Описано добавление реестра сабмерчантов. | 28.04.2025 |
    | v 4.0.3      | [API Выплат на карту/через СБП](#tag/payouts-api) | Убрали обязательность передачи реквизитов отправителя для выплаты | 25.04.2025 |
    | v 4.0.2      | [CMS](#tag/cms) | Актуализирован список CMS | 12.03.2025 |
  x-description-lang:
    en: ''
  version: 4.1.0
servers:
  - description: SandBox URL
    url: https://sandbox.ypmn.ru/api
  - description: URL
    url: https://secure.ypmn.ru/api
tags:
  - name: basic info
    x-displayName: Общая информация
    x-displayName-lang:
      en: basic info
    description: |
      # Термины и определения

      | ТЕРМИН    | ЗНАЧЕНИЕ     |
      |-----------|--------------|
      | **ТСП**        | Торгово-сервисное предприятие (также "мерчант", "магазин", "продавец"), на котором организуют проведение онлайн платежей с помощью платёжного шлюза Your Payments |
      | **Система**   | Платежный шлюз ООО НКО Твои Платежи (Your Payments, YPMN) |
      | **Сплитование** | Разделение платежа от Плательщика на несколько возмещений в пользу получателей (сабмерчантов) |
      | **Сабмерчант** | ТСП, которое работает в рамках общей площадки или платформы и является одним из поставщиков товаров и/или услуг |
      | **API**        | Программный интерфейс для взаимодействия с Системой                             |
      | **ЛК**         | Личный кабинет ТСП в системе                                                    |
      | **Карта**      | Банковская карта платежных систем платежных систем МИР, Visa, MasterCard, БелКарт и пр.                                                   |
      | **Эквайер**    | Банк, который проводит платежную операцию                                                                                             |
      | **Эмитент**    | Банк, который выпустил карту плательщика                                                                                              |
      | **Плательщик** | Физическое лицо, которое совершает платежную операцию любым доступным способом оплаты.                                                |
      | **3DS**        | Протокол проверки держателя карты эмитентом. |
      | **ARN**        | Acquirer Reference Number - уникальный номер операции в клиринговом обмене между банками/процессинговыми центрами, содержит 31 символ. Этот код подтверждает успешное выполнение операции.   |
      | **Chargeback** | Ситуация, когда держатель карты требует возврата средств через эмитента                                                       |
      | **CMS**        | Система создания и управления контентом сайта (Content Management System)                                                              |
      | **RRN**        | Уникальный идентификатор банковской транзакции, назначаемый банком-эквайером при инициализации платежа                                 |
      | **Выплата**    | Операция перевода денег на счет держателя со счета ТСП по номеру карты или телефона (также "payout").              |
      | **МПС**        | Международные платежные системы (МИР, Белкарт, Visa, MasterCard, UnionPay и др.) |
      | **Товар**      | Продукт или услуга, реализуемые через Продавца и оплачиваемую через систему Your Payments.                            |
      | **Токен**      | Уникальный идентификатор карты или счета плательщика для проведения рекуррентных  или one-click платежей, формируется системой Your Payments. |
      | **УЗ**         | Учетная Запись ТСП в Системе                                                                                          |
      | **ПФ**         | Платёжная форма (Форма оплаты) |


      # Виды транзакций
      Система предполагает три вида транзакций: **оплата**, **возврат** и **выплата**.
      - При оплате деньги перечисляются со счета плательщика в пользу ТСП. В случае возврата — наоборот.
      - Возврат выполняется ТСП, если плательщик хочет вернуть товар.
      - Возврат всегда связан с операцией оплаты, сумма средств с которой будет возвращена плательщику. Возвращать можно как всю сумму оплаты, так и ее часть. Деньги обычно возвращаются на карту держателя в тот же день, но иногда, в зависимости от банка-эмитента, могут идти до 3-х дней.
      - Операцию оплаты, в отличие от возврата, можно отменить.
      - Отмену оплаты выполняет ТСП в случае, если платеж был совершен с ошибкой: неверная сумма, технический сбой и т.д. Есть ограничение — отменить операцию можно только в случае использования двухстадийной схемы оплаты. Деньги при этом будут разблокированы на карте держателя практически мгновенно.
      - Выплата — операция зачисления денежных средств со счета ТСП на счет получателя


      # Схемы проведения платежа
      Существует два варианта проведения операции оплаты: **одностадийная** и **двухстадийная**,
      их также называют single message system (SMS) и dual message system (DMS).

      **Одностадийная оплата** выполняется одной командой, по результатам которой проходит авторизация
      и последующее списание средств в пользу ТСП.

      **Двухстадийная оплата** использует две команды: отдельно на авторизацию и списание. После успешной авторизации (холдирования),
      сумма операции будет захолдирована  на счету плательщика, то есть он не сможет ей воспользоваться. Далее у ТСП
      есть до 7 дней (либо 30 по спец. категориям мерчантов: 4411, 4511, 4722, 5962, 4816, 5712, 6513, 7012, 7032, 7033, 7273, 7298, 7512,
      7513, 7519, 7922, 7929, 7941, 7997, 8241, 8244, 8249, 8299, 8675, 8699), для подтверждения операции, после чего
       произойдет списание денег. Если операцию не подтвердить в течение этого времени
      — она будет автоматически отменена. Подтверждать можно как всю сумму авторизации, так и ее часть.

      Как правило, двухстадийная схема используется для получения депозита с плательщика, например, в прокатных компаниях или отелях.

      ## Способы оплаты
      Оплату можно проводить следующими способами:
      - Через платежную форму - интерфейс оплаты со встроенными способами оплаты, который позволяет проводить платежи.
      - Через API по токену. После инициальной оплаты, система присваивает платежным данным идентификатор — токен, который можно безопасно хранить и использовать для безакцептных платежей - pay per click. Токен можно получить используя метод получения токена после оплаты.
      - Через Secure Fields. На вашем сайте прописывается скрипт Secure Fields, который собирает карточные данные из встроенной формы на сайте, шифрует и создает токен для безопасной передачи через межсерверное взаимодействие.
      - Через SDK. Интегрируйте SDK в ваш сайт или приложение, и принимайте оплаты  от ваших покупателей.
      - Через API с данными банковской карты. Для этого у ТСП должен быть сертификат PCI DSS.
      - Также вы можете разместить на своем сайте или в приложении отдельные кнопки для вызова определенного метода оплаты.

      # 3-D Secure
      3-D Secure — общее название программ МИР Accept, Verified By Visa и Mastercard Secure Code от платежных систем МИР, Visa и MasterCard. Суть программы - в проверке эмитентом, что оплату пытается провести держатель карты для защиты от несанкционированного использования карты. На практике это выглядит так: держатель указывает реквизиты карты, далее открывается сайт эмитента, где держателю предлагается ввести пароль или секретный код. Как правило, код отправляется в СМС-сообщении. Если код указан правильно, оплата будет проведена. Если нет — отклонена.

      ![3Ds](./images/3ds.png)

      3-D Secure в процессе оплаты появляется не на всех картах, а только тех, банки-эмитенты которых поддерживают данную технологию.

      Проведение оплаты без 3-D Secure является менее безопасным вариантом.
  - name: integration-ways
    x-displayName: Способы интеграции
    x-displayName-lang:
      en: integration ways
    description: |
      # Страница оплаты
      ![форма оплаты](./images/payment-interface/form-devices.png)

      Страница оплаты – это интерфейс Your Payments, с помощью которого плательщик вводит данные своей банковской карты или выбирает альтернативный способ оплаты:
      - при выборе оплаты через pay-сервис плательщик направляется для подтверждения платежа
        в приложение соответствующего банка
        (
          [Alfa Pay](./#tag/payment-methods/Alfa-Pay),
          [SberPay](./#tag/payment-methods/SberPay),
          [T-PAY](./#tag/payment-methods/T-Pay)
        )
        или в приложение [Mir Pay](./#tag/payment-methods/Mir-Pay)
      - при оплате через [СБП](./#tag/payment-methods/SBP-(Sistema-bystryh-platezhej)) плательщик выбирает приложение банка и подтверждает в нём платеж
      - при покупке через сервисы [BNPL](./#tag/payment-methods/BNPL-PODELI) («buy now, pay later» – оплата покупки по частям) плательщик переходит в сервис партнера для проведения оплаты

      Чтобы вызвать страницу оплаты, ТСП необходимо отправить [запрос](./#tag/payment-api/paths/~1v4~1payments~1authorize/post) в систему Your Payments, с указанием номера платежа, информации о покупаемых товарах и т.п.

      После завершения оплаты ТСП получает [уведомление с результатом операции](./#tag/webhooks), а плательщик может быть перенаправлен обратно на сайт ТСП


      # Host2host
      При данном способе интеграции ТСП собирает данные банковской карты плательщика на своей стороне и затем передает их в запросе к API Your Payments.

      В ответе Your Payments пришлет в объекте paymentResult,
      в параметре url - ссылку для прохождения плательщиком 3-D Secure и признак редиректа, на
       которую нужно перенаправить плательщика.

      Также можно собрать данные 3-D Secure на стороне ТСП, чтобы ускорить прохождение платежа.

      После завершения оплаты ТСП получает [уведомление с результатом операции](./#tag/webhooks), а плательщик может быть перенаправлен обратно на сайт ТСП.

      Если у ТСП менее 1 млн транзакций в год, то необходимо раз в год заполнять [лист самооценки SAQ-D](./PCI-DSS-v4-0-1-SAQ-D-Merchant.docx) и отправлять его в Your Payments.
      Также, нужно проводить AVS-сканирование раз в 90 дней, обратившись в [ASV-организацию](https://www.pcisecuritystandards.org/assessors_and_solutions/approved_scanning_vendors/), обладающую статусом PCI,
      и предоставлять результаты по запросу Your Payments.

      Если у ТСП более 1 млн транзакций в год, то необходимо проходить сертификацию PCI-DSS с привлечением сторонней,
      сертифицированной советом PCI-DSS, [компанией](https://www.pcisecuritystandards
      .org/assessors_and_solutions/qualified_security_assessors/).

      # Secure Fields (скрипт checkout)
      Технология Secure fields - это JavaScript-библиотека, которая позволяет ТСП разместить поля для ввода данных банковской карты на своём сайте и/или в приложении, при этом данные карты не обрабатываются на стороне ТСП, а шифруются и направляются в Систему, после чего ТСП получает одноразовый токен, который используется для создания и авторизации платежа.

      Подробный сценарий интеграции описан в разделе [API > Secure Fields](./#tag/secure-fields).

      Этот вариант интеграции позволяет ТСП полностью контролировать платежный опыт покупателей, органично встраивая поля для ввода данных карты в свои интерфейсы. При этом нет необходимости проходить процедуру сертификации PCI DSS с привлечением сторонней компании (при количестве транзакций до 1 млн в год),
      достаточно один раз в год заполнять [лист самооценки SAQ-A](./PCI-DSS-v4-0-1-SAQ-A-Merchant.docx) и отправлять его в Your Payments. Если количество транзакций за год больше 20 000, то нужно будет проводить AVS-сканирование раз в 90 дней, обратившись в ASV-организацию, обладающей статусом PCI.

      # CMS
      Платежные модули позволяют легко интегрировать возможность оплаты на сайт ТСП, использующий какой-либо конструктор сайтов или CMS (Content Management System, Система управления контентом на сайте). Your Payments поддерживает работу со следующими CMS:
      - [1C Bitrix](./#tag/cms-1c-bitrix)
      - [Tilda](./#tag/cms-tilda)
      - [WordPress Woocommerce](./#tag/cms-wordpress-woocommerce)
      - [OpenCart](./#tag/cms-opencart)
      - [Joomla](./#tag/cms-Joomla)
      - [InSales](./#tag/cms-insales)
      - [АвтоВебОфис](./#tag/cms-autoweboffice)

      [Инструкции по установке](./#tag/cms)

      # SDK
      SDK (Software Development Kit) — это готовые библиотеки для быстрой интеграции с API Your Payments, чтобы не тратить время на написание и отладку кода, и получать обновления с новыми возможностями.

      SDK на различных языках программирования находятся в открытом доступе и в открытом коде:
      - [PHP](./#tag/sdks/PHP)
      - [Go](./#tag/sdks/Go)
      - [Python](./#tag/sdks/Python)
      - [TypeScript / JavaScript](./#tag/sdks/JavaScript)


      # API
      Использование API позволяет ТСП:
      - Работать [со страницей оплаты](./#tag/payment-api/paths/~1v4~1payments~1authorize/post)
      - Делать отдельные кнопки [платежных методов](./#tag/payment-methods) на своем сайте
      - Отправлять запросы на
          - холдирование,
          - [списание](./#tag/payment-api/paths/~1v4~1payments~1capture/post),
          - [возврат и отмену платежей](./#tag/payment-api/paths/~1v4~1payments~1refund/post),
          - [получение статуса платежа](./#tag/payment-api/paths/~1v4~1payments~1status~1%7BmerchantPaymentReference%7D/get)
      - Производить оплаты <a href="./#tag/payment-api/paths/~1v4~1payments~1authorize/post(split=yes)">с разделением платежа</a> (сплитовать между несколькими ТСП)
      - [Перенаправлять покупателя](./#tag/payment-api-return-url) после оплаты на необходимый URL
      - Сохранять платёжную информацию в виде токенов, отменять (деактивировать) токены:
          - <a href="./#tag/payment-api/paths/~1v4~1payments~1authorize/post(method=Страница%20оплаты%20картой%20с%20токенизацией)(split=no)">токенизация в момент платежа</a>
          - [токенизация уже совершённой операции](./#tag/token-api/paths/~1v4~1token/post)
          - [отменить токен](./#tag/token-api/paths/~1v4~1token~1%7Btoken%7D/delete)
      - Реализовать рекуррентные платежи с расписанием на стороне ТСП
      - Получать [информацию о карте по токену](./#tag/token-api/paths/~1v4~1token~1%7Btoken%7D/get)
      - Делать [выплаты](./#tag/payouts-testing) по номерам карты и телефона получателя
      - [Получать отчеты](./#tag/reports)
      - [Подключать сабмерчантов](/#tag/qst-api) (для платформ и маркетплейсов)

      [Перейти к техническому описанию](./#tag/api)
  - name: integration-info
    x-displayName: Описание интеграции
    x-displayName-lang:
      en: Integration Info
    description: |
      # Базовая схема интеграции
      1. Покупатель переходит [на платежную страницу](./#tag/payment-api/paths/~1v4~1payments~1authorize/post(split=no)) Your Payments и совершает оплату
      2. Your Payments самостоятельно производит редирект покупателя в банк-эмитент для прохождения авторизации 3DS
      3. Your Payments [уведомляет](./#tag/webhooks) ТСП об успешной авторизации
      4. ТСП отправляет запрос в Your Payments на [списание](.#tag/payment-api/paths/~1v4~1payments~1capture/post) (опционально)
      5. Your Payments [уведомляет](./#tag/webhooks) ТСП о статусе платежа

      # Схема интеграции с разделением платежа (сплитование)
      1. Покупатель создает заказ на торговой площадке
      2. Торговая площадка отправляет в Your Payments [запрос на оплату](./#tag/payment-api/paths/~1v4~1payments~1authorize/post(split=yes)) передавая продавца каждого из товаров и суммы, для разделения платежа
      3. Your Payments самостоятельно производит редирект покупателя в банк-эмитент для прохождения авторизации 3DS
      4. Плательщик совершает оплату
      5. Your Payments [уведомляет](./#tag/webhooks) ТСП о статусе платежа
      6. Your Payments выплачивает денежные средства по указанным площадкой продавцам

      # Выплаты физическим лицам
      1. ТСП может выплатить на карту несколькими способами:
        - По токену, получив его при инитной оплате
        - По номеру карты (если есть PCI DSS)
        - По номеру телефона
      2. ТСП инициирует выплату по [токену, номеру карты или номеру телефона](./#tag/payouts-api)

      # Оплата по ссылкам
      1. ТСП запрашивает у Your Payments  уникальную ссылку на оплату
      2. ТСП отправляет ссылку плательщику по e-mail, SMS, мессенджер или другим удобным способом
      3. Плательщик переходит на платежную страницу Your Payments и производит оплату
      4. Your Payments [уведомляет](./#tag/webhooks) ТСП о статусе оплаты

      # Оплата по токену
      1. Покупатель [проводит оплату]() у ТСП в любом сценарии интеграции Your Payments
      2. Your Payments [уведомляет](./#tag/webhooks) ТСП об успешной авторизации
      3. ТСП получает платежный токен в webhook-е в параметре ypmnBindingId
      4. ТСП отправляет запрос оплаты по токену

      # Проведение 3DS
      ## Оплата с использованием платежной страницы Your Payments
      1. Покупатель переходит на [платежную страницу Your Payments](./#tag/payment-api/paths/~1v4~1payments~1authorize/post) и производит оплату
      2. Your payments самостоятельно производит редирект покупателя в банк-эмитент для прохождения авторизации 3DS
      3. Your Payments [уведомляет](./#tag/webhooks) ТСП об успешной авторизации с помощью webhook
      4. ТСП отправляет запрос в Your Payments на подтверждение оплаты (опционально)
      5. Your Payments [уведомляет](./#tag/webhooks) ТСП о статусе платежа с помощью webhook

      ## Оплата без использования платежной страницы Your Payments
      1. Покупатель вводит данные карты (или выбирает сохраненную) на стороне ТСП
      2. ТСП отправляет запрос на авторизацию с картой или токеном
      3. При необходимости авторизации по 3DS ответ на запрос авторизации будет содержать блок paymentResult следующего вида:
        ```json
        "paymentResult":
        {
           "payuResponseCode":"3DS_ENROLLED",
           "url":"https:\/\/secure.ypmn.ru\/order\/collect_browser_params\/refno\/***\/",
           "type":"redirect"
        }
        ```
      6. ТСП перенаправляет покупателя на предоставленный URL
      5. Your payments самостоятельно производит редирект покупателя в банк-эмитент для прохождения авторизации 3DS
      6. Your Payments [уведомляет](./#tag/webhooks) ТСП об успешной авторизации с помощью вебхука
      8. ТСП отправляет запрос в Your Payments на подтверждение оплаты (опционально)
      9. Your Payments [уведомляет](./#tag/webhooks) ТСП об успешном списании с помощью вебхука

      # Рекуррентные платежи
      1. Покупатель проводит оплату у ТСП в любом сценарии интеграции Your Payments
      2. Your Payments [уведомляет](./#tag/webhooks) ТСП об успешной авторизации
      3. ТСП получает платежный токен по SberPay, СБП, Intcard в webhook-е в параметре ypmnBindingId
      4. ТСП отправляет запрос оплаты по токену в соответствии с настроенным расписанием на своей стороне

      # Двухстадийная оплата
      1. ТСП отправляет запрос на холдирование денежных средств
      2. Your Payments самостоятельно производит редирект покупателя в банк-эмитент для прохождения авторизации 3DS
      3. Your Payments [уведомляет](./#tag/webhooks) ТСП об успешной авторизации
      4. ТСП отправляет запрос на подтверждения платежа
      5. Your Payments [уведомляет](./#tag/webhooks) ТСП о статусе платежа

      # Отмена или Возврат платежа
      1. ТСП отправляет запрос на проведения Возврата или Отмены платежа через [API](./#tag/integration-ways/API) или [Личный Кабинет](./#tag/integration-info/Lichnyj-kabinet)
      2. Your Payments [уведомляет](./#tag/webhooks) ТСП о статусе платежа

      # Личный кабинет
      Доступ к Личному кабинету (ЛК) предоставляется после регистрации ТСП в сервисе Your Payments.

      ЛК расположен по адресу: [https://secure.ypmn.ru/cpanel/](https://secure.ypmn.ru/cpanel/?utm_source=openapi_doc) (или [https://sandbox.ypmn.ru/cpanel/](https://sandbox.ypmn.ru/cpanel/?utm_source=openapi_doc) для тестового контура)

      Личный кабинет представляет собой веб-интерфейс, который позволяет:
      - управлять платежами ТСП, обрабатываемыми через систему Your Payments
      - настраивать вид платежной формы
      - создавать учетные записи пользователей в ЛК и управлять доступами
      - вести БД товаров, платежи за которые обрабатываются через систему Your Payments
      - работать с аналитикой

      ## Подтверждение платежей
      В ЛК предусмотрено два способа подтверждения транзакций: подтверждение одной транзакции или нескольких одновременно.

      Чтобы подтвердить одну транзакцию:
      1. Найдите ее, в навигационной панели слева выберите “Заказы и отчеты” > “Подтверждения платежей”
      2. Щелчком по номеру транзакции раскройте информацию о ней
      3. Обратите внимание также, что в карточке транзакции представлены подробные сведения о клиенте
      4. Нажмите на кнопку “Подтверждение платежей”, чтобы подтвердить операцию
      5. Подтвердите действие

      Чтобы подтвердить несколько транзакций сразу:
      1. Найдите ее, в навигационной панели слева выберите “Заказы и отчеты” > “Подтверждения платежей”
      2. Выберете операции, ожидающих подтверждения
      3. Нажмите на кнопку “Подтверждение платежей” под списком транзакций
      4. Подтвердите действие

      ## Возврат платежей
      Для выполнения возврата или отмены:
      1. Найдите необходимый заказ или транзакция в меню “Заказы и отчеты” > ”Отчеты по продажам”
      2. Перейдите к заказу или транзакции, по которому требуется выполнить возврат
      3. Нажмите на кнопку “Запрос о возвращении/отмене”
      4. Выберите вариант возврата (полный или частичный)
      5. Укажите причину отмены транзакции
      6. Нажмите на кнопку “Запрос об отмене”
      7. Подтвердите действие
      8. Данные обо всех возвратах/отменах по заказу или транзакции отображаются на вкладке "Возвраты"

      ## Настройка Webhook-уведомлений
      Для интеграции с Your Payments, ТСП необходимо настроить URL для отправки webhook-уведомлений

      Для этого выполните следующие шаги:
      1. Перейдите в меню “Настройки учетной записи” навигационной панели. Первое подменю “Данные учетной записи” позволяет настроить учетные данные ТСП. Здесь вы можете как ввести данные, так и обновить их в любой момент
      2. Перейдите в подменю “Редактирование настроек”, чтобы настроить параметры webhook-уведомлений
      3. На вкладке “Редактирование настроек” этого окна (открывается по умолчанию) вы можете выбрать формат webhook-уведомлений, а также выбрать, для каких статусов транзакции следует использовать данный тип уведомления. Для успешных транзакций webhook-уведомления отправляется всегда
      4. Введите/измените адрес для приема webhook-уведомлений. По умолчанию поле пустое0
      5. Введите/измените адрес для приема webhook-уведомлений по операциям выплат. По умолчанию поле пустое
      6. Чтобы сохранить настройки, нажмите на кнопку ”Проверка и сохранение URL”
      7. В нижней части экрана представлен набор всех возможных полей уведомления. Устанавливая и снимая флаги напротив названий полей, вы можете сформировать собственный набор
      8. Чтобы применить выбранные параметры, нажмите кнопку “Сохранить настройки”

      ## Управление пользователями в Личном кабинете
      В Личном кабинете можно создавать учетные записи пользователей и роли с различными полномочиями
      доступа.

      Для управления учетными записями пользователей используются роли. Поэтому, прежде чем создавать новые учетные записи, необходимо создать набор ролей.

      Обратите внимание, что по умолчанию в Личном кабинете нет ролей. Учетная запись администратора с максимальными правами создается при предоставлении ТСП доступа к Личному кабинету.

      Настройка выполняется в меню “Настройка учетной записи” > “Доступ пользователей в ЛК”.

      Для того чтобы создать роль:
      1. Находясь в меню  “Доступ пользователей в ЛК”, нажмите на кнопку “Добавить новую роль” в верхней части экрана.
      2. Введите название новой роли.
      3. Используя флаги напротив названий групп функций и функций, назначьте права для новой роли.
      4. Сохраните настройки (кнопка “Сохранить роль”).

      В любой момент можно отредактировать любую роль. Для этого нажмите на кнопку “Редактировать” напротив названия роли в списке. Обратите внимание, что удалить роль невозможно. Форма редактирования аналогична форме создания новой роли.

      Далее вы можете перейти к управлению учетными записями пользователей. Список существующих учетных записей находится в этом же окне, на соседней вкладке “Посмотреть пользователей”

      Для того чтобы создать новую учетную запись пользователя:
      1. Нажмите на кнопку “Добавить нового пользователя” в верхней части экрана
      2. Заполните все поля блока “Информация о пользователе” : имя, фамилия, пароль, адрес электронной почты

      Вы можете в любой момент отредактировать данные о пользователе

      ## Поиск транзакции в Личном кабинете
      1. Перейдите в меню “Заказы и отчеты” в боковом меню
      2. Выберите “Отчеты по продажам”, чтобы найти нужную транзакцию
      3. Открывшаяся форма позволяет выполнять поиск транзакций по разным параметрам
      4. Выполнив поиск, вы можете выгрузить результат в формате CSV

      ## Отчеты в Личном кабинете
      В личном кабинете можно сформировать и выгрузить отчеты
      1. Отчет по продажам в различных разрезах
      2. Отчет по озмещениям (трансферам), которые направляет Your Payments на р/с ТСП
      3. Отчет по выплатам

      ## Формирование подтверждающих документов по операциям в Личном кабинете
      В Личном кабинете предусмотрен механизм формирования подтверждающих документов по операциям ваших клиентов.

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

      Чтобы получить документ по операции, необходимо:
      1. Найти транзакцию в разделе  "Заказы и отчеты" > "Отчет по продажам"
      2. Перейти в карточку транзакции
      3. Нажать кнопку “Печать”, документ скачается на ваше устройство в формате PDF

      ## Выплаты на карту
      Если вам необходимо выплачивать денежные средства вашим клиентам на карты, вам требуется подключить опцию “Выплаты на карты”
      через своего персонального менеджера.

      Для того, чтобы начать выплачивать на карты своим клиентам, вам необходимо создать роль пользователя
      в Личном кабинете с доступом к “Формирование выплат” и назначить ее сотруднику,
      который будет осуществлять выплаты вашим клиентам.

      ![Пользователь с ролью для выплат](./images/cpanel/cpanel-payouts-new-role.png)

      Пользователь, который будет обладать ролью с доступом к выплатам, будет иметь права к разделу “Выплаты - Создать выплату”

      <video class="video" controls preload="none" style="min-width:80%">
        <source src="https://ypmn.ru/s/v2/video/ypmn-payout.mp4" type="video/mp4">
      </video>

      ![Инструкция по выплате](./images/cpanel/cpanel-payouts-create-payment.png)

      # Получение Отчетов по API
      Для того, чтобы вы настраивать автоматизацию и работать в собственных системах аналитики на стороне ТСП, Your
      Payments предоставляет возможность [выгрузки отчетов по API](./#tag/reports):
      1. Агрегированный потранзакционный отчет в формате JSON. В выгрузку транзакций попадают все операции, зарегистрированные за указанный период
      2. Виджет отчета в виде графика. Вы можете получить виджет с графиками по суммам или транзакциям, в зависимости от переданных параметров
      3. Потранзакционный отчет в формате JSON
      4. Детальный отчет по заказу или номеру транзакции

      # Шаги для подключения
      - Шаг 1 [Оставьте заявку на сайте](https://ypmn.ru/ru/get/?utm_source=openapi_doc);
      - Шаг 2 С вами свяжется менеджер, расскажет о технологических возможностях. Согласует с вами условия сотрудничества;
      - Шаг 3 Подпишите необходимые документы;
      - Шаг 4 Познакомьтесь с API. Для аутентификации запросов в API вам потребуется секретный ключ и идентификатор сайта из личного кабинета;
      - Шаг 5 Выберите наиболее подходящий вам сценарий интеграции в зависимости от нужных вам способов оплат, возможностей API и ресурсов, которые у вас есть для подключения платежей;
      - Шаг 6 Используя инструкции, подключите те возможности API, которые нужны для решения ваших задач. Протестируйте интеграцию;
      - Шаг 7 Подготовьтесь к получению оплаты от реальных пользователей: проведите платеж на минимальную сумму;

      ✅ Готово! Можно принимать платежи.
  - name: payment-methods
    x-displayName: Методы оплаты
    x-displayName-lang:
      en: Payment Methods
    description: |
      # Банковские карты РФ
      ![Банковские карты](./images/payment-methods/ccards.png)

      С  Your Payments можно принимать оплату банковскими картами платежных систем МИР, VISA, MasterCard, Белкарт,
      выпущенными в РФ и [за границей](./#tag/payment-methods/Inostrannoj-kartoj).

      Для платежей по картам доступны:
      - одностадийная или двухстадийная схема оплаты
      - частичное или полное подтверждение
      - частичные или полные возвраты
      - платежи с 3DS и non-3DS
      - получение Токена для последующих платежей без ввода данных карты

      Способы интеграции оплаты Банковскими Картами:
      - [На странице оплаты](./#tag/integration-ways/Stranica-oplaty)
      - [В СMS](./#tag/integration-ways/CMS)
      - [В SDK](./#tag/integration-ways/SDK)
      - <a href="./#tag/payment-api/paths/~1v4~1payments~1authorize/post(method=Страница%20оплаты%20картой)">В API</a>, включая [Secure Fields](./#tag/integration-ways/Secure-Fields-(skript-checkout))
      - В платежных ссылках, сформированных через [личный кабинет](./#tag/integration-info/Lichnyj-kabinet)


      # Иностранные карты
      ![Иностранные карты](./images/payment-methods/int-cards.png)

      Оплаты банковскими картами, эмитированными вне РФ, платежных систем VISA и MasterCard.

      Способы интеграции:
      - [На странице оплаты](./#tag/integration-ways/Stranica-oplaty)
      - [В СMS](./#tag/integration-ways/CMS)
      - <a href="./#tag/payment-api/paths/~1v4~1payments~1authorize/post(method=Оплата%20картой%20не%20РФ)">В API</a>
      - [В SDK](./#tag/integration-ways/SDK)
      - В платежных ссылках, сформированных через [личный кабинет](./#tag/integration-info/Lichnyj-kabinet)


      # СБП (Система быстрых платежей)
      ![СБП](./images/payment-methods/sbp.png)

      Оплата производится с банковского счета плательщика, который подтверждает её в приложении своего банка.
      Если оплата происходит с desktop (ПК) – плательщик для перехода в приложение банка сканирует QR-код,
      с помощью своего мобильного устройства. В случае оплаты с мобильного устройства плательщик выбирает банк
      и переходит в его приложение для подтверждения оплаты.

      Для платежей по СПБ доступны:
      - Только одностадийная схема оплаты
      - Частичные и полные возвраты
      - Получение Токена для последующих платежей (привязка счёта)
      - Минимальный размер платежа - 1 руб.
      - Максимальный – 1 000 000 руб.

      Способы интеграции СБП:
      - [В СMS](./#tag/integration-ways/CMS)
      - [В SDK](./#tag/integration-ways/SDK)
      - <a href="./#tag/payment-api/paths/~1v4~1payments~1authorize/post(method=Оплата%20СБП)">В API</a>
      - В платежных ссылках, сформированных через [личный кабинет](./#tag/integration-info/Lichnyj-kabinet)


      # Alfa Pay
      ![СБП](./images/payment-methods/alfapay.png)

      Сервис Alfa Pay позволяет проводить оплаты со счетов Альфа-Банка с подтверждением в приложении Альфа-Банка.
      Если оплата происходит с desktop (ПК) – плательщик для перехода в приложение Альфа-Банка сканирует QR-код
      с помощью своего мобильного устройства. В случае оплаты с мобильного устройства плательщик сразу перенаправляется
      в приложение Альфа-Банка для подтверждения оплаты.

      Для платежей через Alfa Pay доступны:
      - Одностадийная и двустадийная схемы оплаты
      - Холдирование и до 7 дней с частичным или полным списанием
      - Частичные или полные возвраты
      - Получение токена для последующих платежей
      - Минимальный размер платежа - 1 руб.

      Способы интеграции:
      - [На странице оплаты](./#tag/integration-ways/Stranica-oplaty)
      - [В СMS](./#tag/integration-ways/CMS)
      - [В SDK](./#tag/integration-ways/SDK)
      - <a href="./#tag/payment-api/paths/~1v4~1payments~1authorize/post(method=Оплата%20Alfa%20Pay)">В API</a>


      # Mir Pay
      ![Mir Pay](./images/payment-methods/mirpay.png)

      Mir Pay позволяет принимать платежи картами МИР без ввода данных карты. Для проведения оплаты плательщик
      подтверждает платеж с привязанной карты в приложении Mir Pay.

      Оплата возможна только с мобильных устройств с ОС Android.

      Плательщик при оплате с мобильного устройства OS Android выбирает Mir Pay в качестве способа оплаты.

      Поверх платежной формы открывается мобильное приложение Mir Pay, в котором пользователь выбирает карту для осуществления оплаты

      Плательщик сможет провести платеж, если на устройстве, с которого он платит, установлено приложение Mir Pay
      версии 1.16.2.341 и новее. Если на устройстве плательщика установлена старая версия приложения Mir Pay,
      оплата не пройдет, плательщик сможет выбрать другой способ оплаты.

      Способы интеграции Mir Pay:
      - [На странице оплаты](./#tag/integration-ways/Stranica-oplaty)
      - [В СMS](./#tag/integration-ways/CMS)
      - [В SDK](./#tag/integration-ways/SDK)
      - <a href="./#tag/payment-api/paths/~1v4~1payments~1authorize/post(method=Страница%20оплаты%20картой)">В API</a>
      (через вызов страницы оплаты картой)


      # SberPay
      ![SberPay](./images/payment-methods/sberpay.png)

      Сервис SberPay позволяет проводить оплаты со счетов СБЕР Банка с подтверждением в приложении Банка.
      Если оплата происходит с desktop (ПК) – плательщик для перехода в приложение СБЕР Банка сканирует QR-код,
      с помощью своего мобильного устройства. В случае оплаты с мобильного устройства плательщик сразу перенаправляется
      в приложение СБЕР Банка для подтверждения оплаты.

      Для платежей через SberPay доступны:
      - Одностадийная или двустадийная схема оплаты,
      - Холдирование средств до 7 дней с частичным или полным списанием,
      - Частичные или полные возвраты,
      - Получение токена для последующих платежей,
      - Минимальный размер платежа - 1 рубль.

      Способы интеграции:
      - [На странице оплаты](./#tag/integration-ways/Stranica-oplaty)
      - [В СMS](./#tag/integration-ways/CMS)
      - [В SDK](./#tag/integration-ways/SDK)
      - <a href="./#tag/payment-api/paths/~1v4~1payments~1authorize/post(method=Оплата%20SberPay)">В API</a>


      # T-Pay
      ![T-Pay](./images/payment-methods/t-pay.png)

      Сервис T-Pay позволяет проводить оплаты со счетов Т-Банка с подтверждением в приложении Т-Банка.
      Если оплата происходит с desktop (ПК) – плательщик для перехода в приложение Т-Банка сканирует QR-код
      с помощью своего мобильного устройства. В случае оплаты с мобильного устройства плательщик сразу перенаправляется
      в приложение Т-Банка для подтверждения оплаты.

      Для платежей через T-Pay доступны:
      - Одностадийная или двустадийная схема оплаты,
      - Холдирование средств до 7 дней с частичным или полным списанием,
      - Частичные или полные возвраты,
      - Получение токена для последующих платежей,
      - Минимальный размер платежа - 1 рубль.

      Способы интеграции:
      - [На странице оплаты](./#tag/integration-ways/Stranica-oplaty)
      - [В СMS](./#tag/integration-ways/CMS)
      - [В SDK](./#tag/integration-ways/SDK)
      - <a href="./#tag/payment-api/paths/~1v4~1payments~1authorize/post(method=Оплата%20T-Pay)">В API</a>


      # BNPL «ПОДЕЛИ»
      ![ПОДЕЛИ](./images/payment-methods/podeli.png)
      Сервис BNPL («Buy Now, Pay Later», оплата частями, рассрочка) позволяет плательщику совершить покупку, оплатив только
      25% стоимости Товара. Остальная сумма будет списана с карты плательщика равными долями по 25% с интервалом в две недели.

      Для оплаты с помощью сервиса «ПОДЕЛИ» плательщик проходит скоринг сервиса, который принимает решение
      о возможности плательщиком совершить покупку.

      Лимиты на максимальную сумму покупки согласовываются с вашим курирующим менеджером.

      Способы интеграции BNPL «ПОДЕЛИ»:
      - [На странице оплаты](./#tag/integration-ways/Stranica-oplaty)
      - [В СMS](./#tag/integration-ways/CMS)
      - [В SDK](./#tag/integration-ways/SDK)
      - <a href="./#tag/payment-api/paths/~1v4~1payments~1authorize/post(method=Оплата%20в%20рассрочку)">В API</a>
  - name: payouts
    x-displayName: Выплаты
    x-displayName-lang:
      en: Payouts
    description: |
      Выплаты можно делать по номеру карты или номеру мобильного телефона
       через СБП в [личном кабинете](./#tag/integration-info/Lichnyj-kabinet/Vyplaty-na-kartu) или через [API](./#tag/payouts-api).

      Комиссия за выплату может удерживаться из суммы выплаты или с баланса УЗ.
      Узнать баланс вашей УЗ можно через ЛК или с [по API](./#tag/payouts-api/paths/~1v4~1payout~1balance/get).

      При запросе через API можно указать список УЗ, а также минимальную и/или максимальную сумму баланса –
      в ответе будут балансы только тех УЗ, которые соответствуют данным условиям.

      На одной УЗ могут быть настроены одновременно и прием платежей, и выплаты –
      в этом случае баланс для выплат будет автоматически увеличиваться за счет платежей.

      При выплате через СБП нужно указать телефон получателя и номер банка. Список банков с номерами можно [получить
      через API](./#tag/payouts-api/paths/~1v4~1payout~1banks/get), а при выплате из ЛК банк выбирается из списка.
      Также можно узнать или проверить ФИО получателя, передав в запросе номер телефона и банк или номер телефона,
      банк и ФИО получателя.

      Лимиты на суммы и количество выплат определяются в индивидуальном порядке в зависимости от типа
      деятельности ТСП.
  - name: fiscalization
    x-displayName: Фискализация (чеки)
    x-displayName-lang:
      en: Fiscalization
    description: |
      При получении платежа за товар или услугу необходимо отправлять электронный фискальный чек в Федеральную
      налоговую
      службу. За каждый непробитый (недоставленный) чек, ФНС может выставить штраф ТСП - это требование закона 54-ФЗ,
      оно касается большинства магазинов и сервисов.

      Чтобы работать по 54-ФЗ и отправлять чеки в ФНС, требуется онлайн-касса - это контрольно-кассовая техника (ККТ)
      с подключением к интернету.

      В Your Payments есть возможность пробивать чеки  через стороннюю онлайн-кассу партнеров.Чтобы использовать это решение,
      заключите договор с провайдером онлайн-касс, проинтегрируйтесь с Your Payments и включите в ЛК отправку чеков сторонней онлайн-кассе, после этого можно принимать платежи.

      # Сторонняя онлайн-касса
      Есть две схемы работы с чеками через Your Payments: стандартная и расширенная.

      При **стандартной схеме** ТСП заключает договор с кассовым провайдером, но у него нет необходимости делать с ним интеграцию, т.к. при каждом платеже и возврате Your Payments будет отправлять информацию для пробития чека у кассового провайдера. У Your Payments есть интеграция со следующими кассовыми провайдерами:
      - АТОЛ
      - OFD.ru (Ferma)
      - Orange  Data
      - Чек-онлайн

      Если ТСП – это маркетплейс или другая платформа, где есть несколько продавцов или поставщиков услуг, то как правило
      есть необходимость, чтобы в чеке было более одного юрлица. В этом случае мерчант может использовать расширенную схему,
      которая позволяет мерчанту полностью определять содержание чека и передавать его в запросе на платеж или возврат в поле receipts. Для работы по расширенной схеме мерчанту нужно заключить договор с кассовым провайдером АТОЛ.

      Для подключения к вашей УЗ фискализации, обратитесь к персональному менеджеру, после чего вы сможете задать настройки кассы в ЛК в разделе Настройки учетной записи -> Редактирование настроек -> Настройка чеков.

      Для стандартной схемы необходимо включить чекбокс «Активировать i-Retail» и заполнить поля Login и ApiKey,
      которые вы получите от персонального менеджера.

      Для **расширенной схемы** – включить чекбокс «Активировать» и выбрать/заполнить следующие настройки
      - Версия ФФД
      - Login
      - Password
      - Group code
      - Webhook URL - URL для отправки webhook-уведомлений о регистрации чеков в АТОЛ
      - Отправку вебхуков можно активировать, если указан URL для webhook-уведомлений

      После указания настроек для формирования чеков необходимо передавать данные для печати чеков в поле
      details -> receipts в запросе на авторизацию платежа / списание / возврат.

      В поле details -> receipts передается полное содержимое чека,
      которое должно соответствовать спецификации АТОЛ.

      ## Чеки в запросе на авторизацию

      ### Для одиночного продавца:
        ```json
        {
           "merchantPaymentReference":"f9e648bb-8615-4fd9-b558-fe9dfa966e36",
           "currency":"RUB",
           "returnUrl":"https://sellerurl.ru/return",
           "authorization":{
              "usePaymentPage":"YES",
              "paymentMethod":"CCVISAMC"
           },
           "client":{
              "billing":{
                 "firstName":"ИмяПокупателя",
                 "lastName":"ФамилияПокупателя",
                 "email":"mane.surname@mail.ru",
                 "phone":"79251231212",
                 "countryCode":"RU"
              }
           },
           "products":[
              {
                 "name":"Название продукта 1",
                 "sku":"001",
                 "unitPrice":"10",
                 "quantity":"1"
              },
              {
                 "name":"Название продукта 2",
                 "sku":"002",
                 "unitPrice":"100",
                 "quantity":"1"
              }
           ],
           "details":{
              "receipts":[
                 {
                    "receipt" : "{\"external_id\":\"f9e648bb-8615-4fd9-b558-fe9dfa966e36\", \"receipt\":{\"client\":{ \"email\":\"name.surname@mail.ru\"},\"company\":{ \"inn\":\"1234567890\", \"payment_address\":\"https://sellerurl.ru\"},\"items\":[ {\"agent_info\":{ \"type\":\"another\"},\"measurement_unit\":\"услуга\",\"name\":\"Название услуги 1\",\"payment_method\":\"full_payment\",\"payment_object\":\"service\",\"price\":10,\"quantity\":1,\"sum\":10,\"vat\":{ \"type\":\"vat5\"} }, {\"agent_info\":{ \"type\":\"another\"},\"measurement_unit\":\"услуга\",\"name\":\"Название услуги 2\",\"payment_method\":\"full_payment\",\"payment_object\":\"service\",\"price\":100,\"quantity\":1,\"sum\":10,\"vat\":{ \"type\":\"vat5\"} }],\"payments\":[ {\"sum\":110,\"type\":0 }],\"total\":110 },\"service\":{\"callback_url\":\"https://sellerurl.ru/receipt_callback/?external_id=f9e648bb-8615-4fd9-b558-fe9dfa966e36\" }, \"timestamp\":\"01.10.2025 06:29:13\"}"

                 }
              ]
           }
        }
        ```

      ### Для маркетплейса с единым чеком:
        ```json
        {
           "merchantPaymentReference":"f9e648bb-8615-4fd9-b558-fe9dfa966e36",
           "currency":"RUB",
           "returnUrl":"https://sellerurl.ru/return",
           "authorization":{
              "usePaymentPage":"YES",
              "paymentMethod":"CCVISAMC"
           },
           "client":{
              "billing":{
                 "firstName":"ИмяПокупателя",
                 "lastName":"ФамилияПокупателя",
                 "email":"mane.surname@mail.ru",
                 "phone":"79251231212",
                 "countryCode":"RU"
              }
           },
           "products":[
              {
                 "name":"Название продукта 1",
                 "sku":"001",
                 "unitPrice":"10",
                 "quantity":"1",
                 "marketplace":{
                    "version":1,
                    "merchantCode":"merchantCode1"
                 }
              },
              {
                 "name":"Название продукта 2",
                 "sku":"002",
                 "unitPrice":"100",
                 "quantity":"1",
                 "marketplace":{
                    "version":1,
                    "merchantCode":"merchantCode2"
                 }
              }
           ],
           "details":{
              "receipts":[
                 {
                    "merchantCode":"merchantCode3", // код субмерчанта к которому подключена общая касса
                    "receipt" : "{ \"external_id\":\"f9e648bb-8615-4fd9-b558-fe9dfa966e36\", \"receipt\":{\"client\":{ \"email\":\"name.surname@mail.ru\"},\"company\":{ \"inn\":\"1234567890\", \"payment_address\":\"https://sellerurl.ru\"},\"items\":[ {\"agent_info\":{ \"type\":\"another\"},\"measurement_unit\":\"услуга\",\"name\":\"Название услуги 1\",\"payment_method\":\"full_payment\",\"payment_object\":\"service\",\"price\":10,\"quantity\":1,\"sum\":10,\"supplier_info\":{ \"inn\":\"1234567891\", \"name\":\"Наименование поставщика 1\", \"phones\":[\"+7 (123) 123 12 12\" ]},\"vat\":{ \"type\":\"vat5\"} }, {\"agent_info\":{ \"type\":\"another\"},\"measurement_unit\":\"услуга\",\"name\":\"Название услуги 2\",\"payment_method\":\"full_payment\",\"payment_object\":\"service\",\"price\":100,\"quantity\":1,\"sum\":10,\"supplier_info\":{ \"inn\":\"1234567892\", \"name\":\"Наименование поставщика 2\", \"phones\":[\"+7 (123) 123 12 13\" ]},\"vat\":{ \"type\":\"vat5\"} }],\"payments\":[ {\"sum\":110,\"type\":0 }],\"total\":110 }, \"service\":{\"callback_url\":\"https://sellerurl.ru/receipt_callback/?external_id=f9e648bb-8615-4fd9-b558-fe9dfa966e36\" }, \"timestamp\":\"01.10.2025 06:29:13\"}"
                 }
              ]
           }
        }
        ```

      ### Для маркетплейса с несколькими чеками:

        ```json
        {
           "merchantPaymentReference":"f9e648bb-8615-4fd9-b558-fe9dfa966e36",
           "currency":"RUB",
           "returnUrl":"https://sellerurl.ru/return",
           "authorization":{
              "usePaymentPage":"YES",
              "paymentMethod":"CCVISAMC"
           },
           "client":{
              "billing":{
                 "firstName":"ИмяПокупателя",
                 "lastName":"ФамилияПокупателя",
                 "email":"mane.surname@mail.ru",
                 "phone":"79251231212",
                 "countryCode":"RU"
              }
           },
           "products":[
              {
                 "name":"Название продукта 1",
                 "sku":"001",
                 "unitPrice":"10",
                 "quantity":"1",
                 "marketplace":{
                    "version":1,
                    "merchantCode":"merchantCode1"
                 }
              },
              {
                 "name":"Название продукта 2",
                 "sku":"002",
                 "unitPrice":"100",
                 "quantity":"1",
                 "marketplace":{
                    "version":1,
                    "merchantCode":"merchantCode2"
                 }
              }
           ],
           "details":{
              "receipts":[
                 {
                    "merchantCode":"merchantCode1",
                    "receipt" :"{ \"external_id\":\"f9e648bb-8615-4fd9-b558-fe9dfa966e36\", \"receipt\":{\"client\":{ \"email\":\"name.surname@mail.ru\"},\"company\":{ \"inn\":\"1234567891\", \"payment_address\":\"https://sellerurl.ru\"},\"items\":[ {\"measurement_unit\":\"услуга\",\"name\":\"Название услуги 1\",\"payment_method\":\"full_payment\",\"payment_object\":\"service\",\"price\":10,\"quantity\":1,\"sum\":10,\"vat\":{ \"type\":\"vat5\"} }],\"payments\":[ {\"sum\":10,\"type\":0 }],\"total\":10 }, \"service\":{\"callback_url\":\"https://sellerurl.ru/receipt_callback/?external_id=f9e648bb-8615-4fd9-b558-fe9dfa966e36\" }, \"timestamp\":\"01.10.2025 06:29:13\"}"
                 },
                 {
                    "merchantCode":"merchantCode2",
                    "receipt" :"{ \"external_id\":\"f9e648bb-8615-4fd9-b558-fe9dfa966e36\", \"receipt\":{\"client\":{ \"email\":\"name.surname@mail.ru\"},\"company\":{ \"inn\":\"1234567892\", \"payment_address\":\"https://sellerurl.ru\"},\"items\":[ {\"measurement_unit\":\"услуга\",\"name\":\"Название услуги 2\",\"payment_method\":\"full_payment\",\"payment_object\":\"service\",\"price\":100,\"quantity\":1,\"sum\":100,\"vat\":{ \"type\":\"vat5\"} }],\"payments\":[ {\"sum\":100,\"type\":0 }],\"total\":100 }, \"service\":{\"callback_url\":\"https://sellerurl.ru/receipt_callback/?external_id=f9e648bb-8615-4fd9-b558-fe9dfa966e36\" }, \"timestamp\":\"01.10.2025 06:29:13\"}"
                 }
              ]
           }
        }
        ```

      ### Чеки в запросе на списание

      ### Для одиночного продавца:

      ```json
      {
         "payuPaymentReference": 223546775,
         "originalAmount": 110,
         "amount": 110,
         "currency": "RUB",
         "details": {
                  "receipts": "{\"external_id\":\"f9e648bb-8615-4fd9-b558-fe9dfa966e36\", \"receipt\":{\"client\":{ \"email\":\"name.surname@mail.ru\"},\"company\":{ \"inn\":\"1234567890\", \"payment_address\":\"https://sellerurl.ru\"},\"items\":[ {\"agent_info\":{ \"type\":\"another\"},\"measurement_unit\":\"услуга\",\"name\":\"Название услуги 1\",\"payment_method\":\"full_payment\",\"payment_object\":\"service\",\"price\":10,\"quantity\":1,\"sum\":10,\"vat\":{ \"type\":\"vat5\"} }, {\"agent_info\":{ \"type\":\"another\"},\"measurement_unit\":\"услуга\",\"name\":\"Название услуги 2\",\"payment_method\":\"full_payment\",\"payment_object\":\"service\",\"price\":100,\"quantity\":1,\"sum\":10,\"vat\":{ \"type\":\"vat5\"} }],\"payments\":[ {\"sum\":110,\"type\":0 }],\"total\":110 },\"service\":{\"callback_url\":\"https://sellerurl.ru/receipt_callback/?external_id=f9e648bb-8615-4fd9-b558-fe9dfa966e36\" }, \"timestamp\":\"01.10.2025 06:29:13\"}"
         }
      }
      ```


      ### Для маркетплейса с единым чеком:

      ```json
      {
         "payuPaymentReference": 223546775,
         "originalAmount": 110,
         "amount": 110,
         "currency": "RUB",
         "details":{
            "receipts":[
               {
                  "merchantCode":"merchantCode3", // код субмерчанта к которому подключена общая касса
                  "receipt" : "{ \"external_id\":\"f9e648bb-8615-4fd9-b558-fe9dfa966e36\", \"receipt\":{\"client\":{ \"email\":\"name.surname@mail.ru\"},\"company\":{ \"inn\":\"1234567890\", \"payment_address\":\"https://sellerurl.ru\"},\"items\":[ {\"agent_info\":{ \"type\":\"another\"},\"measurement_unit\":\"услуга\",\"name\":\"Название услуги 1\",\"payment_method\":\"full_payment\",\"payment_object\":\"service\",\"price\":10,\"quantity\":1,\"sum\":10,\"supplier_info\":{ \"inn\":\"1234567891\", \"name\":\"Наименование поставщика 1\", \"phones\":[\"+7 (123) 123 12 12\" ]},\"vat\":{ \"type\":\"vat5\"} }, {\"agent_info\":{ \"type\":\"another\"},\"measurement_unit\":\"услуга\",\"name\":\"Название услуги 2\",\"payment_method\":\"full_payment\",\"payment_object\":\"service\",\"price\":100,\"quantity\":1,\"sum\":10,\"supplier_info\":{ \"inn\":\"1234567892\", \"name\":\"Наименование поставщика 2\", \"phones\":[\"+7 (123) 123 12 13\" ]},\"vat\":{ \"type\":\"vat5\"} }],\"payments\":[ {\"sum\":110,\"type\":0 }],\"total\":110 }, \"service\":{\"callback_url\":\"https://sellerurl.ru/receipt_callback/?external_id=f9e648bb-8615-4fd9-b558-fe9dfa966e36\" }, \"timestamp\":\"01.10.2025 06:29:13\"}"
               }
            ]
         }
      }
      ```

      ### Для маркетплейса с несколькими чеками:
      ```json
      {
         "payuPaymentReference": 223546775,
         "originalAmount": 110,
         "amount": 110,
         "currency": "RUB",
         "details":{
            "receipts":[
               {
                  "merchantCode":"merchantCode1",
                  "receipt" :"{ \"external_id\":\"f9e648bb-8615-4fd9-b558-fe9dfa966e36\", \"receipt\":{\"client\":{ \"email\":\"name.surname@mail.ru\"},\"company\":{ \"inn\":\"1234567891\", \"payment_address\":\"https://sellerurl.ru\"},\"items\":[ {\"measurement_unit\":\"услуга\",\"name\":\"Название услуги 1\",\"payment_method\":\"full_payment\",\"payment_object\":\"service\",\"price\":10,\"quantity\":1,\"sum\":10,\"vat\":{ \"type\":\"vat5\"} }],\"payments\":[ {\"sum\":10,\"type\":0 }],\"total\":10 }, \"service\":{\"callback_url\":\"https://sellerurl.ru/receipt_callback/?external_id=f9e648bb-8615-4fd9-b558-fe9dfa966e36\" }, \"timestamp\":\"01.10.2025 06:29:13\"}"
               },
               {
                  "merchantCode":"merchantCode2",
                  "receipt" :"{ \"external_id\":\"f9e648bb-8615-4fd9-b558-fe9dfa966e36\", \"receipt\":{\"client\":{ \"email\":\"name.surname@mail.ru\"},\"company\":{ \"inn\":\"1234567892\", \"payment_address\":\"https://sellerurl.ru\"},\"items\":[ {\"measurement_unit\":\"услуга\",\"name\":\"Название услуги 2\",\"payment_method\":\"full_payment\",\"payment_object\":\"service\",\"price\":100,\"quantity\":1,\"sum\":100,\"vat\":{ \"type\":\"vat5\"} }],\"payments\":[ {\"sum\":100,\"type\":0 }],\"total\":100 }, \"service\":{\"callback_url\":\"https://sellerurl.ru/receipt_callback/?external_id=f9e648bb-8615-4fd9-b558-fe9dfa966e36\" }, \"timestamp\":\"01.10.2025 06:29:13\"}"
               }
            ]
         }
      }
      ```

      ## Чеки при возврате

      ### Для одиночного продавца

      ```json
      {
         "payuPaymentReference":896782,
         "originalAmount":110,
         "currency":"RUB",
         "amount":110,
         "merchantRefundReference":"123456"
         "details":{
                "receipts":
               {
                  "receipt" : "{ \"external_id\":\"f9e648bb-8615-4fd9-b558-fe9dfa966e36\", \"receipt\":{\"client\":{ \"email\":\"name.surname@mail.ru\"},\"company\":{ \"inn\":\"1234567890\", \"payment_address\":\"https://sellerurl.ru\"},\"items\":[ {\"agent_info\":{ \"type\":\"another\"},\"measurement_unit\":\"услуга\",\"name\":\"Название услуги 1\",\"payment_method\":\"full_payment\",\"payment_object\":\"service\",\"price\":10,\"quantity\":1,\"sum\":10,\"supplier_info\":{ \"inn\":\"1234567891\", \"name\":\"Наименование поставщика 1\", \"phones\":[\"+7 (123) 123 12 12\" ]},\"vat\":{ \"type\":\"vat5\"} }, {\"agent_info\":{ \"type\":\"another\"},\"measurement_unit\":\"услуга\",\"name\":\"Название услуги 2\",\"payment_method\":\"full_payment\",\"payment_object\":\"service\",\"price\":100,\"quantity\":1,\"sum\":10,\"supplier_info\":{ \"inn\":\"1234567892\", \"name\":\"Наименование поставщика 2\", \"phones\":[\"+7 (123) 123 12 13\" ]},\"vat\":{ \"type\":\"vat5\"} }],\"payments\":[ {\"sum\":110,\"type\":0 }],\"total\":110 }, \"service\":{\"callback_url\":\"https://sellerurl.ru/receipt_callback/?external_id=f9e648bb-8615-4fd9-b558-fe9dfa966e36\" }, \"timestamp\":\"01.10.2025 06:29:13\"}"
               }

         }
      }
      ```

      ### Для маркетплейса с единым чеком

      ```json
      {
         "payuPaymentReference":896782,
         "originalAmount":110,
         "currency":"RUB",
         "amount":110,
         "merchantRefundReference":"123456",
         "marketplaceV1":[
            {
               "merchant":"merchantCode1",
               "amount":10
            },
            {
               "merchant":"merchantCode2",
               "amount":100
            }
         ],
         "details":{
                "receipts":[
               {
                  "merchantCode":"merchantCode3", // код субмерчанта к которому подключена общая касса
                  "receipt" : "{ \"external_id\":\"f9e648bb-8615-4fd9-b558-fe9dfa966e36\", \"receipt\":{\"client\":{ \"email\":\"name.surname@mail.ru\"},\"company\":{ \"inn\":\"1234567890\", \"payment_address\":\"https://sellerurl.ru\"},\"items\":[ {\"agent_info\":{ \"type\":\"another\"},\"measurement_unit\":\"услуга\",\"name\":\"Название услуги 1\",\"payment_method\":\"full_payment\",\"payment_object\":\"service\",\"price\":10,\"quantity\":1,\"sum\":10,\"supplier_info\":{ \"inn\":\"1234567891\", \"name\":\"Наименование поставщика 1\", \"phones\":[\"+7 (123) 123 12 12\" ]},\"vat\":{ \"type\":\"vat5\"} }, {\"agent_info\":{ \"type\":\"another\"},\"measurement_unit\":\"услуга\",\"name\":\"Название услуги 2\",\"payment_method\":\"full_payment\",\"payment_object\":\"service\",\"price\":100,\"quantity\":1,\"sum\":10,\"supplier_info\":{ \"inn\":\"1234567892\", \"name\":\"Наименование поставщика 2\", \"phones\":[\"+7 (123) 123 12 13\" ]},\"vat\":{ \"type\":\"vat5\"} }],\"payments\":[ {\"sum\":110,\"type\":0 }],\"total\":110 }, \"service\":{\"callback_url\":\"https://sellerurl.ru/receipt_callback/?external_id=f9e648bb-8615-4fd9-b558-fe9dfa966e36\" }, \"timestamp\":\"01.10.2025 06:29:13\"}"
               }
            ]
         }
      }
      ```

      ### Для маркетплейса с несколькими чеками:

      ```json
      {
         "payuPaymentReference":896782,
         "originalAmount":110,
         "currency":"RUB",
         "amount":110,
         "merchantRefundReference":"123456",
         "marketplaceV1":[
            {
               "merchant":"merchantCode1",
               "amount":10
            },
            {
               "merchant":"merchantCode2",
               "amount":100
            }
         ],
         "details":{
           "receipts":[
               {
                  "merchantCode":"merchantCode1",
                  "receipt" :"{ \"external_id\":\"f9e648bb-8615-4fd9-b558-fe9dfa966e36\", \"receipt\":{\"client\":{ \"email\":\"name.surname@mail.ru\"},\"company\":{ \"inn\":\"1234567891\", \"payment_address\":\"https://sellerurl.ru\"},\"items\":[ {\"measurement_unit\":\"услуга\",\"name\":\"Название услуги 1\",\"payment_method\":\"full_payment\",\"payment_object\":\"service\",\"price\":10,\"quantity\":1,\"sum\":10,\"vat\":{ \"type\":\"vat5\"} }],\"payments\":[ {\"sum\":10,\"type\":0 }],\"total\":10 }, \"service\":{\"callback_url\":\"https://sellerurl.ru/receipt_callback/?external_id=f9e648bb-8615-4fd9-b558-fe9dfa966e36\" }, \"timestamp\":\"01.10.2025 06:29:13\"}"
               },
               {
                  "merchantCode":"merchantCode2",
                  "receipt" :"{ \"external_id\":\"f9e648bb-8615-4fd9-b558-fe9dfa966e36\", \"receipt\":{\"client\":{ \"email\":\"name.surname@mail.ru\"},\"company\":{ \"inn\":\"1234567892\", \"payment_address\":\"https://sellerurl.ru\"},\"items\":[ {\"measurement_unit\":\"услуга\",\"name\":\"Название услуги 2\",\"payment_method\":\"full_payment\",\"payment_object\":\"service\",\"price\":100,\"quantity\":1,\"sum\":100,\"vat\":{ \"type\":\"vat5\"} }],\"payments\":[ {\"sum\":100,\"type\":0 }],\"total\":100 }, \"service\":{\"callback_url\":\"https://sellerurl.ru/receipt_callback/?external_id=f9e648bb-8615-4fd9-b558-fe9dfa966e36\" }, \"timestamp\":\"01.10.2025 06:29:13\"}"
               }
            ]
      }
      ```

      Полная документация на сайте АТОЛ: [https://atol.online/library/?tab=devs](https://atol.online/library/?tab=devs),
      здесь вы можете скачать «API:Описание протокола АТОЛ Онлайн» под нужную Вам версию ФФД.
  - name: marketplaces-split
    x-displayName: Решения для маркетплейсов и платформ
    x-displayName-lang:
      en: Split payments for marketplaces platforms
    description: |
      Сплитование позволяет разделить платеж, принятый от плательщика, на нескольких получателей:
        например, платформу маркетплейса, службу доставки, поставщиков товаров. Описание процесса:

      1. Покупатель создает заказ на торговой площадке
      2. Торговая площадка отправляет в Your Payments запрос на оплату передавая продавца каждого из товаров и суммы,
      для разделения платежа
      3. Плательщик совершает оплату.
      4. Your Payments уведомляет ТСП о статусе платежа
      5. Your Payments выплачивает денежные средства по указанным площадкой продавцам

      Сплитование доступно для методов оплат:
      - [Карты](./#tag/payment-methods/Bankovskie-karty-RF)
      - [СБП](./#tag/payment-methods/SBP-(Sistema-bystryh-platezhej))
      - [Alfa Pay](./#tag/payment-methods/Alfa-Pay)
      - [Mir Pay](./#tag/payment-methods/Mir-Pay)
      - [SberPay](./#tag/payment-methods/SberPay)
      - [T-Pay](./#tag/payment-methods/T-Pay)
  - name: qst
    x-parent: marketplaces-split
    x-displayName: Подключение сабмерчантов
    description: |
      ТСП или платформы  могут добавлять сабмерчантов путем отправки заполненной анкеты:
      - в разделе [Подключение сабмерчантов](https://secure.ypmn.ru/cpanel/questionarie.php) в Личном кабинете
      - [по API](./#tag/qst-api)

      API позволяет:
      - Отправить заполненную анкету на проверку
      - Получить pdf-файл с заполненной анкетой
      - Узнать текущий статус анкеты и получить список созданных по этой анкете аккаунтов продавцов
      - Получить весь список анкет с указанием общей информации, статусу и созданных аккаунтов продавцов
  - name: qst-steps
    x-parent: qst
    x-displayName: Этапы подключения сабмерчантов
    description: |
      Подключение проходит в несколько этапов:
        - создание, заполнение и отправка мерчантом анкеты на проверку;
        - проверка анкеты со стороны Your Payments с одним из следующих результатов:
          - отказ;
          - анкета одобрена (переход к следующему шагу);
          - анкета отправлена на доработку (мерчант должен внести изменения и снова отправить анкету на проверку);
        - мерчант скачивает и распечатывает pdf-файл с заполненной анкетой, подписывает анкету и отправляет пакет документов YP;
        - в случае успешного прохождения проверки в системе создается аккаунт продавца (сабмерчанта).
  - name: qst-status
    x-parent: qst
    x-displayName: Статусы анкет сабмерчантов
    description: |
      | Статус    | Значение |
      | --------- | -------- |
      | created   | Новая анкета, необходимо заполнить и отправить на проверку YPMN |
      | filled    | Анкета заполнена и отправлена на проверку, ожидает поступления в работу |
      | edited    | Анкета отредактирована, необходимо заполнить и отправить на проверку YPMN |
      | review    | Анкета на проверке у YPMN, ожидайте, пожалуйста |
      | returned  | Анкета возвращена на уточнение, необходимо внести исправления и повторно отправить на проверку YPMN |
      | declined  | Анкета отклонена, дальнейшие действия не требуются |
      | approved  | Анкета подтверждена, пожалуйста, распечатайте анкету |
      | printed   | Необходимо направить подписанные документы в НКО ООО Твои Платежи |
      | exported  | Анкета проходит внутренние процедуры, ожидайте создания аккаунта(ов) субмерчантов |
      | imported  | Анкета проходит внутренние процедуры, ожидайте создания аккаунта(ов) субмерчантов |
      | completed | Работа по анкете завершена, аккаунт(ы) субмерчантов созданы |
      | removed   | Анкета удалена |
  - name: qst-lk
    x-parent: qst
    x-displayName: Подключение в ЛК
    description: |
      Подключение в ЛК осуществляется в разделе [Подключение сабмерчантов](https://secure.ypmn.ru/cpanel/questionarie.php).
      ### Добавление одного сабмерчанта
      Нажмите кнопку `Добавить` / `Добавить по ИНН` для добавления одного сабмерчанта.

      ### Добавление реестра сабмерчантов (если у вас подключена такая возможность)

      - Выберете файл реестра ([пример файла](https://secure.ypmn.ru/assets/questionaries/tsp-example.csv))
      - Если первая строка в файле является заголовком, отметьте галочку `Первая строка - заголовок`
      - Нажмите кнопку `Загрузить`
      Если в реестре указаны реквизиты сабмерчантов, то анкеты добавятся в статусе "К запуску", иначе в статусе "На проверке".
  - name: secure-deal
    x-parent: marketplaces-split
    x-displayName: Безопасная сделка
    description: |
      Безопасная сделка - продукт для платформ, являющихся витриной товаров или услуг третьих лиц,
      позволяющий обеспечить перечисление денег продавцу физлицу после того, как покупатель подтвердил
      получение товара или услуги.

      [Сумма покупки может быть разделена](./#tag/payment-api/paths/~1v4~1payments~1authorize/post(split=yes)(method=Страница%20оплаты%20картой)) между продавцом, платформой и другими участниками сделки.
      Сплитование происходит в момент оплаты покупателем. При этом платформа и другие участники, кроме продавца,
      [получают свою часть суммы](./#tag/payouts-api) на следующий либо другой день, определенный в договоре с Your Payments.
      Деньги продавцу переводятся по распоряжению платформы, например, после того, как покупатель подтвердил
      получение товара/услуги на сайте платформы.

      Безопасную сделку используют маркетплейсы, доски объявлений, агрегаторы, биржи фрилансеров.

      Сценарий для покупателя и продавца:
      - покупатель выбирает товар/услугу на сайте платформы и [производит оплату](./#tag/payment-api/paths/~1v4~1payments~1authorize/post(split=yes)(method=Страница%20оплаты%20картой)) через Your Payments
      - с покупателя списывается сумма покупки (в случае оплаты картой также возможна блокировка суммы на карте
      до 7 дней, либо 30 дней по спец. категориям мерчантов: 4411, 4511, 4722, 5962, 4816, 5712, 6513, 7012, 7032,
      7033, 7273, 7298, 7512, 7513, 7519, 7922, 7929, 7941, 7997, 8241, 8244, 8249, 8299, 8675, 8699)
      - покупатель получает товар/услугу и подтверждает это в интерфейсе платформы
      - [продавец получает сумму покупки](./#tag/payouts-api) на карту, которую предварительно привязал на платформе, или по номеру телефона в банк, которые он указал на платформе

      Безопасную сделку можно делать на следующих методах оплаты:
      - [Банковские карты](./#tag/payment-methods/Bankovskie-karty-RF);
      - [СБП](./#tag/payment-methods/SBP-(Sistema-bystryh-platezhej));
      - Pay-сервисы:
          [Alfa Pay](./#tag/payment-methods/Alfa-Pay),
          [Mir Pay](./#tag/payment-methods/Mir-Pay),
          [SberPay](./#tag/payment-methods/SberPay),
          [T-Pay](./#tag/payment-methods/T-Pay).
  - name: software-integration
    x-displayName: Разработчикам
    x-displayName-lang:
      en: Software Integration
  - name: testing
    x-parent: software-integration
    x-displayName: Тестирование интеграции
    description: |
      [Postman](https://www.postman.com/) коллекции для тестирования наших API:

      * [API YPMN v4](https://secure.ypmn.ru/docs/swagger/postman/payu_v4_json_api_simple_apms_postman_collection.json)
      * [Переменные окружения](https://secure.ypmn.ru/docs/swagger/postman/PayU-Standard_RU.postman_environment.json)

      Текущие файлы среды настроены с общими учетными записями, и данные могут быть удалены в любое время.

      В любой среде вы можете заменить `PAYU_SECRET_KEY` и `PAYU_MERCHANT_CODE` на код, полученный в Личном Кабинете.

      При работе с тестовым контуром (sandbox) параметр HOST_BASE_URL в переменных окружения должен быть равен `https://sandbox.ypmn.ru`

      <span class="attention">Доступ к тестовому контуру выдается индивидуально после обращения к курирующему менеджеру.</span>

      При работе с боевым контуром параметр HOST_BASE_URL в переменных окружения должен быть равен `https://secure.ypmn.ru`

      ## Карты для проведения операций оплаты в тестовом контуре:
      | Номер карты | Срок действия, месяц | Срок действия, год | CVV / CVC2 | Имя держателя | Платежная система | 3DS | Результат оплаты | Получаемая ошибка |
      | ----------- | -------------------- | ------------------ | ---------- | ------------- | ----------------- | --- | ---------------- | ----------------- |
      | 4652035440667037 | 8 | Следующий год | 971 | Любое Имя | VISA | Нет | Успешно | - |
      | 4051060000000178 | 12 | Следующий год | 895 | Любое Имя | VISA | Да | Успешно | - |
      | 5105105105105100 | 3 | Следующий год | 235 | Любое Имя | MASTERCARD | Нет | Успешно | - |
      | 5547629478785897 | 7 | Следующий год | 123 | Любое Имя | MASTERCARD | Да | Успешно | - |
      | 2200204265570145 | 3 | Следующий год | 235 | Любое Имя | MIR | Нет | Успешно | - |
      | 2200201673687446 | 7 | Следующий год | 123 | Любое Имя | MIR | Да | Успешно | - |
      | 9112110000000003 | 3 | Следующий год | 235 | Любое Имя | BELKART | Нет | Успешно | - |
      | 9112330000000007 | 7 | Следующий год | 123 | Любое Имя | BELKART | Да | Успешно | - |
      | 5563693062030796 | 3 | Любой, до 20 лет в будущем | 235 | Любое Имя | MASTERCARD | Нет | НЕ успешно | Stolen card, pick up |
      | 4921301010459253 | 3 | Любой, до 20 лет в будущем | 235 | Любое Имя | VISA | Нет | НЕ успешно | Default error |
      | 2200200000000000 | 3 | Любой, до 20 лет в будущем | 235 | Любое Имя | MIR | Нет | НЕ успешно | Non Sufficient Funds |

      ## Карты для проведения операций выплаты на карту в тестовом контуре:
      | Номер карты | Код ответа | Описание | Статус выплаты |
      | ----------- | ---------- | -------- | -------------- |
      | 4149605380309302 | 1   | Сумма должна быть более 1000 RUB | Успешно |
      | 4485911421241112 | -14 | Запрет перевода | Отмена |
      | 4532630960308024 | -3  | Неизвестная карта | Отмена |
      | 4508391810655094 | -13 | Превышен лимит переводов | Отмена |
      | 4716697592364426 | -25 | Отказ системы переводов | Отмена |
      | 4716651015234500 | -11 | 28 RUB, симулятор таймаута 30 сек. | Обработка |
      | 4716658082797970 | -11 | Неудачная выплата | Обработка |

      ## Карты для проведения оплат в тестовом контуре с использованием 3DS симулятора:
      | Номер карты | Срок действия, месяц | Срок действия, год | CVV / CVC2 | Имя держателя | 3DS | Результат оплаты |
      | ----------- | -------------------- | ------------------ | ---------- | ------------- | --- | ---------------- |
      | 4111111111111111 | Любой | Любой, до 20 лет вперёд | Любой | Любое Имя | Выбор в симуляторе | Вариабелен |

      ## Специфические суммы операций в тестовом контуре:
      | Amount (сумма операции) | Fraud check Result (результат антифрод проверки) |
      | ----------------------- | ------------------------------------------------ |
      | 140 RUB | invalid decision - неверное решение системы противодействия мошенничеству |
      | 150 RUB | internal error in scoring - ошибка при скоринге операции |
      | 200 RUB | manual review stage - ручная проверка платежа |
      | 333 RUB | directly fraud - отказ платежа, как признанного мошенническим |
      | 666 RUB | ошибка платежного шлюза, транзакция неуспешна |

      ## IP-адреса тестового контура

      Если на вашей стороне применено фильтрование входящего трафика с использованием белого списка, то рекомендуем разрешить следующие адреса:

      * 81.211.57.50
      * 81.211.57.52
      * 185.6.175.138
      * 185.6.175.142
  - name: cms
    x-parent: software-integration
    x-displayName: CMS модули
    description: |
      CMS (Content Management Systems) &ndash; системы управления содержимым сайтов. Мы поддерживаем и развиваем наши модули для большинства популярных CMS:
  - name: cms - 1c bitrix
    x-parent: cms
    x-displayName: 1C Bitrix
    description: |
      <a href="http://www.1c-bitrix.ru/?utm_source=ypmn.ru">
        <img src="./images/cms/bitrix.svg" loading="lazy" class="cms-logo-new">
      </a>

      Модуль Your Payments работает на 1С Битрикс начиная с версии 17 в
      редакциях: «Стандарт», «Малый бизнес», «Бизнес», «Интернет-магазин + CRM».

      Модуль устанавливается через Каталог решений (маркетплейс) по ссылке:

      [Маркетплейс Битрикс](https://marketplace.1c-bitrix.ru/solutions/ypmn.payment/)

      [Модуль для старых версий 1C Bitrix до 14.х](https://github.com/yourpayments/Bitrix)
  - name: cms - tilda
    x-parent: cms
    x-displayName: Тильда
    description: |
      <a href="https://tilda.cc/?utm_source=ypmn.ru" rel="noopener" target="_blank">
        <img src="./images/cms/tilda.png" loading="lazy" class="cms-logo-new">
      </a>

      В разделе настроек сайта выбрать «Платёжные системы»

      <img src="./images/cms/tilda/tilda_1.png" loading="lazy">

      На следующем экране выбрать «Универсальная платёжная система»

      <img src="./images/cms/tilda/tilda_2.png" loading="lazy">

      Далее из выпадающего списка выбрать шаблон «YPMN»

      <img src="./images/cms/tilda/tilda_3.png" loading="lazy">

      После выбора шаблона «YPMN» заполнить настройки
      (не забудьте указать и остальные параметры, такие как НДС)

      <img src="./images/cms/tilda/tilda_4.png" loading="lazy">
  - name: cms - wordpress woocommerce
    x-parent: cms
    x-displayName: WooCommerce для Wordpress
    description: |
      <div class="cms-logo">
        <img src="https://secure.ypmn.ru/docs/images/cms/woo.svg" loading="lazy" class="cms-logo-new">
      </div>

      Модуль можно установить скачав его с сайта GitHub:

      [Github.com/yourpayments/woocommerce](https://github.com/yourpayments/woocommerce)

      [Видео инструкция по
      установке](https://rutube.ru/video/private/dcf8f4c7405bcd07adbaa9fb0c780bc9/?p=U01pLsYbffrOL0o08uqxFw)
  - name: cms - opencart
    x-parent: cms
    x-displayName: Opencart
    description: |
      <img src="https://secure.ypmn.ru/docs/images/cms/opencart3-4.svg" loading="lazy" class="cms-logo-new">

      Модуль можно установить скачав его с GitHub:

        - [Для OpenCart версии 4: Github.com/yourpayments/OpenCart4](https://github.com/yourpayments/OpenCart4)
        - [Для OpenCart версии 3: Github.com/yourpayments/OpenCart3](https://github.com/yourpayments/OpenCart3)
  - name: cms - Joomla
    x-parent: cms
    x-displayName: Joomla
    description: |
      <img src="./images/cms/joomla.png" loading="lazy" class="cms-logo-new">

        - [Joomla v5 + Virtuemart v4: Github.com/yourpayments/Joomla-Virtuemart](https://github.com/yourpayments/Joomla-Virtuemart)
        - [Joomla v5 + JoomShopping v5: Github.com/yourpayments/Joomla-Joomshopping](https://github.com/yourpayments/Joomla-Joomshopping)
  - name: cms - insales
    x-parent: cms
    x-displayName: InSales
    description: |
      <img src="https://secure.ypmn.ru/docs/images/cms/insales.svg" loading="lazy" class="cms-logo-new">

      Если у вас тарифный план Омни, Расширенный или Премиум, вы можете [обратиться в техническую поддержку InSales](https://www.insales.ru/contacts), и вам установят платежный модуль Your Payments.
  - name: cms - autoweboffice
    x-parent: cms
    x-displayName: АвтоВебОфис
    description: |
      АвтоВебОфис предоставляет [встроенный модуль для интеграции с Your
      Payments](https://autoweboffice.com/wiki/doku.php?id=payu)
  - name: sdks
    x-parent: software-integration
    x-displayName: SDK
    description: "SDK (Software Development Kit) – готовые программные библиотеки на разных языках программирования.\n\nОни полезны для быстрого старта в программировании интеграции.\nИспользование SDK делает интеграции проще (быстрее и дешевле), а также включает уже протестированный код и его бесплатные обновления.\n\n## PHP\n\n[https://Github.com/yourpayments/php-api-client](https://github.com/yourpayments/php-api-client)\n\nПодключить SDK в свой проект можно с помощью\n[пакета composer](https://packagist.org/packages/yourpayments/php-api-client):\n```bash\ncomposer require yourpayments/php-api-client\n```\n\nSDK на PHP содержит в себе подробные\n[примеры](https://github.com/yourpayments/php-api-client/tree/main/src/Examples),\nи готовый сервер с ними же:\n\n![Запущенный сервер](./images/php-api-client-mockup.png)\n\nДля запуска сервера с помощью [Docker](https://github.com/yourpayments/php-api-client/blob/main/docker-compose.yml): склонируйте репозиторий и запустите:\n```bash\ngit clone https://github.com/yourpayments/php-api-client.git\ncd php-api-client\ndocker compose up\n```\n\nДля запуска сервера с помощью PHP: склонируйте репозиторий и запустите:\n```bash\ngit clone https://github.com/yourpayments/php-api-client.git\ncd php-api-client\nphp -S localhost:8080 index.php\n```\n\nПосле запуска сервер станет доступен по адресу [http://localhost:8080](http://localhost:8080/)\n\n\n## Go\n![Go SDK](./images/go-api-client.png)\n\n[Github.com/yourpayments/go-api-client](https://github.com/yourpayments/go-api-client)\n\n```go\nimport(\n\t\"github.com/yourpayments/go-api-client\"\n)\n```\n\n## Python\n[Github.com/yourpayments/python-api-client](https://github.com/yourpayments/python-api-client)\n\n## JavaScript\n[Github.com/yourpayments/ts-ypmn-client](https://github.com/yourpayments/ts-ypmn-client)\n\n[Пакет NPM](https://www.npmjs.com/package/ts-ypmn-client)\n<br>\n<hr>\n<br>\n"
  - name: api
    x-parent: software-integration
    x-displayName: API
  - name: api-intro
    x-parent: api
    x-displayName: Введение
    description: |
      Наш API описан в <a href="https://ru.wikipedia.org/wiki/OpenAPI_(%D1%81%D0%BF%D0%B5%D1%86%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D1%8F)" rel="noopener" target="_blank">формате OpenAPI</a>, что
      предоставляет нашим клиентам дополнительные возможности по валидации
      взаимодействия и <a href="https://openapi.tools/" rel="noopener" target="_blank">генерации программного кода</a>.

      API используется для взаимодействия с Your Payments для обработки платежей. Имейте в виду, что
      доступны некоторые варианты интеграции:

      - для одиночных продавцов
      - для торговых площадок (используется несколько учетных записей, где одна
      главная, остальные подчиненные)

      Эти API методы позволяют продавцу принимать или отправлять онлайн-платежи
      на своем веб-сайте. Продавец может интегрировать несколько платежных потоков.

      - Для входящего потока платежей различными доступными методами оплаты
      используйте [метод оплаты](#tag/payment-api)
      - Для входящего потока платежей различными доступными методами оплаты с
      разделением платежа используйте
      - [метод Оплаты с разделением платежа](#tag/payment-split-api)

      Для исходящего потока (выплаты на карты) используйте [метод выплат на
      карты](#tag/payouts-api)
  - name: authentication
    x-parent: api
    x-displayName: Аутентификация
    description: |
      Все запросы, выполняемые к процессинговой платформе, должны включать корректно расчитаную подпись, в противном
      случае в обработке будет отказано.

      Подпись передается в заголовке запроса **X-Header-Signature**. Также должны быть отправлены следующие заголовки:


      ### Идентификационный код продавца

      | Тип схемы: | API-Key |
      | ---------- | ------- |
      | Имя заголовка : | `X-Header-Merchant` |


      Ваш идентификационный код (код мерчанта) в нашей системе (вы можете найти его в личном кабинете Меню: "Настройки учетной записи > Редактирование настроек > поле "Код продавца")

      ### Дата

      | Тип схемы: | API-Key |
      | ---------- | ------- |
      | Имя заголовка : | `X-Header-Date` |

      Дата запроса в формате [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) (`"Y-m-d\TH:i:sP"`, например, 2032-01-01T11:22:33+03:00)

      ### Подпись

      | Тип схемы: | API-Key |
      | ---------- | ------- |
      | Имя заголовка : | `X-Header-Signature` |

      Криптографическая подпись нужна для безопасного подтверждения подлинности запросов. Она формируется с помощью алгоритма `HMAC-SHA256`. Ключом шифрования является ваш "секретный ключ" от API.

      Для формирования подписи шифруется строка, собранная из следующих подстрок:
       - Содержимого HTTP-заголовка `X-Header-Merchant`
       - Содержимого HTTP-заголовка `X-Header-Date`
       - Нименование HTTP метода (`POST`, `GET`, `PUT`, `DELETE`)
       - Базовый путь из URL вызываемого API. (например: `/api/v4/payments/authorize`)
       - Строка запроса (query string) из API URL (если есть)
       - MD5 (в нижнем регистре и шеснадцатеричном формате) от тела запроса


      Если ваш запрос не содержит тела, то последним элементом из приведенного выше списка будет вычисленный MD5 пустой строки «». Примером здесь может служить любой запрос `GET`.


      Все символы итоговой подписи должны быть строчными шестнадцатеричными символами (например: `da0b9f5e7e12cd02f02ed1591802d3739762a69c0ea31e8a3b28e6eb817b73ec`).


      Ваш секретный ключ можно найти в Личном Кабинете > Управление учетной записью > Настройки учетной записи > Поле "Секретный ключ". Если вам требуется дополнительная помощь в выполнении этого шага, пожалуйста, свяжитесь с нами.


      Базовый путь и строка запроса вычисляются в соответствии с разделом [RFC3986](https://www.ietf.org/rfc/rfc3986.txt)'s "Syntax Components".


      Примеры реализации подписи на разных языках программирования:
       - [Go](https://github.com/yourpayments/go-api-client/blob/master/api_requst.go)
       - [PHP](https://github.com/yourpayments/php-api-client/blob/main/src/ApiRequest.php)
       - [Python](https://github.com/yourpayments/python-api-client/blob/main/ypmn_classes_general_function.py)
       - [TypeScript / JavaScript](https://github.com/yourpayments/ts-ypmn-client/blob/main/lib/api/ApiRequest.ts)

      Рекомендуем использовать готовые [SDK](#tag/sdks), в них входят готовые и проверенные функции подписи запросов. При использовании готовой библиотеки Вы также получаете бесплатные обновления. Если Вашего языка программирования ещё нет в списке, напишите нам.

      Для проверки подписи в редиректе после оплаты применяется тот же алгоритм. Строка собирается из:

      * поля `merchant`
      * поля `date`
      * HTTP-метод (`POST`, `GET`)
      * URL-адреса, на который направляется редирект
      * контрольная сумма MD5 (строчный шестнадцатеричный) от поля `body`

      Подпись находится в поле `signature`
  - name: same-result
    x-parent: api
    x-displayName: Идемпотентность
    description: |
      API поддерживает [идемпотентность](https://ru.wikipedia.org/wiki/%D0%98%D0%B4%D0%B5%D0%BC%D0%BF%D0%BE%D1%82%D0%B5%D0%BD%D1%82%D0%BD%D0%BE%D1%81%D1%82%D1%8C) для безопасного повторения запросов без случайного повторного выполнения одной и той же операции.

      Идемпотентность работает, сохраняя ответы на запросы в течение 24 часов, в
      течение которых клиенты могут использовать
      тот же ключ идемпотентности для получения исходного ответа. Создание
      нескольких идентичных запросов имеет тот же
      эффект, что и выполнение одного запроса.

      Вы можете использовать один и тот же ключ идемпотентности в течение 24
      часов, после чего ключ будет удален.

      Все запросы POST принимают ключи идемпотентности. Отправка ключей
      идемпотентности в запросах GET и DELETE не имеет
      никакого эффекта, и ее следует избегать.

      ### Отправка ключа идемпотентности:
      Ключ идемпотентности отправляется в заголовке запроса:
      | Заголовок | Описание |
      | --------- | -------- |
      | X-Header-Idempotency-Key | Любая непустая строка с максимальной длиной 36 символов |
  - name: auth
    x-parent: api
    x-displayName: Ограничения
    description: |
      Чтобы избежать необоснованного количества запросов от одного продавца,
      некоторые API Your Payments защищены системой квот, которая разрешает только определенное
      количество запросов в течение
      60 секунд.

      API-интерфейсы, защищенные
      этой системой, будут отправлять дополнительные заголовки ответа, чтобы
      пользовательское приложение знало, сколько запросов у него осталось.

      Если продавец превысит свою квоту, ему придется
      подождать, прежде чем делать дальнейшие
      запросы к этому API.

      ### Ограничения API указаны в заголовках ниже:
      | Заголовок | Описание |
      | --------- | -------- |
      | X-Rate-Limit-Limit | Количество разрешенных запросов за период 60 секунд |
      | X-Rate-Limit-Reset | Сколько времени в секундах осталось до конца текущего периода в 60 секунд |
      | X-Rate-Limit-Remaining | Сколько запросов доступно до конца текущего периода 60 секунд |

      ### Превышение квоты запросов
      Когда клиент превышает квоту запросов, сервер возвращает код ответа HTTP
      429 (Too many requests)
  - name: webhooks
    x-parent: software-integration
    x-displayName: Вебхуки
    x-displayName-lang:
      en: Webhooks
    description: |
      <a href="https://ru.wikipedia.org/wiki/Webhook" rel="noopener" target="_blank">Вебхуки</a> --
          обратные HTTP-запросы в сторону ТСП со стороны Your Payments.

      Форматы вебхуков (можно выбрать в личном кабинете):
          - поля POST
          - JSON

      Виды вебхуков:
          1. Вебхуки об операциях оплат и рефандов
          2. Вебхуки об операциях выплат

      При вводе нового URL осуществляется проверка его доступности посредством отправки пустого GET запроса.
      Ожидаемый код <a href="https://ru.wikipedia.org/wiki/%D0%A1%D0%BF%D0%B8%D1%81%D0%BE%D0%BA_%D0%BA%D0%BE%D0%B4%D0%BE%D0%B2_%D1%81%D0%BE%D1%81%D1%82%D0%BE%D1%8F%D0%BD%D0%B8%D1%8F_HTTP"
      rel="noopener" target="_blank">HTTP-ответа</a>: 200.

      HTTP-код ответа 200 на запрос вебхука также является подтверждением его получения (иначе вебхуки будет
      отправляться повторно, пока количество попыток не достигнет лимита, 10).
    x-description-lang:
      en: Structure of notifications sent by YPMN for different payment flow.
  - name: webhook-stauses
    x-parent: lists
    x-displayName: Коды обработки ответов на webhook-уведомления
    description: |
      (про то что ответить 200, перенести в вебхуки,
         добавить про post & get, посмотреть пример в клаудах)

         После проведения успешной смены статуса каждой операции, сервер "Твои Платежи" будет посылать на указанный
         URL POST-запрос со всей информацией о заказе.
         Для более подробной информации, пожалуйста, см. техническую документацию.

         Обращаем внимание, что при вводе нового URL осуществляется проверка его доступности посредством отправки пустого GET запроса.
  - name: operation-codes
    x-parent: software-integration
    x-displayName: Статусы транзакций
    description: |
      | СТАТУС              | ЗНАЧЕНИЕ |
      |-------------------- |----------|
      | PENDING             | Транзакция поступила в обработку |
      | PROCESSING          | Транзакция проверяется антифродом (системой предотвращения мошенничества) |
      | PAYMENT_AUTHORIZED  | Транзакция авторизована банком (средства захолдированы) |
      | REVERSED            | Транзакция отменена до списания |
      | COMPLETE            | Транзакция завершена (средства списаны со счёта Плательщика) |
      | REFUND              | Запрошен возврат по платежу (возврата осуществляется через отдельную транзакцию, которая также имеет номер и статусы) |
  - name: infosec
    x-displayName: Информационная безопасность
    x-displayName-lang:
      en: infosec
    description: |
      # PCI DSS
      PCI DSS — стандарт информационной безопасности, принятый в индустрии платежных карт МИР, Visa и Mastercard. Соблюдать требования стандарта обязаны все компании, которые принимают карты к оплате и/или могут влиять на безопасность данных платежных карт.

      Основное требование стандарта — максимально ограничить доступ к данным платежных карт. Оптимальное решение — вообще не иметь к ним доступа, а вместо этого использовать сертифицированных провайдеров для приема платежей. На практике это означает, что нельзя ни запрашивать, ни передавать номера карт. Если при звонке клиент говорит, что не проходит платеж, и начинает диктовать номер, нужно его прервать и объяснить, почему вы не можете получать данные карты. Если присылает по почте или скайпу — удалять сообщение и сообщать, что передавать данные карты небезопасно.

      К охраняемым данным относятся полный номер карты и код CVV2/CVC2/CVP2 (последние 3 цифры на обратной стороне). Имя владельца, срок действия и маскированный номер карты (первые 6 и последние 4 цифры) в защите по требованиям стандарта не нуждаются, поэтому их можно использовать в разумных пределах.

      ## Соответствие PCI DSS вместе с Your Payments
      [Your Payments — сертифицированный сервис-провайдер](https://secure.ypmn.ru/docs/images/pci-dss-2026.pdf)
      с максимальным уровнем соответствия PCI DSS, предоставляющим право хранить данные платежных карт
      и обрабатывать более 6 миллионов платежей ежегодно. Подтверждение соответствия проходит каждый год
      в рамках сертификационного аудита.

      Используя платёжные интерфейсы на стороне Your Payments, вы можете избежать необходимости
      проходить сертификацию PCI-DSS для приёма платежей.

      Исключением является прием платежей по технологии Secure Field и host2host.
      Для использования необходимо подтверждать соответствие: заполнять лист самооценки и
      ежеквартально проверять сайт на уязвимости специальным сканером (ASV-сканирование).

      Схема для выбора [листа самооценки](https://www.pcisecuritystandards.org/document_library/):

      ![Схема для выбора листа самооценки](./images/sert-select.png)

      # Домены Your Payments
      Компании принадлежит домен второго уровня `YPMN.RU`.
      Работа с системой осуществляется через этот домен и его поддомены.

      # Подпись запросов API
      Все запросы к Системе должны включать корректно рассчитанную [подпись](./#tag/authentication), в противном случае в обработке будет отказано.
  - name: how it works - basic
    x-parent: how it works
    x-displayName: Как работает базовый вариант
    description: |
      1. Покупатель формирует корзину(заказ) на сайте Продавца и нажимает на кнопку "Оплатить".
      2. Система Продавца формирует запрос к Your Payments.
      3. Система Your Payments формирует уникальную операцию и предоставляет URL защищенной страницы для ввода данных карты.
      4. Продавец перенаправляет покупателя на предоставленную в п.3. страницу.
      5. Покупатель вводит данные карты и подтверждают оплату.
      6. Your Payments перенаправляет покупателя в банк выпустивший карту.
      7. Банк идентифицирует покупателя посредством технологии 3-D Secure / MirAccept, анализируя параметры его браузера, устройства и при необходимости запрашивая ввод одноразового пароля, отправляемого через SMS или PUSH сообщение.
      8. Покупатель вводит в форму пароль.
      9. Если идентификация завершена успешно - Банк утверждает платеж и отправляет покупателя обратно в Your Payments.
      10. Your Payments в свою очередь, отправляет покупателя на адрес, предоставленный Продавцом для возврата после попытки оплаты.
      11. Система Продавца сопоставляет полученную при возврате клиента с имеющимся заказом и отображает информацию о результате оплаты.
      12. После завершения операции(клиринга), денежные средства поступают в Your Payments.
      13. Your Payments перенаправляет средства на счет продавца.
      [Перейти к техническому описанию базового процесса](#tag/payment-api)
  - name: how it works - split
    x-parent: how it works
    x-displayName: Как работает система разделения платежей для торговых площадок
    description: |
      1. Покупатель формирует корзину(заказ) на сайте Торговой площадки и нажимает на кнопку "Оплатить".
      2. Система Торговой площадки формирует запрос к Your Payments, обогащая каждую товарную позицию идентификатором ее продавца.
      3. Система Your Payments формирует уникальную операцию и предоставляет URL защищенной страницы для ввода данных карты.
      4. Торговая площадка перенаправляет покупателя на предоставленную в п.3. страницу.
      5. Покупатель вводит данные карты и подтверждают оплату.
      6. Your Payments перенаправляет покупателя в банк выпустивший карту.
      7. Банк идентифицирует покупателя посредством технологии 3-D Secure / MirAccept, анализируя параметры его браузера, устройства и при необходимости запрашивая ввод одноразового пароля, отправляемого через SMS или PUSH сообщение.
      8. Покупатель вводит в форму пароль.
      9. Если идентификация завершена успешно - Банк утверждает платеж и отправляет покупателя обратно в Your Payments.
      10. Your Payments в свою очередь, отправляет покупателя на адрес, предоставленный Торговой площадкой для возврата после попытки оплаты.
      11. Система Торговой площадки сопоставляет полученную при возврате клиента с имеющимся заказом и отображает информацию о результате оплаты.
      12. После завершения операции(клиринга), денежные средства поступают в Your Payments.
      13. Your Payments дробит поступившие средства (основываясь на данных, которые пришли в запросе, п.2).
      14. Средства отправляются на счета Продавцов.

      [Перейти к техническому описанию процесса оплаты с рaзделением платежа](#tag/payment-split-api)
  - name: how it works - payout
    x-parent: how it works
    x-displayName: Как работают выплаты на карту
    description: |
      1. Физическое лицо (Получатель) обращается к Торгово-Сервисному предприятию (Плательщик) с заявлением на выплату
      2. Система Плательщика формирует запрос к Your Payments на ссылку для верификации карты Получателя
      3. Система Your Payments формирует уникальную операцию и предоставляет URL защищенной страницы для ввода данных карты.
      4. Плательщик перенаправляет получателя на предоставленную в п.3. страницу.
      5. Получатель вводит данные карты и подтверждают блокировку тестовой суммы.
      6. Your Payments перенаправляет Получателя в банк выпустивший карту.
      7. Банк идентифицирует Получателя посредством технологии 3-D Secure / MirAccept, анализируя параметры его браузера, устройства и при необходимости запрашивая ввод одноразового пароля, отправляемого через SMS или PUSH сообщение.
      8. Получатель вводит в форму пароль.
      9. Если идентификация завершена успешно - Банк утверждает платеж и отправляет Получателя обратно в Your Payments.
      10. Your Payments в свою очередь, отправляет Получателя на адрес, предоставленный Плательщиком для возврата верификации.
      11. Система Плательщика сопоставляет полученную при возврате Получателя с имеющимся заявлением на выплату и отображает информацию о верификации.
      12. Система Плательщика отправляет запрос на сохранение карты на основе верификационной операции. В ответ получает токен карты, использованной при верификации.
      13. Система Плательщика отменяет блокировку верификационной суммы.
      14. Система Плательщика формирует запрос к Your Payments на выплату с использованием токена карты Получателя (п.12).
      15. Система Your Payments инициирует перевод.

      [Перейти к техническому описанию процесса выплат на карту](#tag/payouts-api)
  - name: details
    x-parent: api
    x-displayName: Мета-данные
    description: |
      Поле для передачи мета-данных: details.

      В это поле можно передавать любые данные: строки, числа, объекты JSON,
      бинарные данные (файлы).

      ### Пример использования

      Предположим, вы хотите передать в API информацию о заказе, включая
      дополнительные детали, такие как метаданные, пользовательские настройки или контекстные данные.


      ```JSON
        "details": {
          "metadata": {
             "source": "mobile_app",
             "version": "1.2.3"
          },
          "preferences": {
            "language": "en",
            "notifications": true
          },
          "context": {
            "referral_code": "REF123",
            "utm_source": "source-1",
            "utm_medium": "TV",
            "campaign_id": "CAMP456",
            "utm_id": "123"
          }
        }
      ```

      В этом примере поле Details содержит дополнительную информацию,
      которая может быть использована для персонализации обработки заказа или
      для аналитических целей.
  - name: methods
    x-parent: api
    x-displayName: Методы
    description: ''
  - name: payment api
    x-parent: methods
    x-displayName: Оплата
    x-displayName-lang:
      en: Payments
    description: |
      ### Отличие Оплаты с разделением платежа от Оплаты без разделения

      Оплата с разделением отличается от обычной оплаты тем, что у каждого
      продукта в операции есть "владелец/продавец".

      Таким образом:
        - в запросе на авторизацию появляются дополнительные характеристики у каждого продукта в блоке products >
        marketplace
        - в запросе на возврат появляется дополнительный блок marketplaceV1, указывающий на продавца, который должен
        выплатить деньги в рамках операции возврата.
        - <span class="attention">так же как и в обычной Операции возврата - продавец не может вернуть покупателю
        больше средств, чем получил. Для таких случаев следует использовать [выплаты](./#tag/payouts).</span>
  - name: payment api return url
    x-parent: payment api
    x-displayName: Возврат Плательщика после оплаты
    description: |
      После оплаты Плательщик перенаправляется на один из URLs,
      указанных в параметрах [запроса на авторизацию платежа](./#tag/payment-api/paths/~1v4~1payments~1authorize/post):
        `successUrl` после успешной оплаты и `failUrl` после неудачной оплаты

      В GET запросе также будет передан уникальный номер заказа в системе ТСП (параметр `ypmnPaymentReference`),
      например при `successUrl = https://example.com/success` и `ypmnPaymentReference = 123`, в случае успешной оплаты Плательщик
      будет перенаправлен на `https://example.com/success?ypmnPaymentReference=123`
  - name: response codes
    x-parent: payment api
    x-displayName: Коды ответов
    description: |

      | Код ответа | Сообщение | Описание | Сообщение для плательщика |
      | ---------- | --------- | -------- | ------------------------- |
      | AUTHORIZED | Successful authorization | Успешная авторизация | Успешная операция |
      | 3DS_ENROLLED | 3DS redirect required | Требуется редирект на 3DS.<br/><br/>В ответе на запрос авторизации будет: `"url": "Адрес для редиректа пользователя"` и `"type": "redirect"` | Свяжитесь с вашим банком или воспользуйтесь другой картой |
      | PENDING_AUTHORIZATION | Waiting for payment, redirect to payment page required | Ожидает оплаты, требуется редирект на платежную страницу.<br/><br/>В ответе на запрос авторизации будет: `"url": "Адрес для редиректа пользователя"` и `"type": "redirect"` | Свяжитесь с вашим банком или воспользуйтесь другой картой |
      | ALREADY_AUTHORIZED | The payment for your order is already authorized. | Операция уже авторизована, в повторной попытке нет необходимости | Успешная операция |
      | GW_ERROR_GENERIC | An error occurred during processing. Please retry the operation | При обработке произошла ошибка. Пожалуйста, повторите операцию | Воспользуйтесь другой картой |
      | GW_ERROR_GENERIC_3D | An error occurred during 3DS processing | Произошла ошибка при обработке 3DS | Свяжитесь с вашим банком или воспользуйтесь другой картой |
      | GWERROR_-19 | Authentication failed | Ошибка аутентификации | Свяжитесь с вашим банком или воспользуйтесь другой картой |
      | GWERROR_-18 | Error in CVC2 or CVC2 Description fields | Ошибка в CVC2 или его описании | Проверьте правильность введенных данных карты или воспользуйтесь другой картой |
      | GWERROR_-10 | Error in amount field | Ошибка в сумме операции (недопустимо значение 0, может быть отказ со стороны эмитента по транзакциям меньше 1 руб) | Повторите попытку позже |
      | GWERROR_-9 | Error in card expiration date field | Ошибка в поле срока действия карты | Проверьте правильность введенных данных карты или воспользуйтесь другой картой |
      | GWERROR_-8 | Invalid card number | Номер карты не корректен | Проверьте правильность введенных данных карты или воспользуйтесь другой картой |
      | GWERROR_-3 | No or Invalid response received | Ошибка на стороне эквайера — неверно сформирована транзакция | Повторите попытку позже |
      | GWERROR_-2 | An error occurred during processing. Please retry the operation | Ошибка обработки. Пожалуйста, повторите операцию | Повторите попытку позже |
      | GWERROR_01 | Card type not active or incorrect PIN | Карта не поддерживается или неверный PIN-код | Воспользуйтесь другой картой |
      | GWERROR_02 | Refer to card issuer, special condition | Отказ эмитента без объяснения причин<br/> - неверно указан код CVV;<br/> - внутренние ограничения банка, выпустившего карту;<br/> - карта заблокирована или еще не активирована;<br/> - на карте не включены интернет-платежи или не подключен 3DS | Свяжитесь с вашим банком или воспользуйтесь другой картой |
      | GWERROR_03 | Invalid merchant | Ошибка конфигурации терминала или неправильно переданы параметры | Повторите попытку позже |
      | GWERROR_04 | Restricted card | Функционал карты ограничен эмитентом | Свяжитесь с вашим банком или воспользуйтесь другой картой |
      | GWERROR_05 | Authorization declined | В авторизации отказано | Проверьте правильность введенных данных карты или воспользуйтесь другой картой |
      | GWERROR_06 | Error - retry | Ошибка. Повторите попытку. | Повторите попытку позже |
      | GWERROR_07 | Password incorrect or card disabled | Неверный пароль или карта отключена | Свяжитесь с вашим банком или воспользуйтесь другой картой |
      | GWERROR_08 | Invalid amount | Недопустимая сумма | Повторите попытку позже |
      | GWERROR_09 | Invalid currency | Недопустимая валюта | Повторите попытку позже |
      | GWERROR_12 | Amount exceeds card ceiling | Данная сумма превышает допустимую, и не может быть проведена с данной карты | Превышение лимита оплаты по карте. Измените настройки лимита или оплатите другой картой |
      | GWERROR_13 | Invalid amount | Недопустимая сумма | Воспользуйтесь другой картой |
      | GWERROR_14 | No such card | Нет такой карты | Проверьте правильность введенных данных карты или воспользуйтесь другой картой |
      | GWERROR_15 | No such card/issuer | Нет такой карты/эмитента | Проверьте правильность введенных данных карты или воспользуйтесь другой картой |
      | GWERROR_17 | Customer cancellation | Отменено плательщиком | Воспользуйтесь другой картой |
      | GWERROR_19 | Re-enter transaction | Повторно ввести транзакцию | Повторите попытку позже |
      | GWERROR_20 | Invalid response | Неверный ответ банка | Повторите попытку позже |
      | GWERROR_22 | Suspected Malfunction | Подозрение на неисправность | Повторите попытку позже |
      | GWERROR_30 | Format error | Ошибка формата | Невозможно провести оплату |
      | GWERROR_34 | Credit card number failed the fraud | Система защиты от мошенничества блокировала операцию по данной карте | Свяжитесь с банком или воспользуйтесь другой картой |
      | GWERROR_36 | Credit restricted | Кредит ограничен | Воспользуйтесь другой картой |
      | GWERROR_41 | Lost card | Карта утеряна | Свяжитесь с вашим банком или воспользуйтесь другой картой |
      | GWERROR_43 | Stolen card, pick up | Украдена карта | Свяжитесь с вашим банком или воспользуйтесь другой картой |
      | GWERROR_51 | Insufficient funds | Недостаточно средств | Недостаточно средств на карте |
      | GWERROR_53 | Session expired | Время жизни сессии истекло | Ошибка платежа. Повторите оплату |
      | GWERROR_54 | Expired card | Срок действия карты истек | Проверьте правильность введенных данных карты или воспользуйтесь другой картой |
      | GWERROR_55 | Incorrect PIN | Неверный PIN-код | Воспользуйтесь другой картой |
      | GWERROR_57 | Transaction not permitted on card | Транзакция по карте не разрешена | Воспользуйтесь другой картой |
      | GWERROR_58 | Not permitted to merchant | Не разрешено торговцу | Повторите попытку позже |
      | GWERROR_59 | Suspected fraud | Подозрение на мошенничество | Свяжитесь с вашим банком или воспользуйтесь другой картой |
      | GWERROR_61 | Exceeds amount limit | Превышает лимит суммы | Повторите попытку позже |
      | GWERROR_62 | Restricted card | Ограничение по карте | Свяжитесь с вашим банком или воспользуйтесь другой картой |
      | GWERROR_63 | Security violation | Нарушение правил безопасности | Воспользуйтесь другой картой |
      | GWERROR_65 | Exceeds frequency limit | Превышен предел частоты платежей с данной карты | Воспользуйтесь другой картой |
      | GWERROR_68 | Response received too late | Ответ получен слишком поздно, время ожидания ответа истекло | Повторите попытку позже |
      | GWERROR_75 | PIN tries exceeded | Количество попыток ввести ПИН-код превышено | Воспользуйтесь другой картой |
      | GWERROR_76 | Wrong pin, tries exceeded | Неверный пин-код, количество попыток превышено | Воспользуйтесь другой картой |
      | GWERROR_78 | Reserved | В случае, когда контракт эмитента и держателя карты расторгнут или приостановлен. | Воспользуйтесь другой картой |
      | GWERROR_82 | Time-out at issuer | Тайм-аут со стороны эмитента карты | Свяжитесь с вашим банком или воспользуйтесь другой картой |
      | GWERROR_83 | Unable to verify PIN | Не удалось подтвердить PIN-код | Воспользуйтесь другой картой |
      | GWERROR_84 | Invalid cvv | Неверный CVV | Проверьте правильность введенных данных карты или воспользуйтесь другой картой |
      | GWERROR_88 | Cryptographic failure | Сбой криптографии при передаче данных в платежную систему. | Повторите попытку позже |
      | GWERROR_89 | Authentication failure | Ошибка аутентификации | Свяжитесь с вашим банком или воспользуйтесь другой картой |
      | GWERROR_91 | A technical problem occurred. Issuer cannot process | Техническая ошибка. Эмитент не может обработать операцию | Свяжитесь с вашим банком или воспользуйтесь другой картой |
      | GWERROR_93 | Violation of law | Нарушение законодательства (в некоторых странах законодательно запрещено платить локальными картами в зарубежных магазинах) | Платежи для этой карты запрещены. Воспользуйтесь другой картой |
      | GWERROR_94 | Duplicate transmission | Отказ в проведении операции по причине срабатывания контроля дубликатов | Воспользуйтесь другой картой |
      | GWERROR_95 | Reconcile error | Ошибка реконсиляции (сверки) на стороне банка -эквайера или банка-эмитента | Повторите попытку позже |
      | GWERROR_96 | System malfunction | Неисправность системы | Повторите попытку позже |
      | GWERROR_98 | Error during canceling transaction | Ошибка при отмене транзакции | Повторите попытку позже |
      | GWERROR_99 | Incorrect card brand | Неверный бренд карты | Воспользуйтесь другой картой |
      | GWERROR_102 | Acquirer timeout | Тайм-аут на стороне банка-эквайера | Повторите попытку позже |
      | GWERROR_105 | 3DS authentication error | Ошибка аутентификации 3DS | Свяжитесь с вашим банком или воспользуйтесь другой картой |
      | GWERROR_107 | Sorry, at the moment the transaction cannot be processed due to excessive retries with this card. Please try using another card. | К сожалению, в настоящее время транзакция не может быть обработана из-за большого количества повторных попыток оплаты этой картой. Попробуйте использовать другую карту | Повторите попытку позже |
      | GWERROR_108 | Sorry, at the moment the transaction cannot be processed. Please try using another card. | К сожалению, в данный момент транзакция не может быть обработана. Попробуйте использовать другую карту | Воспользуйтесь другой картой |
      | GWERROR_109 | Inactive card, please activate the card first. | Неактивная карта, сначала активируйте карту | Воспользуйтесь другой картой |
      | GWERROR_2304 | There is an ongoing process your order. | Ваш заказ находится в обработке (блокирует повторную операцию с теми же данными). Рекомендуется перезапросить статус операции | Повторите попытку позже |
      | GWERROR_5007 | Debit cards only supports 3DS operations. | Данная дебетовая карта поддерживает только 3DS-операции | Воспользуйтесь другой картой |
      | -9999 | Banned operation | Отказ системы противодействия мошенничеству. Операция заблокирована | Воспользуйтесь другой картой |
  - name: payouts api
    x-parent: methods
    x-displayName: Выплаты
    description: |
      API выплат позволяет совершать переводы по номеру карты и по номеру телефона (СБП),
      а также может получать [отчёт о прошлых выплатах](./#tag/payouts-api/paths/~1v4~1payout/get)
      и [текущий баланс](./#tag/payouts-api/paths/~1v4~1payout~1balance/get) денежных средств, доступных для выплат.
  - name: payouts testing
    x-parent: payouts api
    x-displayName: Тестирование выплат
    description: |

      ### Специфические суммы операций для выплат СБП в тестовом контуре

      | Сумма операции (amount), руб | Результат оплаты (payment result) |
      |------------------------------|-----------------------------------|
      | 1011 | Успешная выплата |
      | 1012 | Неуспешная выплата. Отказ эмитента |
      | 1013 | Неуспешная выплата. Зависает в ожидании, не получен ответ от банка |
      | 1014 | Неуспешная выплата. Недостаточно средств на счете |
      | 1015 | Неуспешная выплата. Свяжитесь с Получателем средств и уточните реквизиты для зачисления денежных средств |
      | 1020 | Неуспешная выплата. Ошибка на стороне эмитента |

      ### Специфические номера телефонов для проверки возможности выплат СБП в тестовом контуре
      | Номер телефона | Результат проверки |
      |------------------------------|-----------------------------------|
      | XXXXXXXX1 | Выплата возможна |
      | XXXXXXXX2 | Выплата невозможна |
      | XXXXXXXX3 | Ошибка проверки |
      | XXXXXXXX4 | Ошибка проверки |
      | XXXXXXXX5 | Статус requested, перезапросите через 3 минуты: выплата возможна |
      | XXXXXXXX6 | Статус requested, перезапросите через 3 минуты: выплата невозможна |
      | Остальные | Статус requested |
  - name: token api
    x-parent: methods
    x-displayName: Токенизация
    description: API позволяет продавцу создать токен (сохранить платёжную информацию для последующих оплат), а также получить информацию о карте по токену или отменить его.
    x-description-lang:
      en: This API allows a merchant to create a token. He can also retrieve info about the token or to cancel one.
  - name: card info api
    x-parent: methods
    x-displayName: Информация о карте
    x-displayName-lang:
      en: CardInfo API
    description: ''
    x-description-lang:
      en: This API allows a merchant to retrieve card information using a card bin or a token.
  - name: reports
    x-parent: methods
    x-displayName: Отчеты
    x-displayName-lang:
      en: Reports
    description: Позволяет получать отчеты по транзакциям в формате JSON и в виде графика.
    x-description-lang:
      en: Allows you to receive transaction reports in JSON format and in the form of a chart.
  - name: sessions
    x-parent: methods
    x-displayName: Сессии токена
    x-displayName-lang:
      en: Sessions
    description: Данный API позволяет мерчанту создать **sessionId** для [проведения оплаты](#tag/payment-api/paths/~1v4~1payments~1authorize/post) с помощью одноразового токена
    x-description-lang:
      en: This API allows a merchant to create a **sessionId** to be further used when [authorizing a payment](#tag/payment-api/paths/~1v4~1payments~1authorize/post) with oneTimeUseToken.
  - name: secure fields
    x-parent: methods
    x-displayName: Secure Fields
    x-displayName-lang:
      en: Secure Fields
    description: |
      Secure Fields - это отдельные HTML поля, которые максимально гибко и кастомизированно
      вставляется в ваши страницы для сбора информации о карте пользователя.

      Таким образом, уменьшаются требования PCI-DSS, требуя от вас соответствия
      стандарту SAQ A.

      Вы можете стилизовать форму с такими полями как пожелаете. См. пример ниже:

      <img src="https://secure.ypmn.ru/docs/images/secure-fields/full-form.png"
      loading="lazy">

      Когда карточная информация отправлена с помощью формы Secure Fields, система Your Payments
      возвращает вашему сайту токен карты. Токен используется для создания и
      авторизации оплаты.
    x-description-lang:
      en: |
        The secure fields is an HTML form that you can include in your site to collect a user’s card information.

        When using the secure fields, YPMN generates the card details input fields and handles the logic of grabbing the card information submitted by the user. This option reduces your PCI scope, requiring you to be SAQ A compliant.
        You can style the form as you desire. Here’s an example:
        <img src="https://secure.ypmn.ru/docs/images/secure-fields/full-form.png" loading="lazy">
        When card information is submitted through the secure fields, YPMN returns a token representation of the card to your site. You must use the token when create and authorize a payment.
  - name: secure fields - embed
    x-parent: secure fields
    x-displayName: Интеграция формы Secure Fields в страницу
    x-displayName-lang:
      en: Embedding the secure fields in a Checkout Page
    description: |
      Шаги для внедрения формы Secure Fields в вашу платежную страницу.

      ### 1. Включение Secure Fields Javascript SDK в вашу платежную страницу

      Secure Fields Javascript SDK расположен
       - в боевом контуре по ссылке [`https://secure.ypmn.ru/js/secure-fields/secure-fields.min.js`](https://secure.ypmn.ru/js/secure-fields/secure-fields.min.js),
       - в тестовом контуре по ссылке [`https://sandbox.ypmn.ru/js/secure-fields/_sb/secure-fields.min.js`](https://sandbox.ypmn.ru/js/secure-fields/_sb/secure-fields.min.js)

      ```html
      <body>
          ...
          <script src="https://secure.ypmn.ru/js/secure-fields/secure-fields.min.js"></script>
          ...
      </body>
      ```

      ### 2. Добавление формы с нужными полями ввода

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

      См. подробную информацию об элементах (полях) формы по
      [ссылке](./#tag/secure-fields-elements).

      ```html
      <body>
          ...
          <form id="payment-form">
              <div class="field">
                  <input id="cardholder-name" class="input" placeholder="John Doe" />
                  <label>Name</label>
              </div>
              <div class="field">
                  <div id="card-number" class="input"></div>
                  <label>Card Number</label>
              </div>
              <div class="field">
                  <div id="exp-date" class="input "></div>
                  <label>Expiration Date</label>
              </div>
              <div class="field">
                  <div id="cvv" class="input"></div>
                  <label>CVV</label>
              </div>
              <div class="field">
                  <div id="user-agreement" class="input"></div>
              </div>
              <button type="submit" id="pay_button">Pay $25</button>
          </form>
          ...
      </body>
      ```

      ### 3. Инициализация формы Secure Fields

      Создайте экземпляр Secure Fields, вызвав [`PayUSecureFields.Init(auth,
      options?)`](#tag/secure-fields-form-elements-class). 

      В качестве первого аргумента вам необходимо передать аутентификационные
      данные, в качестве второго вы можете передать пользовательские стили,
      которые будут применены к полям формы (второй аргумент не является
      обязательным).

      Получить sessionId можно с помощью
      [API](#tag/sessions/paths/~1v4~1payments~1sessions/post). Это должно быть
      сделано до инициализации формы Secure Fields.

      **Внимание:** Сессия должна быть уникальной для успешной авторизации, т.е.
      после успешной авторизации с помощью Secure Fields вы должны получить
      новую сессию.

      ```javascript
      /*
      Создание инстанса secure fields.

      В качестве первого аргумента, передается merchantCode и sessionId
      (обязательно).

      В качестве второго аргумента передается список пользовательских стилей,
      которые будут применены к полям (опционально).
      */

      const auth = {
          merchantCode: 'YPMN merchant code',
          sessionId: '79fac7b6-4f87-4a17-92b4-bffe16f68f1e',
      }

      const fonts = [
          {
              src: 'https://fonts.googleapis.com/css?family=Source+Code+Pro',
          }
      ]

      const formElements = new PayUSecureFields.Init(auth, {
          fonts
      })
      ```

      ### 4. Создание экземпляра каждого поля, которое вы хотите показать в
      вашей форме

      Создание экземпляра каждого поля осуществляется путем вызова
      [`formElements.create(elementType,options?)`](#tag/secure-fields-elements-fields)
      с указанием типа поля, которое вы хотите создать, и дополнительным
      опциями. Затем необходимо смонтировать каждое поле в структуру DOM.

      ```javascript
      /*
      Объект placeholders - это только один пример дополнительных опций, которые
      могут быть переданы при создании поля.
      */

      const placeholders = {
          cardNumber: '1234 1234 1234 1234',
          expDate: 'MM / YY',
          cvv: '123'
      }

      // Создание полей, которые вы хотите показывать, и добавление их в DOM.
      const cardNumber = formElements.create('cardNumber', {
          placeholders
      })

      cardNumber.mount('#card-number')
      const expiry = formElements.create('creditCardExpiry', {
          placeholders
      })

      expiry.mount('#exp-date')
      const cvv = formElements.create('cvv', {
          placeholders
      })

      cvv.mount('#cvv')
      const userAgreement = formElements.create('userAgreement', {})
      userAgreement.mount('#user-agreement')
      ```

      ### 5. Создание токена

      Вызовите
      [`PayUSecureFields.createToken()`](#tag/secure-fields-form-elements-class)
      когда пользователь отправит форму, но только после того,

      как вы получите имя картодержателя, чтобы передать его в виде объекта,
      содержащего дополнительные данные. Имя картодержателя является
      обязательным полем,
      вы не можете пропустить этот шаг.


      [Перейти к деталям по токенизации](./#tag/secure-fields-otu-tokenization)


      ```javascript
      document.getElementById('payment-form').addEventListener('submit',
      async(event) => {
          event.preventDefault()
          const additionalData = {
              holder_name: document.getElementById('cardholder-name').value // This field is mandatory
          }
          const result = await PayUSecureFields.createToken(cardNumber, {
              additionalData
          })
          console.log(`The response is ${JSON.stringify(result)}`)
      })
      ```

      ### 6. Итоговые файлы 

      ```html
      <!-- Это ваш html файл -->
      <body>
          <div class="checkout-page">
              <form id="payment-form">
                  <div class="field">
                      <input id="cardholder-name" class="input" placeholder="John Doe" />
                      <label>Name</label>
                  </div>
                  <div class="field">
                      <div id="card-number" class="input"></div>
                      <label>Card Number</label>
                  </div>
                  <div class="field">
                      <div id="exp-date" class="input"></div>
                      <label>Expiration Date</label>
                  </div>
                  <div class="field">
                      <div id="cvv" class="input"></div>
                      <label>CVV</label>
                  </div>
                  <div class="field">
                      <div id="user-agreement" class="input"></div>
                  </div>
                  <button type="submit" id="pay_button">Pay $25</button>
              </form>
          </div>
          <script src="https://secure.ypmn.ru/js/secure-fields/secure-fields.min.js"></script>
          <script src="index.js"></script>
      </body>
      ```


      ```javascript
      // Это ваш index.js файл

      /*
      Создание инстанса secure fields.

      В качестве первого аргумента передается merchantCode и sessionId
      (обязательно).

      В качестве второго аргумента передается список пользовательских стилей,
      которые будут применены к полям (опционально).
      */

      const auth = {
          merchantCode:'YPMN merchant code',
          sessionId: '79fac7b6-4f87-4a17-92b4-bffe16f68f1e',
      }

      const fonts = [
          {
              src: 'https://fonts.googleapis.com/css?family=Source+Code+Pro',
          }
      ]

      const formElements = new PayUSecureFields.Init(auth, {
          fonts
      })

      /*
      Создание объекта с дополнительными опциями, которые можно передать в
      конструктор при создании полей.

      Существует множество других опций доступных для передачи в конструктор, но
      для простоты мы

      показываем один объект в нашем примере.
      */

      const placeholders = {
          cardNumber: '1234 1234 1234 1234',
          expDate: 'MM / YY',
          cvv: '123'
      }

      // Создание полей, которые вы хотите показывать, и добавление их в DOM.
      const cardNumber = formElements.create('cardNumber', {
          placeholders
      })

      cardNumber.mount('#card-number')

      const expiry = formElements.create('creditCardExpiry', {
          placeholders
      })

      expiry.mount('#exp-date')

      const cvv = formElements.create('cvv', {
          placeholders
      })

      cvv.mount('#cvv')

      const userAgreement = formElements.create('userAgreement', {})

      userAgreement.mount('#user-agreement')

      /*
      Создание токена, когда пользователь отправляет форму, но только после
      того, как имя картодержателя будет получено

      и передано в виде объекта, содержащего дополнительные данные, при вызове
      createToken.
      */
      document.getElementById('payment-form').addEventListener('submit',
      async(event) => {
          event.preventDefault()
          const additionalData = {
              holder_name: document.getElementById('cardholder-name').value // This field is mandatory
          }
          const result = await PayUSecureFields.createToken(cardNumber, additionalData)
          console.log(`The response is ${JSON.stringify(result)}`)
      })
      ```

      Если случилась ошибка, ответ будет выглядеть следующим образом:

      ```js
      {
          statusCode: CLIENT_ERROR,
          errors: {
              invalid_pan: 'Card number did not pass luhn validation',
              invalid_expiry: 'Card expiration date is invalid',
              client_error: 'Invalid expiryYear or expiryMonth'
          }
      }
      ```

      Возможные ключи ошибок: `invalid_pan | invalid_expiry | invalid_cvv |
      invalid_cardholder_name | invalid_agreement | client_error | server_error`

      Возможные статус коды: `CLIENT_ERROR | SERVER_ERROR | SUCCESS`

      В случае успеха ответ будет выглядеть следующим образом:


      ```js
      {
          statusCode: SUCCESS,
          token: "fAMfv4qbHx0TU1FwwXroS2H+G3DSKkvrgYuuPaB1a1VpJgIg+WjGB2Bg==",
          cardUniqueIdentifier: "b1e6d93a154e375695ed87d7404d25e27923442e3f7b34afb5a8aff3de69cb64",
          cardExpirationDate: "2024-10-31",
          lastFourDigits: "1234"
      }
      ```

      Вызов метода `createToken` в короткий промежуток времени без ожидания
      ответа предыдущих вызовов приведет к клиентской ошибке с сообщением
      "Overlapping request".

      Цель этого механизма предотвратить создание дупликатов отправки формы по
      ошибке, например в случае двойного клика по кнопке отправки формы.

      Для предотвращения этого при интеграции Secure Fields 

      **необходимо убедиться, что перед отправкой нового запроса на создание
      токена получен ответ от предыдущего запроса.**
    x-description-lang:
      en: |
        The steps for embedding the secure fields in your checkout page are the following:
        ### 1. Include the Secure Fields Javascript SDK in your checkout page
        You can find the SDK at [`https://secure.ypmn.ru/js/secure-fields/secure-fields.min.js`](https://secure.ypmn.ru/js/secure-fields/secure-fields.min.js)

        ```html
        <body>
            ...
            <script src="https://secure.ypmn.ru/js/secure-fields/secure-fields.min.js"></script>
            ...
        </body>
        ```

        ### 2. Add a form with the input elements you want to show

        The example below shows just further input fields: the credit card number, the credit card expiration date, the 
        credit card cvv and user agreement. Once you are familiar with the basic implementation steps, proceed to review the additional 
        [secure field types](#tag/secure-fields-form-types-and-options) you can add.


        ```html
        <body>
            ...
            <form id="payment-form">
                <div class="field">
                    <input id="cardholder-name" class="input" placeholder="John Doe" />
                    <label>Name</label>
                </div>
                <div class="field">
                    <div id="card-number" class="input"></div>
                    <label>Card Number</label>
                </div>
                <div class="field">
                    <div id="exp-date" class="input "></div>
                    <label>Expiration Date</label>
                </div>
                <div class="field">
                    <div id="cvv" class="input"></div>
                    <label>CVV</label>
                </div>
                <div class="field">
                    <div id="user-agreement" class="input"></div>
                </div>
                <button type="submit" id="pay_button">Pay $25</button>
            </form>
            ...
        </body>
        ```

        ### 3. Now into some vanilla Javascript

        Create an instance of the secure fields by calling [`PayUSecureFields.Init(auth, options?)`](#tag/secure-fields-form-elements-class). As the first argument you can pass authentication data and the second argument you can pass a list of custom fonts to be applied to the fields (this is optional).

        Obtaining a sessionId can be done using [create session API](#tag/sessions/paths/~1v4~1payments~1sessions/post). This is a server-to-server call and should be done before loading the payment page.

        **Attention:** A session must be unique per successful authorization, so after a successful authorization with secure-fields you have to obtain a new session.

        ```javascript
        /*
        Create an instance of the secure fields.
        As the first argument, we'll pass details about merchantCode and sessionId (this is mandatory).
        The second argument, we'll pass a list of custom fonts to be applied to the fields (this is optional).
        */
        const auth = {
            merchantCode: 'YPMN merchant code',
            sessionId: '79fac7b6-4f87-4a17-92b4-bffe16f68f1e',
        }
        const fonts = [
            {
                src: 'https://fonts.googleapis.com/css?family=Source+Code+Pro',
            }
        ]
        const formElements = new PayUSecureFields.Init(auth, {
            fonts
        })
        ```

        ### 4. Create an instance of each field you want to show in your form

        You do this by calling [`formElements.create(elementType,options?)`](#tag/secure-fields-elements-fields) with the type of field you want to instantiate and any additional options you want pass in. Then mount each field to the DOM.

        ```javascript
        /*
        The placeholders object is just one example of an additional option you can pass when instantiating a field.
        */
        const placeholders = {
            cardNumber: '1234 1234 1234 1234',
            expDate: 'MM / YY',
            cvv: '123'
        }

        // Instantiate the fields you want to show and mount them to the DOM.
        const cardNumber = formElements.create('cardNumber', {
            placeholders
        })
        cardNumber.mount('#card-number')

        const expiry = formElements.create('creditCardExpiry', {
            placeholders
        })
        expiry.mount('#exp-date')

        const cvv = formElements.create('cvv', {
            placeholders
        })
        cvv.mount('#cvv')

        const userAgreement = formElements.create('userAgreement', {})
        userAgreement.mount('#user-agreement')
        ```

        ### 5. Create a token

        Call [`PayUSecureFields.createToken()`](#tag/secure-fields-form-elements-class) when the user submits the form, but not until you fetched the card holder’s name so that you can pass it in the additional data object (the card holder name is a required field, so you cannot skip this step).

        [Jump to tokenization details](#tag/secure-fields-form-otu-tokenization)

        ```javascript
        document.getElementById('payment-form').addEventListener('submit', async(event) => {
            event.preventDefault()
            const additionalData = {
                holder_name: document.getElementById('cardholder-name').value // This field is mandatory
            }
            const result = await PayUSecureFields.createToken(cardNumber, {
                additionalData
            })
            console.log(`The response is ${JSON.stringify(result)}`)
        })
        ```

        ### 6. Let’s piece it all together

        ```html
        <!-- This is your html file -->
        <body>
            <div class="checkout-page">
                <form id="payment-form">
                    <div class="field">
                        <input id="cardholder-name" class="input" placeholder="John Doe" />
                        <label>Name</label>
                    </div>
                    <div class="field">
                        <div id="card-number" class="input"></div>
                        <label>Card Number</label>
                    </div>
                    <div class="field">
                        <div id="exp-date" class="input"></div>
                        <label>Expiration Date</label>
                    </div>
                    <div class="field">
                        <div id="cvv" class="input"></div>
                        <label>CVV</label>
                    </div>
                    <div class="field">
                        <div id="user-agreement" class="input"></div>
                    </div>
                    <button type="submit" id="pay_button">Pay $25</button>
                </form>
            </div>
            <script src="https://secure.ypmn.ru/js/secure-fields/secure-fields.min.js"></script>
            <script src="index.js"></script>
        </body>
        ```

        ```javascript // This is your index.js file

        /* Create an instance of the secure fields.
        As the first argument, we'll pass authentication data (this is mandatory).
        The second argument, we'll pass a list of custom fonts to be applied to the fields (this is optional). */
        const auth = {
            merchantCode:'YPMN merchant code',
            sessionId: '79fac7b6-4f87-4a17-92b4-bffe16f68f1e',
        }
        const fonts = [
            {
                src: 'https://fonts.googleapis.com/css?family=Source+Code+Pro',
            }
        ]
        const formElements = new PayUSecureFields.Init(auth, {
            fonts
        })

        /* Create an object holding additional options that you can pass to the constructor for instantiating
        the credit card and card expiry fields.
        There are lots of other options available that you can pass to the constructor,
        but to keep it simple we'll just show this one object in our example. */
        const placeholders = {
            cardNumber: '1234 1234 1234 1234',
            expDate: 'MM / YY',
            cvv: '123'
        }
        // Instantiate the fields you want to show and mount them to the DOM.
        const cardNumber = formElements.create('cardNumber', {
            placeholders
        })
        cardNumber.mount('#card-number')
        const expiry = formElements.create('creditCardExpiry', {
            placeholders
        })
        expiry.mount('#exp-date')
        const cvv = formElements.create('cvv', {
            placeholders
        })
        cvv.mount('#cvv')
        const userAgreement = formElements.create('userAgreement', {})
        userAgreement.mount('#user-agreement')

        /* Create a token when the user submits the form, but not until we fetched the card holder's name
        so that we can pass it in an additional data object to the createToken call. */
        document.getElementById('payment-form').addEventListener('submit', async(event) => {
            event.preventDefault()
            const additionalData = {
                holder_name: document.getElementById('cardholder-name').value // This field is mandatory
            }
            const result = await PayUSecureFields.createToken(cardNumber, additionalData)
            console.log(`The response is ${JSON.stringify(result)}`)
        })
        ```

        If an error occurred, the response would look like below:

        ```js {
            statusCode: CLIENT_ERROR,
            errors: {
                invalid_pan: 'Card number did not pass luhn validation',
                invalid_expiry: 'Card expiration date is invalid',
                client_error: 'Invalid expiryYear or expiryMonth'
            }
        } ```
        Possible error keys: `invalid_pan | invalid_expiry | invalid_cvv | invalid_cardholder_name | invalid_agreement | client_error | server_error`
        Possible status codes: `CLIENT_ERROR | SERVER_ERROR | SUCCESS`
        In case of success, the response would look like below:
        ```js {
            statusCode: SUCCESS,
            token: "fAMfv4qbHx0TU1FwwXroS2H+G3DSKkvrgYuuPaB1a1VpJgIg+WjGB2Bg==",
            cardUniqueIdentifier: "b1e6d93a154e375695ed87d7404d25e27923442e3f7b34afb5a8aff3de69cb64",
            cardExpirationDate: "2024-10-31",
            lastFourDigits: "1234"
        } ```
        Calling createToken method in a short interval of time, without waiting for the previous calls to get a response, will trigger a client error with the message "Overlapping request".
        The role of this mechanism is to avoid duplicate submits by mistake, for example double clicks on the submit button.
        In order to avoid this, during Secure Fields integration, the **integrator should make sure that before doing a new tokenize request, the previous one received a response.**
  - name: secure fields - instantiation options
    x-parent: secure fields
    x-displayName: Опции при инициализации Secure Fields
    x-displayName-lang:
      en: Secure Fields Instantiation Options
    description: |
      При инициализации Secure Fields путем вызова [`PayUSecureFields.Init(authData, options?)`](#tag/secure-fields-form-elements-class)
      есть несколько опций, которые вы можете передать: пользовательские стили, опция выключения валидации номера карты по алгоритму Луна.
      Список доступных опций см. по [ссылке](#tag/secure-fields-form-elements-class).
    x-description-lang:
      en: When instantiating the secure fields using [`PayUSecureFields.Init(authData, options?)`](#tag/secure-fields-form-elements-class), there are several options you can pass. These include a list of custom fonts, or the option to disable the Luhn check done on a card number. For a list of available options, see the [Secure Fields Instantiation Options](#tag/secure-fields-form-elements-class).
  - name: secure fields - types and options
    x-parent: secure fields
    x-displayName: Виды и опции полей Secure Fields
    x-displayName-lang:
      en: Secure Field Types and Options
    description: |
      При описании шагов, необходимых для [встраивания формы Secure Fields в страницу оплаты](./#tag/secure-fields-embed),
      мы остановились на базовом примере, который показывает как создать следующие поля: номер карты, срок действия карты, cvv-код, согласие пользователя.
      Полный список доступных типов полей см. в разделе [Элементы (поля) формы](./#tag/secure-fields-elements-fields).

      <div class="info">
        <span class="info"><strong>Важно</strong></span>

        Обязательными являются следующие поля Secure Fields: номер карты, срок действия, пользовательское соглашение.

        Также вы должны передавать имя картодержателя в [объекте дополнительных данных](#tag/secure-fields-embed).
      </div>
    x-description-lang:
      en: |
        When walking you through the steps required to [embed the Secure Fields Form in a checkout page](#tag/secure-fields-embed), 
        we settled for a bare-bones example that showed you how to instantiate following fields: the credit card number, the credit card expiration date, 
        the credit card cvv and user agreement. 
        You’re not limited however to just those two field types. For an overview of all available types, see the 
        [Form Elements (Fields)](#tag/secure-fields-elements-fields) reference.

        <div class="info">
          <span class="info"><strong>Attention</strong></span>

          The following fields are mandatory: card number, expire date, user agreement.

          Also you should pass cardholder's name in the [additional data object](#tag/secure-fields-embed).
        </div>
  - name: secure fields - options for instantiating fields
    x-parent: secure fields
    x-displayName: Опции при создании полей Secure Fields
    x-displayName-lang:
      en: Options for Instantiating Fields
    description: |
      Создание поля формы происходит путем вызова [`formElements.create(elementType, options?)`](#tag/secure-fields-elements-fields).
      Вторым аргументом этого вызова является объект, содержащий дополнительные опции, например: placeholder для номера карты.

      ```js
      const placeholders = {
          cardNumber: '1234 1234 1234 1234'
      }

      const cardNumber = formElements.create('cardNumber', {
          placeholders
      })
      ```

      Однако существует больше опций, которые вы можете использовать. Все доступные опции см. в разделе 
      [Элементы (поля) формы](#tag/secure-fields-elements-fields).
    x-description-lang:
      en: |
        Recall that you instantiate a field using [`formElements.create(elementType, options?)`](#tag/secure-fields-elements-fields). 
        The second argument to this call is an object holding additional options, such as a placeholder for the card number:

        ```js
        const placeholders = {
            cardNumber: '1234 1234 1234 1234'
        }

        const cardNumber = formElements.create('cardNumber', {
            placeholders
        })
        ```

        There are more options you can choose from, however. For an overview of all available options, see the 
        [Form Elements (Fields)](#tag/secure-fields-elements-fields)
  - name: secure fields - validation
    x-parent: secure fields
    x-displayName: Валидация введенных пользователем данных
    x-displayName-lang:
      en: Validating User Input
    description: |
      Форма Secure Fields предоставляет слушатели событий: изменение поля, изменение фокуса на поле. Они вызываются следующим образом:

      ```js
      cardNumber.on('change', (event) => {
          console.log(event)
      })

      cardNumber.on('focus', (event) => {
          console.log(event)
      })

      cardNumber.on('blur', (event) => {
          console.log(event)
      })
      ```

      Параметр `event` callback-функции возвращает следующий объект (значения приведены в качестве примера):

      ```js
      {
          bin: "510510", // BIN карты
          complete: false, // введены ли и являются ли валидными данные карты
          brand: "visa", // возвращается только для номеров карт
          empty: false, // пустое ли поле для ввода
          error: undefined // объект с ошибкой в случае возникновения ошибки при вводе данных
      }
      ```
    x-description-lang:
      en: |
        The secure fields provides event listeners for events that are triggered when the value of an input field has 
        been changed, if the field gets focus or if the field loses focus. They are called like so:

        ```js
        cardNumber.on('change', (event) => {
            console.log(event)
        })

        cardNumber.on('focus', (event) => {
            console.log(event)
        })

        cardNumber.on('blur', (event) => {
            console.log(event)
        })
        ```

        The `event` parameter of the callback function will return the following object (values are examples):

        ```js
        {
            bin: "510510", // the card's BIN
            complete: false, // whether the card data is inserted and valid
            brand: "visa", // only returned for card numbers
            empty: false, // whether the input field is empty
            error: undefined // an error object if an error occurred on input
        }
        ```
  - name: secure fields - additional methods
    x-parent: secure fields
    x-displayName: Дополнительные методы
    x-displayName-lang:
      en: Additional Methods
    description: |
      Есть несколько методов, которые вы можете использовать с каждым типом поля (см. список всех доступных типов полей в разделе
      [Элементы (поля) формы](#tag/secure-fields-elements-fields)).

      Эти методы перечислены ниже.

      | Метод | Описание |
      | ----- | -------- |
      | update(optionsObject) | Обновляет поле ввода с применением указанных опций. См. список опций, которые вы можете передать, в разделе [Элементы (поля) формы](#tag/secure-fields-elements-fields) |
      | clear() | Очищает поле ввода |
      | destroy() | Удаляет поле ввода из структуры DOM. Данный метод можно вызвать один раз. |
      | mount(containerSelector) | Монтирует поле ввода в структуру DOM. |
    x-description-lang:
      en: |
        There are some additional methods that you can use on each type of input field (see the 
        [Form Elements (Fields)](#tag/secure-fields-elements-fields) reference for a list of all available field types). 
        Those methods are listed below.

        | Method | Description |
        | ------ | ----------- |
        | update(optionsObject) | Updates the input field with the specified options. See the [Form Elements (Fields)](#tag/secure-fields-elements-fields) reference for a list of options you can pass. |
        | clear() | Clears the input field |
        | destroy() | Unmounts the input field from the DOM. You can call this method only once. |
        | mount(containerSelector) | Mount the input field to the DOM. |
  - name: secure fields - styling
    x-parent: secure fields
    x-displayName: Стилизация формы Secure Fields
    x-displayName-lang:
      en: Styling the secure fields
    description: |
      Вы можете стилизовать Secure Fields путем передачи объектов [стилей и классов](#tag/secure-fields-elements-styles)
      при вызове [formElements.create(elementType,options?)](#tag/secure-fields-elements-fields). Объект стилей позволяет
      вам стилизовать поля Secure Fields на основе их состояния (валидные данные, данные не введены, невалидные данные).
      Объект классов позволяет вам применить пользовательские классы к `div` элементам, оборачивающим поля ввода, давая вам
      еще больше контроля над стилями, которые вы можете применять к полям. Рассмотрим оба варианта.

      ### 1. Применение стилей

      [Перейти к описанию объекта стилей](#tag/secure-fields-elements-styles)

      Объект стилей имеет вложенные объекты, чьи ключи - это название статуса ввода данных в поле (валидные данные, данные не введены, невалидные данные).
      Исключение - вложенный объект `base`; этот объект содержит стили, которые наследуются другими объектами.
      Ниже представлен базовый пример с объектами `base` и `invalid` (применяется, если введенные пользователем данные не валидны):

      ```js
      const style = {
          base: {
              color: '#fff',
              fontWeight: 600,
              fontFamily: 'Quicksand, Open Sans, Segoe UI, sans-serif',
              fontSize: '16px',
              fontSmoothing: 'antialiased'
          },
          invalid: {
              color: '#FF0000'
          }
      }; ```
      Вы можете также добавить псевдо-классы и псевдо-элементы для еще более детального контроля над стилизацией элементов:
      ```js const style = {
          base: {
              color: '#fff',
              fontWeight: 600,
              fontFamily: 'Quicksand, Open Sans, Segoe UI, sans-serif',
              fontSize: '16px',
              fontSmoothing: 'antialiased',
              ':focus': {
                  color: '#424770',
              },

              '::placeholder': {
                  color: '#9BACC8',
              },

              ':focus::placeholder': {
                  color: '#CFD7DF',
              },
          },
          invalid: {
              color: '#FF0000',
              ':focus': {
                  color: '#FA755A',
              },
              '::placeholder': {
                  color: '#FFCCA5',
              },
          }
      };
      ```
      Объект со стилями необходимо передать при вызове [formElements.create(elementType,options?)](#tag/secure-fields-elements-fields):

      ```js const cardNumber = formElements.create('cardNumber', {
          style,
          ...
      }) ```
      ### 2. Применение пользовательских классов
      [Перейти к описанию объекта классов](#tag/secure-fields-elements-styles)
      Объект классов позволяет вам применить пользовательские классы к `div` элементам, оборачивающим поля ввода, в зависимости от статуса введенных в поле данных (валидные данные, данные не введены, невалидные данные). Ключи объекта классов представляют собой названия статуса ввода данных в поле. В примере ниже мы применяем класс `my-own-invalid-class` к полям ввода, если пользователь ввел невалидные данные.

      ```js const classes = {
          invalid: 'my-own-invalid-class'
      } ```
      <div class="info">
        <span class="info">
        `div` элемент, к которому применяются классы, - это элемент, который вы передаете при вызове
        [`formElement.mount(containerSelector)`](#tag/secure-fields-elements-fields).
        </span>
      </div>
      Если вы не передаете объект классов, тогда применяются дефолтные классы.
      Объект с классами необходимо передать при вызове 
      [`formElements.create(elementType,options?)`](#tag/secure-fields-elements-fields):
      ```js const cardNumber = formElements.create('cardNumber', {
          classes,
          ...
      }) ```
      Вы можете стилизовать форму, как пожелаете. Ниже приведен пример стилизованной формы:
      <img src="https://secure.ypmn.ru/docs/images/secure-fields/secure_fields_form_custom.png" loading="lazy">

      <div class="info">
        <span class="info"><strong>Важно</strong></span>

        При стилизации формы поле userAgreement (соглашение пользователя с условиями) должно обязательно оставаться видимым,
        чтобы пользователь видел, что при отправке формы он соглашается с условиями.
      </div>
    x-description-lang:
      en: |
        You can style the secure fields by passing [style or classes](#tag/secure-fields-elements-styles) objects to 
        the [formElements.create(elementType,options?)](#tag/secure-fields-elements-fields) call. The style object allows 
        you to style the secure fields based on their state (valid input, no input or invalid input). The classes object allows 
        you to apply custom classes to the `div` elements wrapping the input fields, giving you even more control over the styles 
        that you can apply to the fields. Let’s take a look at both.

        ### 1. Applying Styles
        [Jump to the Style Objects Reference](#tag/secure-fields-elements-styles)

        The style object has nested objects, whose keys are the names of the input status (valid input, no input or invalid input) 
        that a field can have. The exception is the nested `base` object; this object has styles that are inherited by the other objects. 
        Here’s a basic example, with a base object and an `invalid` object holding styles to be applied if the user input is invalid:

        ```js
        const style = {
            base: {
                color: '#fff',
                fontWeight: 600,
                fontFamily: 'Quicksand, Open Sans, Segoe UI, sans-serif',
                fontSize: '16px',
                fontSmoothing: 'antialiased'
            },
            invalid: {
                color: '#FF0000'
            }
        };
        ```

        You can also add pseudo-classes and pseudo-elements for even more granular control over how the elements are styled:

        ```js
        const style = {
            base: {
                color: '#fff',
                fontWeight: 600,
                fontFamily: 'Quicksand, Open Sans, Segoe UI, sans-serif',
                fontSize: '16px',
                fontSmoothing: 'antialiased',
                ':focus': {
                    color: '#424770',
                },

                '::placeholder': {
                    color: '#9BACC8',
                },

                ':focus::placeholder': {
                    color: '#CFD7DF',
                },
            },
            invalid: {
                color: '#FF0000',
                ':focus': {
                    color: '#FA755A',
                },
                '::placeholder': {
                    color: '#FFCCA5',
                },
            }
        };
        ```

        When you’re done styling, pass the style object to the [formElements.create(elementType,options?)](#tag/secure-fields-elements-fields) call like so:

        ```js
        const cardNumber = formElements.create('cardNumber', {
            style,
            ...
        })
        ```

        ### 2. Applying Custom Classes

        [Jump to the Classes Object Reference](#tag/secure-fields-elements-styles)

        The classes object allows you to apply custom classes to the `div` elements wrapping the input fields, according to 
        the input status (valid input, no input, invalid input or has focus) that a field can have. The classes object’s keys 
        are the names of each type of input status. In the example below, we apply the `my-own-invalid-class` class to the input 
        field if the user enters some invalid input.

        ```js
        const classes = {
            invalid: 'my-own-invalid-class'
        }
        ```

        <div class="info"
          <span class="info"><strong>Note</strong></span>

          The `div` element to which the classes are applied, is the element you pass to the 
          [`formElement.mount(containerSelector)`](#tag/secure-fields-elements-fields) call.
        </div>

        If you do not pass a classes object, then default class names are applied.

        When you’re done styling, pass the classes object to the 
        [`formElements.create(elementType,options?)`](#tag/secure-fields-elements-fields) call like so:

        ```js
        const cardNumber = formElements.create('cardNumber', {
            classes,
            ...
        })
        ```

        You can style the form as you desire. Here’s an example:

        <img src="https://secure.ypmn.ru/docs/images/secure-fields/secure_fields_form_custom.png" loading="lazy">

        <div class="info">
          <span class="info"><strong>Attention</strong></span>

          Field userAgreement (user's agreement with the terms) should remain visible after styling the form.
          User should be able to see that he accepts the user's agreement by submitting the form.
        </div>
  - name: secure fields - otu tokenization
    x-parent: secure fields
    x-displayName: Все, что вам нужно знать об одноразовом токене
    x-displayName-lang:
      en: What you Should Know About One Time Use Tokenization
    description: |
      Одноразовая токенизация - процесс, который защищает чувствительные карточные данные, конвертируя их
      в токен. Когда вы токенизируете карточные данные пользователя, YPMN возвращает объект `одноразового токена`.

      Три вещи, которые вам следует знать о токенизации:
        1. После попытки осуществления платежа (необязательно успешной) вы больше не можете использовать тот же самый токен.
        Если вы хотите переиспользовать токен, чтобы покупателям не нужно было повторно вводить информацию о карте, вы должны сначала
        создать постоянный токен и затем использовать сохраненный токен в запросах на проведение оплаты. Для дополнительной информации
        см. раздел [Токены (сохраненные карты)](#tag/token-api).
        2. Токенизация не включает валидацию карты, а позволяет защитить чувствительные карточные данные. Например, срок 
        действия карты мог истечь или карта могла быть аннулирована. Это не будет выявлено при токенизации карты, сообщение
        об этом придет при попытке совершить первую транзакцию.
        3. CVV-код является частью токена.
    x-description-lang:
      en: |
        One time use tokenization is a process that safeguards sensitive card data, converting a card’s details to a 
        representative token. When you tokenize a user’s card information, YPMN returns a `one time use token` object.

        There are three things you should know about tokenization:
          1. Once a payment is attempted (not necessarily with success ), you will no longer be able to use the same token again. 
          If you want to reuse a token so that customers do not need to repeatedly update their card information, you must first 
          create a permanent token and then use the stored token in your payment requests. For more information, see 
          [Token API](#tag/token-api).
          2. Tokenization does not validate the card, but merely provides a means to protect sensitive card data. For instance, 
          the customer’s credit card could have expired or the card might have been cancelled. This will not be detected when 
          the card information is tokenized, but will be reported back to you by the provider when you perform your first transaction.
          3. The customer’s CVV code is part of the token.
  - name: secure fields - installments
    x-parent: secure fields
    x-displayName: Получение информации о карте
    x-displayName-lang:
      en: Installments. Receiving card information
    description: |
      Чтобы иметь возможность получить информацию о карте, Secure Fields позволяет использовать событие `cardInfo`, которое
      вы можете прослушать и получить информацию, как только пользователь введет номер карты.

      Чтобы получать эти данные, необходимо при создании поля cardNumber (или при создании поля fullCreditCard, др.)
      добавить опцию `getCardInfo: true`.

      Ниже представлены 2 ответа, которые вы можете получить от события cardInfo:

      ```js
      //1. объект информации о карте (со следующей структурой)
      {
          binNumber: string
          cardProfile: ?string
          cardProgram: ?string
          cardScheme: ?string
          cardType: ?string
          installmentOptions: ?string
          issuerBank: ?string
          issuerCountryCode: ?string
          paymentMethod: ?string
      }

      //2. пустой объект {} в случаях, когда предыдущий ответ был недействительным (например, пользователь удаляет номер карты после того, как полностью набрал его)
      {}
      ```

      Ниже приведен пример, как создать поле `cardNumber` с включенной опцией получения информации о карте:

      ```js
      const cardNumber = fields.create('cardNumber', {
          style,
          placeholders,
          classes: elementClasses,
          getCardInfo: true
      })

      // подписка на событие cardInfo:
      cardNumber.on('cardInfo', (event) => {
          console.log('cardInfoEvent', event)
      })
      ```
    x-description-lang:
      en: |
        To be able to get information about the card, like Installment Options, the secure-fields solution fires a `cardInfo` 
        event on which you can listen and get the information as soon as the user inputs their card number.

        To receive this data, you need to provide this intent when creating the cardNumber field (or when creating fullCreditCard, etc.) 
        by adding `getCardInfo: true` into the options.

        There are 2 responses that you can receive from the cardInfo event:

        ```js
        //1. the card info object (with the following structure)
        {
            binNumber: string
            cardProfile: ?string
            cardProgram: ?string
            cardScheme: ?string
            cardType: ?string
            installmentOptions: ?string
            issuerBank: ?string
            issuerCountryCode: ?string
            paymentMethod: ?string
        }

        //2. an empty object {} for cases when the previous response has been invalidated. (e.g. the user deletes the card number after fully typing it)
        {}
        ```

        Below you can find an example of how to create a card field, with the option to receive cardInfo active:

        ```js
        const cardNumber = fields.create('cardNumber', {
            style,
            placeholders,
            classes: elementClasses,
            getCardInfo: true
        })

        //Subscribing to the cardInfo event is as follows:
        cardNumber.on('cardInfo', (event) => {
            console.log('cardInfoEvent', event)
        })
        ```
  - name: secure fields - next
    x-parent: secure fields
    x-displayName: Что дальше?
    x-displayName-lang:
      en: What's next?
    description: |
      Теперь, когда вы собрали информацию о карте клиента, приступайте к созданию и авторизации платежа.

      Уделите внимание блоку `authorization.oneTimeUseToken` в теле запроса. В нем должен быть указан одноразовый токен, полученный при токенизации Secure Fields, и sessionId,
      использованный при инициализации Secure Fields и получении токена.
    x-description-lang:
      en: |
        Now that you’ve collected your customer’s card information, proceed to [create and authorize a payment](#tag/payment-api/paths/~1v4~1payments~1authorize/post).

        Pay attention to `authorization.oneTimeUseToken` node from the request body. There you must pass the token obtained during Secure Fields tokenization process along with the same sessionId used for the SDK initialization on which the token was created.
  - name: secure fields elements
    x-parent: secure fields
    x-displayName: Элементы формы Secure Fields
    x-displayName-lang:
      en: secure fields Elements
    description: ''
  - name: secure fields elements - class
    x-parent: secure fields elements
    x-displayName: Класс PayUSecureFields
    x-displayName-lang:
      en: PayUSecureFields Class
    description: |
      Класс создания Secure Fields и токенизации данных карты.

      ### 1 PayUSecureFields.Init(authData, options?)

      Создает экземпляр (инициализирует) Secure Fields.

      #### Параметры

      | Имя | Тип | Описание |
      | --- | --- | -------- |
      | auth | AuthenticationData object | (обязательный) объект, используемый для аутентификации мерчанта в YPMN. См. Secure Field AuthenticationData ниже. |
      | options | PosFieldsOptions object | (опциональный) объект с опциями, передаваемый при инициализации Secure Fields. См. Secure Field PosFieldsOptions ниже. |

      #### Secure Field AuthenticationData

      | Имя | Тип | Описание | Пример |
      | --- | --- | -------- | ------ |
      | merchantCode | string | (обязательный) Код мерчанта (устанавливается YPMN) | MERC_1 |
      | sessionId | string | (обязательный) Session ID, сгенерированный [API сессий](#tag/sessions/paths/~1v4~1payments~1sessions/post) | S79fac7b6-4f87-4a17-92b4-bffe16f68f1e |

      #### Secure Field PosFieldsOptions

      | Имя | Тип | Описание | Пример |
      | --- | --- | -------- | ------ |
      | directionLtr | boolean | (опциональный) Отображать ли поля слева направо или справа налево. Значение по умолчанию: true (слева направо). | true |
      | fonts | array | (опциональный) Список пользовательских шрифтов, применяемых к полям, в виде массива объектов, где каждый объект имеет ключ src и значение (строка) - ссылка на файл шрифтов. См. пример в разделе [Интеграция формы Secure Fields в страницу оплаты](#tag/secure-fields-embed). | [<br/>&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;src: 'https://fonts.googleapis.com/css?family=Source+Code+Pro'<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/>] |
      | luhnValidation | boolean | (опциональный) Проверять ли номер карты по алгоритму Луна. Значение по умолчанию: true. | true |

      #### 2 PayUSecureFields.createToken(elementType,additionalData)

      Возвращает токен для карточных данных, отправленных через форму Secure Fields.

      ### Параметры

      | Имя | Тип | Описание |
      | --- | --- | -------- |
      | elementType | string | Тип поля, для которого будет создан токен. Может принимать одно из следующих значений: `fullCreditCard`, `creditCard`, `cardNumber`. Описание каждого типа поля см. в разделе [Типы элементов формы](#tag/secure-fields-elements-fields) ниже. |
      | additionalData | object | JSON объект, содержащий пары ключ-значение дополнительных данных. Вы можете использовать эти данные в дополнение к данным карты, введенным пользователем. Данный параметр является обязательным, т.к. вы должны передать как минимум имя картодержателя. |
    x-description-lang:
      en: |
        The class for instantiating the secure fields and tokenizing the card details.

        ### 1 PayUSecureFields.Init(authData, options?)

        Creates an instance of the secure fields.

        #### Parameters

        | Name | Type | Description |
        | ---- | ---- | ----------- |
        | auth | AuthenticationData object | (mandatory) Object used for authenticating the merchant with YPMN. See Secure Field AuthenticationData below. |
        | options | PosFieldsOptions object | (optional) Options to pass when instantiating the secure fields. See Secure Field PosFieldsOptions below. |

        #### Secure Field AuthenticationData

        | Name | Type | Description | Example |
        | ---- | ---- | ----------- | ------- |
        | merchantCode | string | (mandatory) The code assigned by YPMN to the merchant | MERC_1 |
        | sessionId | string | (mandatory) Session ID generated by using the [session API](#tag/sessions/paths/~1v4~1payments~1sessions/post) | S79fac7b6-4f87-4a17-92b4-bffe16f68f1e |

        #### Secure Field PosFieldsOptions

        | Name | Type | Description | Example |
        | ---- | ---- | ----------- | ------- |
        | directionLtr | boolean | (optional) Whether to display the fields from left to right or right to left. Default is true (left to right). | true |
        | fonts | array | (optional) A list of custom fonts to be applied to the fields. The fonts must be stored in an array of objects, with each object having an src key and a value (string) referencing the font location. For an example, see [Embedding the secure fields in a Checkout Page](#tag/secure-fields-embed). | [<br/>&nbsp;&nbsp;&nbsp;&nbsp;{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;src: 'https://fonts.googleapis.com/css?family=Source+Code+Pro'<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/>] |
        | luhnValidation | boolean | (optional) Whether to check if the card number passed luhn validation. Default is true. | true |

        #### 2 PayUSecureFields.createToken(elementType,additionalData)

        Returns a token representation of the card data submitted through the secure fields.

        ### Parameters

        | Name | Type | Description |
        | ---- | ---- | ----------- |
        | elementType | string | The type of field for which the token will be created. Can be one of the following: `fullCreditCard`, `creditCard`, `cardNumber`. For an explanation of each field type, see [Form Elements Types](#tag/secure-fields-elements-fields) below. |
        | additionalData | object | A JSON object containing key - value pairs of additional data. You can use this data to complement the card data provided by the customer. This is parameter is required, as you must pass at least the card holder name. |
  - name: secure fields elements - fields
    x-parent: secure fields elements
    x-displayName: Элементы (поля) формы
    x-displayName-lang:
      en: Form Elements (Fields)
    description: |
      Элементы формы - поля, которые вы хотите показывать на странице оплаты.

      ### 1 formElements.create(elementType,options?)

      Создает элемент формы (поле) для отображения на странице оплаты. `formElements` - экземпляр, возвращаемый при вызове `PayUSecureFields.Init(options?)`.

      #### Параметры

      | Имя | Тип | Описание |
      | --- | --- | -------- |
      | elementType | string | Тип создаваемого поля. См. ниже типы элементов формы (полей). |
      | options | object | (optional) Дополнительные опции для передачи при создании поля. См. ниже перечень опций. |

      #### 1.1. Типы элементов формы (полей)

      | Имя типа поля | Описание |
      | ------------- | -------- |
      | fullCreditCard | Отображает поля для ввода номера карты, срока действия и cvv кода |
      | creditCard | Отображает поля для ввода номера и срока действия карты |
      | cardNumber | Отображает поле для ввода номера карты |
      | creditCardExpiry | Отображает поле для ввода срока действия карты |
      | cvv | Отображает поле для ввода cvv кода |
      | userAgreement | Отображает чекбокс для принятия пользовательского соглашения |

      #### 1.2. Опции элементов формы

      | Опция | Тип | Описание |
      | ----- | --- | -------- |
      | cardFormat | boolean | Приводить ли вводимый номер карты к соответствующему формату. Применимо только для полей с типом карты. Значение по умолчанию: `true` |
      | maxCardPanLength | number | Максимальная длина номера карты. Применимо только для полей с типом карты. Если для опции `cardFormat` установлено значение `true`, мы добавим 3 дополнительных символа для пробелов, используемых при форматировании. Значение по умолчанию: `22` символа с установленным `true` для опции `cardFormat`. |
      | classes | object | Классы, применимые для `div`, оборачивающего поле ввода. См. дополнительную информацию в разделе [Стилизация формы Secure Fields](#tag/secure-fields-form-styling). |
      | disabled | boolean | Запрещает ввод данных в поле |
      | includeCardImage | boolean | Отображать ли логотип платежной системы при вводе номера карты. Применимо только для полей с типом карты. Значение по умолчанию: `true` |
      | placeholders | object | Отображаемый по умолчанию текст в полях ввода. Применяется для полей типа: `cardNumber`, `cvv`, `expDate`. Для поля `userAgreement` в placeholder можно установить язык отображения текста о пользовательском соглашении, значение по умолчанию: `ru`. |
      | style | object | CSS стили для стилизации полей ввода. См. дополнительную информацию в разделе [Стилизация формы Secure Fields](#tag/secure-fields-form-styling). |

      ### 2 formElement.clear()

      Очищает поле ввода. `formElement` возвращается при вызове `formElements.create(elementType,options?)`.

      ### 3. formElement.destroy()

      Удаляет поле ввода из DOM. Можно вызвать только один раз. `formElement` возвращается при вызове `formElements.create(elementType,options?)`.

      ### 4. formElement.mount(containerSelector)

      Добавляет поле ввода в DOM. `formElement` возвращается при вызове `formElements.create(elementType,options?)`.

      #### Параметры

      | Имя | Тип | Описание |
      | --- | --- | -------- |
      | containerSelector | string | ID элемента, внутрь которого будет смонтировано поле. |

      ### 5. formElement.on(eventType, callBack)

      Устанавливает слушателя на поле ввода, отслеживает следующие события: изменение, фокус на поле и потеря фокуса. 
      `formElement` возвращается при вызове `formElements.create(elementType,options?)`.

      #### Параметра

      | Имя | Тип | Описание |
      | --- | --- | -------- |
      | eventType | string | Тип события, которое слушается. Может принимать следующие значения: `change`, `focus`, `blur`. |
      | callBack | function | Callback функция. Функция принимает один параметр - объект результата. |

      Параметр callback функции возвращает объект со следующими свойствами:

      | Имя | Тип значения | Описание |
      | --- | ------------ | -------- |
      | bin | string | Первые 6 цифр карты, идентифицирующие финансовый институт, выпустивший карту. |
      | complete | boolean | Введены ли и являются ли валидными данные карты.<br/><span class="info">Примечание</span><br/>: Для поля карты значение будет `true` если при создании поля была выключена проверка по алгоритму Луна. |
      | brand | string | Бренд карты. Возвращается только для номеров карт. |
      | empty | boolean | Пустое ли поле для ввода. |
      | error | object | Объект с ошибкой в случае возникновения ошибки. |

      В случае возврата объекта `error`, он содержит следующие свойства:

      | Имя | Тип значения | Описание |
      | --- | ------------ | -------- |
      | cvv | string | Результат проверки введенного cvv кода. Пример значения: `Card cvv is in the wrong length` |
      | pan | string | Результат проверки введенного номера карта. Пример значения: `Card number did not pass luhn validation` |
      | expiry | string | Результат проверки введенного срока действия карты. Пример значения: `Card expiration date is invalid` |
      | agreement | string | Результат проверки согласия с пользовательским соглашением. Пример значения: `User has not accepted user agreement` |

      ### 6. formElement.update(options)

      Обновляет поле ввода с применением указанных опций. `formElement` возвращается при вызове `formElements.create(elementType,options?)`.

      #### Parameters

      | Имя | Тип | Описание |
      | --- | --- | -------- |
      | options | object | (опциональный) Опции, которые можно передать при создании поля. |
    x-description-lang:
      en: |
        Form elements are fields that you can show in your checkout page.

        ### 1 formElements.create(elementType,options?)

        Instantiates a specific form element (field) to show in your checkout page. `formElements` is an instance returned by `PayUSecureFields.Init(options?)`.

        #### Parameters

        | Name | Type | Description |
        | ---- | ---- | ----------- |
        | elementType | string | The type of field to instantiate. See Form Elements Types below. |
        | options | object | (optional) Additional options to pass when instantiating a field. Form Elements Options below. |

        #### 1.1. Form Elements Types

        | Field type name | Description |
        | --------------- | ----------- |
        | fullCreditCard | Shows input fields for the card number, card expiration date and CVV code |
        | creditCard | Shows input fields for the card number and the card expiration date |
        | cardNumber | Shows an input field for the card number |
        | creditCardExpiry | Shows an input field for the card expiration date |
        | cvv | Shows an input field for the CVV code |
        | userAgreement | Shows an input checkbox for acceptance of the User's Agreement |

        #### 1.2. Form Elements Options

        | Option | Type | Description |
        | ------ | ---- | ----------- |
        | cardFormat | boolean | Whether to format the card number on input. Only applicable to card-type input fields. Default is `true` |
        | maxCardPanLength | number | The max length of the card number on input. Only applicable to card-type input fields. If the `cardFormat` option is `true`, we will add 3 more characters for the spaces used in the format. Default is `22` characters with cardFormat set on true. |
        | classes | object | Applies the specified class names to the `div` wrapping the input field. For more information, see [Styling the Secure Fields Form](#tag/secure-fields-form-styling). |
        | disabled | boolean | Disables the input field |
        | includeCardImage | boolean | Whether to show the card image on input. Only applicable to card-type input fields. Default is `true` |
        | placeholders | object | Placeholders for default text to show in an input field. Can be any of the following: `cardNumber`, `cvv`, `expDate` |
        | style | object | CSS styles for styling the input fields. For more information, see [Styling the Secure Fields Form](#tag/secure-fields-form-styling). |

        ### 2 formElement.clear()

        Clears the input field. `formElement` is an instance returned by `formElements.create(elementType,options?)`.

        ### 3. formElement.destroy()

        Unmounts the input field from the DOM. You can only call this once. `formElement` is an instance returned by `formElements.create(elementType,options?)`.

        ### 4. formElement.mount(containerSelector)

        Mounts a field to the DOM. `formElement` is an instance returned by `formElements.create(elementType,options?)`.

        #### Parameters

        | Name | Type | Description |
        | ---- | ---- | ----------- |
        | containerSelector | string | The ID of the `form`’s `input` element to which to mount the field. |

        ### 5. formElement.on(eventType, callBack)

        Binds an event listener to the input field, for events that are triggered when the value of an input field has been changed. 
        `formElement` is an instance returned by `formElements.create(elementType,options?)`.

        #### Parameters

        | Name | Type | Description |
        | ---- | ---- | ----------- |
        | eventType | string | The type of event that is listened to. Can be one of the following: `change`, `focus`, `blur`. |
        | callBack | function | A callback function. The function must take a single parameter through which a result object is returned. |

        The parameter of the callback function will return an object with the following properties:

        | Name | Value Type | Description |
        | ---- | ---------- | ----------- |
        | bin | string | The first 6 digits of the card identifying the financial institution that issued the card. |
        | complete | boolean | Whether the card data is inserted and valid.<br/><span class="info">Note</span><br/>: For card fields, this will be true if you disabled the luhn check when instantiating the secure fields. |
        | brand | string | The card brand. Only returned for card numbers. |
        | empty | boolean | Whether the input field is empty. |
        | error | object | An error object if an error occurred on input. |

        If an `error` object is returned, its object will have the following properties:

        | Name | Value Type | Description |
        | ---- | ---------- | ----------- |
        | cvv | string | The result of checking the cvv code on input. Example value: `Card cvv is in the wrong length` |
        | pan | string | The result of checking the account number on input. Example value: `Card number did not pass luhn validation` |
        | expiry | string | The result of checking the card expiration date on input. Example value: `Card expiration date is invalid` |
        | agreement | string | The result of checking the acceptance of User's Agreement. Example value: `User has not accepted user agreement` |

        ### 6. formElement.update(options)

        Updates the input field with the specified options. `formElement` is an instance returned by `formElements.create(elementType,options?)`.

        #### Parameters

        | Name | Type | Description |
        | ---- | ---- | ----------- |
        | options | object | (optional) Additional options to pass when instantiating a field. |
  - name: secure fields elements - styles
    x-parent: secure fields elements
    x-displayName: Стили
    x-displayName-lang:
      en: Styles
    description: |
      Вы можете стилизовать Secure Fields, передав объекты `style` или `classes` при вызове `formElements.create(elementType,options?)`.
      См. дополнительную информацию в разделе [Стилизация формы Secure Fields](#tag/secure-fields-form-styling).

      ### 1 Объект стилей

      Ниже приведен список ключей объектов, представляющих статус введенных данных, для которых могут быть применены стили. 
      Обратите внимание, что объекты стилей должны быть вложены в объект `style`.

      | Имя ключа | Описание |
      | --------- | -------- |
      | base | Стили, которые наследуются другими объектами |
      | complete | Применяется, когда введенные в поле данные валидны |
      | empty | Применяется, когда поле ввода пустое |
      | invalid | Применяется, когда введенные в поле данные не валидны |

      #### Свойства объекта стилей

      Ниже приведен список возможных свойств объекта стилей, расположенного внутри объекта `style`.

      | Свойство | Тип |
      | -------- | --- |
      | backgroundColor | string |
      | color | string |
      | fontFamily | string |
      | fontSize | string |
      | fontSmoothing | string |
      | fontStyle | string |
      | fontVariant | string |
      | fontWeight | string |
      | lineHeight | string |
      | letterSpacing | string |
      | padding | string |
      | textAlign | string |
      | textDecoration | string |
      | textShadow | string |
      | textTransform | string |

      #### Псевдоклассы и псевдоэлементы объекта стилей

      Ниже приведен список псевдоклассов и псевдоэлементов, которые может содержать объект стилей, расположенный внутри объекта `style`:
        * :hover
        * :focus
        * ::placeholder
        * ::selection
        * :disabled

      ### 2 Объект классов

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

      | Имя ключа | Описание | Имя класса по умолчанию, если оно не задано |
      | --------- | -------- | ------------------------------------------- |
      | base | Базовый класс применяемый к `div` элементам, обворачивающим каждое поле ввода | POSElement |
      | complete | Название класса применяемое к `div` элементу, когда введенные в поле данные валидны.<br/><span class="info">Примечание:</span><br/>Для полей карты этот класс будет также применяться для поля с введенными невалидными данными, если при создании поля вы отключили проверку по алгоритму Луна. | POSElement–complete |
      | empty | Название класса применяемое к `div` элементу, когда поле для ввода пустое | POSElement–empty |
      | focus | Название класса применяемое к `div` элементу, когда фокус оказывается на поле | POSElement–focus |
      | invalid | Название класса применяемое к `div` элементу, когда введенные в поле данные невалидны | POSElement–invalid |
    x-description-lang:
      en: |
        You can style the secure fields by passing `style` or `classes` objects to the `formElements.create(elementType,options?)` call. 
        For more information, see [Styling the Secure Fields Form](#tag/secure-fields-form-styling).

        ### 1 Style Objects

        The following is a list of object key names, representing the field input status to which you can apply styles. Note 
        that the objects must be nested with the `style` object.

        | Key Name | Description |
        | -------- | ----------- |
        | base | Styles that are inherited by the other objects |
        | complete | Applied when the field’s input is valid |
        | empty | Applied when the field has no input |
        | invalid | Applied when the field’s input is invalid |

        #### Style Object Style Properties

        The following is a list of style properties that you can apply to each object nested within the `style` object (see 
        Style Objects for a list of objects that can be nested).

        | Style | Type |
        | ----- | ---- |
        | backgroundColor | string |
        | color | string |
        | fontFamily | string |
        | fontSize | string |
        | fontSmoothing | string |
        | fontStyle | string |
        | fontVariant | string |
        | fontWeight | string |
        | lineHeight | string |
        | letterSpacing | string |
        | padding | string |
        | textAlign | string |
        | textDecoration | string |
        | textShadow | string |
        | textTransform | string |

        #### Style Object Pseudo Classes and Pseudo Elements

        The following is a list of pseudo classes and pseudo elements that you can apply to each object nested within the `style` 
        object (see Style Objects for a list of objects that you can be nested).
          * :hover
          * :focus
          * ::placeholder
          * ::selection
          * :disabled

        ### 2 Classes Object

        The following is the list of object key names, representing the field input status for which you can apply custom class names. 
        The default class names are listed as well.

        | Key Name | Description | Default class name if not supplied |
        | -------- | ----------- | ---------------------------------- |
        | base | The base class applied to the `div` elements wrapping each input field | POSElement |
        | complete | The class name to apply to the field’s `div` element when the field’s input is valid.<br/><span class="info">Note:</span><br/>For card fields, this class will also be applied for invalid input if you disabled the luhn check when instantiating the secure fields. | POSElement–complete |
        | empty | The class name to apply to the field’s `div` element when the field has no input | POSElement–empty |
        | focus | The class name to apply to the field’s `div` element when the field gets focus | POSElement–focus |
        | invalid | The class name to apply to the field’s `div` element when the field’s input is invalid | POSElement–invalid |
  - name: qst-api
    x-parent: methods
    x-displayName: Подключение сабмерчантов
    description: |
      API позволяет:
        - отправить заполненную анкету на проверку;
        - получить pdf-файл с заполненной анкетой;
        - узнать текущий статус анкеты и получить список созданных по этой анкете аккаунтов продавцов;
        - получить весь список анкет с указанием общей информации, статусу и созданных аккаунтов продавцов.
  - name: qst-api-webhooks
    x-parent: qst-api
    x-displayName: Вебхуки анкет сабмерчантов
    description: |
      Вебхуки анкет сабмерчантов отправляются при получении анкетой одного из следующих статусов:
        - filled
        - returned
        - declined
        - approved
        - completed
  - name: user-api
    x-parent: none
    x-displayName: User API
    description: |
      Специализированное API для управление пользователями, ролями и привилегиями включает следующие модули:
        - user-api-privileges - получение списка привилегий
        - user-api-users - просмотр пользователей мерчанта, создание/редактирование пользователя с привязкой ролей
        - user-api-roles - просмотр ролей мерчанта, создание/редактирование ролей с привязкой привилегий
  - name: user-api-privileges
    x-parent: user-api
    x-displayName: User API
    description: |
      Получение списка привилегий
  - name: user-api-roles
    x-parent: user-api
    x-displayName: User API
    description: |
      Просмотр ролей мерчанта, создание/редактирование ролей с привязкой привилегий
  - name: user-api-users
    x-parent: user-api
    x-displayName: User API
    description: |
      Просмотр пользователей мерчанта, создание/редактирование пользователя с привязкой ролей
paths:
  /v4/test:
    get:
      tags:
        - methods
      summary: Тестовый метод
      description: Метод для проверки связи, не требует авторизации
      x-summary-lang:
        en: Test
      responses:
        '200':
          description: Успешный ответ
          x-description-lang:
            en: Success
          headers:
            X-Header-Date:
              $ref: '#/components/headers/X-Header-Date'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TestSuccessResponse'
        5XX:
          description: Внутренняя ошибка сервера
          x-description-lang:
            en: Internal server error
  /v4/payments/authorize:
    parameters:
      - $ref: '#/components/parameters/X-Header-Signature'
      - $ref: '#/components/parameters/X-Header-Merchant'
      - $ref: '#/components/parameters/X-Header-Date'
      - $ref: '#/components/parameters/X-Header-Idempotency-Key'
    post:
      security:
        - Signature: []
      tags:
        - payment api
      summary: Создание и авторизация платежа
      x-summary-lang:
        en: Create and authorize a payment
      description: |
        Обратите внимание, доступны примеры запросов к API:

          - <a href="./#tag/payment-api/paths/~1v4~1payments~1authorize/post(split=no)(method=Страница%20оплаты%20картой)" class="ex_button">Без разделения платежа</a>
            - <a href="./#tag/payment-api/paths/~1v4~1payments~1authorize/post(method=Страница%20оплаты%20картой)(split=no)">Страница оплаты картой</a>
            - <a href="./#tag/payment-api/paths/~1v4~1payments~1authorize/post(method=Страница%20оплаты%20картой%20с%20токенизацией)(split=no)">Страница оплаты картой с токенизацией</a>
            - <a href="./#tag/payment-api/paths/~1v4~1payments~1authorize/post(method=Страница%20оплаты%20картой%20с%20согласием%20на%20подписку)(split=no)">Страница оплаты картой с согласием на подписку</a>
            - <a href="./#tag/payment-api/paths/~1v4~1payments~1authorize/post(method=Оплата%20картой%20%28h2h%29)(split=no)">Оплата картой (h2h)</a>
            - <a href="./#tag/payment-api/paths/~1v4~1payments~1authorize/post(method=Оплата%20картой%20с%20токенизацией%20%28h2h%29)(split=no)">Оплата картой с токенизацией (h2h)</a>
            - <a href="./#tag/payment-api/paths/~1v4~1payments~1authorize/post(method=Оплата%20токеном%20в%20один%20клик)(split=no)">Оплата токеном в один клик</a>
            - <a href="./#tag/payment-api/paths/~1v4~1payments~1authorize/post(method=Оплата%20токеном%20подписки)(split=no)">Оплата токеном подписки</a>
            - <a href="./#tag/payment-api/paths/~1v4~1payments~1authorize/post(method=Оплата%20СБП)(split=no)">Оплата СБП</a>
            - <a href="./#tag/payment-api/paths/~1v4~1payments~1authorize/post(method=Оплата%20СБП%20с%20токенизацией)(split=no)">Оплата СБП с токенизацией</a>
            - <a href="./#tag/payment-api/paths/~1v4~1payments~1authorize/post(method=Оплата%20СБП%20токеном)(split=no)">Оплата СБП токеном</a>
            - <a href="./#tag/payment-api/paths/~1v4~1payments~1authorize/post(method=Оплата%20в%20рассрочку)(split=no)">Оплата в рассрочку</a>
            - <a href="./#tag/payment-api/paths/~1v4~1payments~1authorize/post(method=Оплата%20картой%20не%20РФ)(split=no)">Оплата картой не РФ</a>
            - <a href="./#tag/payment-api/paths/~1v4~1payments~1authorize/post(method=Оплата%20картой%20не%20РФ%20с%20токенизацией)(split=no)">Оплата картой не РФ с токенизацией</a>
            - <a href="./#tag/payment-api/paths/~1v4~1payments~1authorize/post(method=Оплата%20картой%20не%20РФ%20токеном)(split=no)">Оплата картой не РФ токеном</a>
            - <a href="./#tag/payment-api/paths/~1v4~1payments~1authorize/post(method=Оплата%20SberPay)(split=no)">Оплата SberPay</a>
            - <a href="./#tag/payment-api/paths/~1v4~1payments~1authorize/post(method=Оплата%20SberPay%20с%20токенизацией)(split=no)">Оплата SberPay с токенизацией</a>
            - <a href="./#tag/payment-api/paths/~1v4~1payments~1authorize/post(method=Оплата%20SberPay%20токеном)(split=no)">Оплата SberPay токеном</a>
            - <a href="./#tag/payment-api/paths/~1v4~1payments~1authorize/post(method=Оплата%20Alfa%20Pay)(split=no)">Оплата Alfa Pay</a>
            - <a href="./#tag/payment-api/paths/~1v4~1payments~1authorize/post(method=Оплата%20T‑Pay)(split=no)">Оплата T‑Pay</a>
            - <a href="./#tag/payment-api/paths/~1v4~1payments~1authorize/post(method=Оплата%20T-Pay%20с%20токенизацией)(split=no)">Оплата T-Pay с токенизацией</a>
            - <a href="./#tag/payment-api/paths/~1v4~1payments~1authorize/post(method=Оплата%20T-Pay%20токеном)(split=no)">Оплата T-Pay токеном</a>


          - <a href="./#tag/payment-api/paths/~1v4~1payments~1authorize/post(split=yes)(method=Страница%20оплаты%20картой)" class="ex_button">С разделением платежа</a>
            - <a href="./#tag/payment-api/paths/~1v4~1payments~1authorize/post(method=Страница%20оплаты%20картой)(split=yes)">Страница оплаты картой</a>
            - <a href="./#tag/payment-api/paths/~1v4~1payments~1authorize/post(method=Страница%20оплаты%20картой%20с%20токенизацией)(split=yes)">Страница оплаты картой с токенизацией</a>
            - <a href="./#tag/payment-api/paths/~1v4~1payments~1authorize/post(method=Страница%20оплаты%20картой%20с%20согласием%20на%20подписку)(split=yes)">Страница оплаты картой с согласием на подписку</a>
            - <a href="./#tag/payment-api/paths/~1v4~1payments~1authorize/post(method=Оплата картой в один клик)(split=yes)">Оплата картой в один клик</a>
            - <a href="./#tag/payment-api/paths/~1v4~1payments~1authorize/post(method=Оплата%20картой%20подписки)(split=yes)">Оплата картой подписки</a>
            - <a href="./#tag/payment-api/paths/~1v4~1payments~1authorize/post(method=Оплата%20токеном%20в%20один клик)(split=yes)">Оплата токеном в один клик</a>
            - <a href="./#tag/payment-api/paths/~1v4~1payments~1authorize/post(method=Оплата%20токеном%20подписки)(split=yes)">Оплата токеном подписки</a>
            - <a href="./#tag/payment-api/paths/~1v4~1payments~1authorize/post(method=Оплата%20СБП)(split=yes)">Оплата СБП</a>
            - <a href="./#tag/payment-api/paths/~1v4~1payments~1authorize/post(method=Оплата%20СБП%20с%20токенизацией)(split=yes)">Оплата СБП с токенизацией</a>
            - <a href="./#tag/payment-api/paths/~1v4~1payments~1authorize/post(method=Оплата%20СБП%20с%20помощью токена)(split=yes)">Оплата СБП с помощью токена</a>
            - <a href="./#tag/payment-api/paths/~1v4~1payments~1authorize/post(method=Оплата%20SberPay)(split=yes)">Оплата SberPay</a>
            - <a href="./#tag/payment-api/paths/~1v4~1payments~1authorize/post(method=Оплата%20Alfa Pay)(split=yes)">Оплата Alfa Pay</a>
            - <a href="./#tag/payment-api/paths/~1v4~1payments~1authorize/post(method=Оплата%20T-Pay)(split=yes)">Оплата T-Pay</a>
      requestBody:
        required: true
        content:
          application/json (без разделения платежа):
            schema:
              $ref: '#/components/schemas/AuthorizeRequest'
            examples:
              card-page-payment:
                summary: Страница оплаты картой
                value:
                  merchantPaymentReference: zakaz_123
                  currency: RUB
                  successUrl: https://www.example.com/success
                  failUrl: https://www.example.com/fail
                  authorization:
                    paymentMethod: CCVISAMC
                  client:
                    billing:
                      firstName: John
                      lastName: Doe
                      email: test@ypmn.ru
                      phone: '0771346934'
                      countryCode: RU
                  products:
                    - name: Product name 1
                      sku: sku123-1
                      unitPrice: 10.5
                      quantity: 1
                    - name: Product name 2
                      sku: sku123-2
                      unitPrice: 20
                      quantity: 2
              card-page-onDemand-payment:
                summary: Страница оплаты картой с токенизацией
                value:
                  merchantPaymentReference: zakaz_123
                  currency: RUB
                  returnUrl: https://www.example.com/confirm
                  authorization:
                    paymentMethod: CCVISAMC
                  storedCredentials:
                    consentType: onDemand
                  client:
                    billing:
                      firstName: John
                      lastName: Doe
                      email: test@ypmn.ru
                      phone: '0771346934'
                      countryCode: RU
                  products:
                    - name: Product name 1
                      sku: sku123-1
                      unitPrice: 10.5
                      quantity: 1
                    - name: Product name 2
                      sku: sku123-2
                      unitPrice: 20
                      quantity: 2
              card-page-recurring-payment:
                summary: Страница оплаты картой с согласием на подписку
                value:
                  merchantPaymentReference: zakaz_123
                  currency: RUB
                  successUrl: https://www.example.com/success
                  failUrl: https://www.example.com/fail
                  authorization:
                    paymentMethod: CCVISAMC
                  storedCredentials:
                    consentType: recurring
                  client:
                    billing:
                      firstName: John
                      lastName: Doe
                      email: test@ypmn.ru
                      phone: '0771346934'
                      countryCode: RU
                  products:
                    - name: Product name 1
                      sku: sku123-1
                      unitPrice: 10.5
                      quantity: 1
                    - name: Product name 2
                      sku: sku123-2
                      unitPrice: 20
                      quantity: 2
              card-payment:
                summary: Оплата картой (h2h)
                value:
                  merchantPaymentReference: zakaz_123
                  currency: RUB
                  successUrl: https://www.example.com/success
                  failUrl: https://www.example.com/fail
                  authorization:
                    paymentMethod: CCVISAMC
                    cardDetails:
                      number: '4652035440667037'
                      expiryMonth: 8
                      expiryYear: 2025
                      cvv: 971
                      owner: John Doe
                  client:
                    billing:
                      firstName: John
                      lastName: Doe
                      email: test@ypmn.ru
                      phone: '0771346934'
                      countryCode: RU
                  products:
                    - name: Product name 1
                      sku: sku123-1
                      unitPrice: 10.5
                      quantity: 1
                    - name: Product name 2
                      sku: sku123-2
                      unitPrice: 20
                      quantity: 2
              card-binding:
                summary: Оплата картой с токенизацией (h2h)
                value:
                  merchantPaymentReference: zakaz_123
                  currency: RUB
                  successUrl: https://www.example.com/success
                  failUrl: https://www.example.com/fail
                  authorization:
                    paymentMethod: CCVISAMC
                    cardDetails:
                      number: '4652035440667037'
                      expiryMonth: 8
                      expiryYear: 2025
                      cvv: 971
                      owner: John Doe
                  storedCredentials:
                    consentType: recurring
                    subscriptionPurpose: 'Обоснование (причина) токенизации, например: Подписка на сервис X'
                  client:
                    billing:
                      firstName: John
                      lastName: Doe
                      email: test@ypmn.ru
                      phone: '0771346934'
                      countryCode: RU
                  products:
                    - name: Product name 1
                      sku: sku123-1
                      unitPrice: 10.5
                      quantity: 1
                    - name: Product name 2
                      sku: sku123-2
                      unitPrice: 20
                      quantity: 2
              token-cardholder-payment:
                summary: Оплата токеном в один клик
                value:
                  merchantPaymentReference: zakaz_123
                  currency: RUB
                  successUrl: https://www.example.com/success
                  failUrl: https://www.example.com/fail
                  authorization:
                    paymentMethod: CCVISAMC
                    merchantToken:
                      tokenHash: d41d8cd98f00b204e9800998ecf8427e
                  storedCredentials:
                    useType: cardholder
                  client:
                    billing:
                      firstName: John
                      lastName: Doe
                      email: test@ypmn.ru
                      phone: '0771346934'
                      countryCode: RU
                  products:
                    - name: Product name 1
                      sku: sku123-1
                      unitPrice: 10.5
                      quantity: 1
                    - name: Product name 2
                      sku: sku123-2
                      unitPrice: 20
                      quantity: 2
              token-recurring-payment:
                summary: Оплата токеном подписки
                value:
                  merchantPaymentReference: zakaz_123
                  currency: RUB
                  successUrl: https://www.example.com/success
                  failUrl: https://www.example.com/fail
                  authorization:
                    paymentMethod: CCVISAMC
                    merchantToken:
                      tokenHash: d41d8cd98f00b204e9800998ecf8427e
                  storedCredentials:
                    useType: recurring
                  client:
                    billing:
                      firstName: John
                      lastName: Doe
                      email: test@ypmn.ru
                      phone: '0771346934'
                      countryCode: RU
                  products:
                    - name: Product name 1
                      sku: sku123-1
                      unitPrice: 10.5
                      quantity: 1
                    - name: Product name 2
                      sku: sku123-2
                      unitPrice: 20
                      quantity: 2
              sbp-payment:
                summary: Оплата СБП
                value:
                  merchantPaymentReference: zakaz_123
                  currency: RUB
                  successUrl: https://www.example.com/success
                  failUrl: https://www.example.com/fail
                  authorization:
                    paymentMethod: FASTER_PAYMENTS
                  client:
                    billing:
                      firstName: John
                      lastName: Doe
                      email: test@ypmn.ru
                      phone: '0771346934'
                      countryCode: RU
                  products:
                    - name: Product name 1
                      sku: sku123-1
                      unitPrice: 10.5
                      quantity: 1
                    - name: Product name 2
                      sku: sku123-2
                      unitPrice: 20
                      quantity: 2
              sbp-binding:
                summary: Оплата СБП с токенизацией
                value:
                  merchantPaymentReference: zakaz_123
                  currency: RUB
                  successUrl: https://www.example.com/success
                  failUrl: https://www.example.com/fail
                  authorization:
                    paymentMethod: FASTER_PAYMENTS
                  storedCredentials:
                    consentType: recurring
                    subscriptionPurpose: Причина привязки
                  client:
                    billing:
                      firstName: John
                      lastName: Doe
                      email: test@ypmn.ru
                      phone: '0771346934'
                      countryCode: RU
                  products:
                    - name: Product name 1
                      sku: sku123-1
                      unitPrice: 10.5
                      quantity: 1
                    - name: Product name 2
                      sku: sku123-2
                      unitPrice: 20
                      quantity: 2
              sbp-payment-binding:
                summary: Оплата СБП токеном
                value:
                  merchantPaymentReference: zakaz_123
                  currency: RUB
                  successUrl: https://www.example.com/success
                  failUrl: https://www.example.com/fail
                  authorization:
                    paymentMethod: FASTER_PAYMENTS
                    merchantToken:
                      bindingId: ab2bb91a-0012-4129-a2bf-cd18418bc726
                      ypmnBindingId: ab2bb91a-0012-4129-a2bf-cd18418bc726
                  storedCredentials:
                    useType: merchant
                  client:
                    billing:
                      firstName: John
                      lastName: Doe
                      email: test@ypmn.ru
                      phone: '0771346934'
                      countryCode: RU
                  products:
                    - name: Product name 1
                      sku: sku123-1
                      unitPrice: 10.5
                      quantity: 1
                    - name: Product name 2
                      sku: sku123-2
                      unitPrice: 20
                      quantity: 2
              bnpl-payment:
                summary: Оплата в рассрочку
                value:
                  merchantPaymentReference: zakaz_123
                  currency: RUB
                  successUrl: https://www.example.com/success
                  failUrl: https://www.example.com/fail
                  authorization:
                    paymentMethod: BNPL
                  client:
                    billing:
                      firstName: John
                      lastName: Doe
                      email: test@ypmn.ru
                      phone: '0771346934'
                      countryCode: RU
                  products:
                    - name: Product name 1
                      sku: sku123-1
                      unitPrice: 10.5
                      quantity: 1
                    - name: Product name 2
                      sku: sku123-2
                      unitPrice: 20
                      quantity: 2
              intcard-payment:
                summary: Оплата картой не РФ
                value:
                  merchantPaymentReference: zakaz_123
                  currency:
                    description: RUB
                  successUrl: https://www.example.com/success
                  failUrl: https://www.example.com/fail
                  authorization:
                    paymentMethod: INTCARD
                    cardDetails:
                      number: '4652035440667037'
                      expiryMonth: 8
                      expiryYear: 2025
                      cvv: 971
                      owner: John Doe
                  client:
                    billing:
                      firstName: John
                      lastName: Doe
                      email: test@ypmn.ru
                      phone: '0771346934'
                      countryCode: RU
                  products:
                    - name: Product name 1
                      sku: sku123-1
                      unitPrice: 10.5
                      quantity: 1
                    - name: Product name 2
                      sku: sku123-2
                      unitPrice: 20
                      quantity: 2
              intcard-binding:
                summary: Оплата картой не РФ с токенизацией
                value:
                  merchantPaymentReference: zakaz_123
                  currency: RUB
                  successUrl: https://www.example.com/success
                  failUrl: https://www.example.com/fail
                  authorization:
                    paymentMethod: INTCARD
                    cardDetails:
                      number: '4652035440667037'
                      expiryMonth: 8
                      expiryYear: 2025
                      cvv: 971
                      owner: John Doe
                  storedCredentials:
                    consentType: recurring
                    subscriptionPurpose: Причина привязки
                  client:
                    billing:
                      firstName: John
                      lastName: Doe
                      email: test@ypmn.ru
                      phone: '0771346934'
                      countryCode: RU
                  products:
                    - name: Product name 1
                      sku: sku123-1
                      unitPrice: 10.5
                      quantity: 1
                    - name: Product name 2
                      sku: sku123-2
                      unitPrice: 20
                      quantity: 2
              intcard-payment-binding:
                summary: Оплата картой не РФ токеном
                value:
                  merchantPaymentReference: zakaz_123
                  currency: RUB
                  successUrl: https://www.example.com/success
                  failUrl: https://www.example.com/fail
                  authorization:
                    paymentMethod: INTCARD
                    merchantToken:
                      ypmnBindingId: ab2bb91a-0012-4129-a2bf-cd18418bc726
                  storedCredentials:
                    useType: merchant
                  client:
                    billing:
                      firstName: John
                      lastName: Doe
                      email: test@ypmn.ru
                      phone: '0771346934'
                      countryCode: RU
                  products:
                    - name: Product name 1
                      sku: sku123-1
                      unitPrice: 10.5
                      quantity: 1
                    - name: Product name 2
                      sku: sku123-2
                      unitPrice: 20
                      quantity: 2
              sberpay-payment:
                summary: Оплата SberPay
                value:
                  merchantPaymentReference: zakaz_123
                  currency: RUB
                  successUrl: https://www.example.com/success
                  failUrl: https://www.example.com/fail
                  authorization:
                    paymentMethod: SBERPAY
                  client:
                    billing:
                      firstName: John
                      lastName: Doe
                      email: test@ypmn.ru
                      phone: '0771346934'
                      countryCode: RU
                  products:
                    - name: Product name 1
                      sku: sku123-1
                      unitPrice: 10.5
                      quantity: 1
                    - name: Product name 2
                      sku: sku123-2
                      unitPrice: 20
                      quantity: 2
              sberpay-binding:
                summary: Оплата SberPay с токенизацией
                value:
                  merchantPaymentReference: zakaz_123
                  currency: RUB
                  successUrl: https://www.example.com/success
                  failUrl: https://www.example.com/fail
                  authorization:
                    paymentMethod: SBERPAY
                  storedCredentials:
                    consentType: recurring
                    subscriptionPurpose: Причина привязки
                  client:
                    billing:
                      firstName: John
                      lastName: Doe
                      email: test@ypmn.ru
                      phone: '0771346934'
                      countryCode: RU
                  products:
                    - name: Product name 1
                      sku: sku123-1
                      unitPrice: 10.5
                      quantity: 1
                    - name: Product name 2
                      sku: sku123-2
                      unitPrice: 20
                      quantity: 2
              sberpay-payment-binding:
                summary: Оплата SberPay токеном
                value:
                  merchantPaymentReference: zakaz_123
                  currency: RUB
                  successUrl: https://www.example.com/success
                  failUrl: https://www.example.com/fail
                  authorization:
                    paymentMethod: SBERPAY
                    merchantToken:
                      ypmnBindingId: ab2bb91a-0012-4129-a2bf-cd18418bc726
                  storedCredentials:
                    useType: merchant
                  client:
                    billing:
                      firstName: John
                      lastName: Doe
                      email: test@ypmn.ru
                      phone: '0771346934'
                      countryCode: RU
                  products:
                    - name: Product name 1
                      sku: sku123-1
                      unitPrice: 10.5
                      quantity: 1
                    - name: Product name 2
                      sku: sku123-2
                      unitPrice: 20
                      quantity: 2
              alfapay-payment:
                summary: Оплата Alfa Pay
                value:
                  merchantPaymentReference: zakaz_123
                  currency: RUB
                  successUrl: https://www.example.com/success
                  failUrl: https://www.example.com/fail
                  authorization:
                    paymentMethod: ALFAPAY
                  client:
                    billing:
                      firstName: John
                      lastName: Doe
                      email: test@ypmn.ru
                      phone: '0771346934'
                      countryCode: RU
                  products:
                    - name: Product name 1
                      sku: sku123-1
                      unitPrice: 10.5
                      quantity: 1
                    - name: Product name 2
                      sku: sku123-2
                      unitPrice: 20
                      quantity: 2
              tpay-payment:
                summary: Оплата T‑Pay
                value:
                  merchantPaymentReference: zakaz_123
                  currency: RUB
                  successUrl: https://www.example.com/success
                  failUrl: https://www.example.com/fail
                  authorization:
                    paymentMethod: TPAY
                  client:
                    billing:
                      firstName: John
                      lastName: Doe
                      email: test@ypmn.ru
                      phone: '0771346934'
                      countryCode: RU
                  products:
                    - name: Product name 1
                      sku: sku123-1
                      unitPrice: 10.5
                      quantity: 1
                    - name: Product name 2
                      sku: sku123-2
                      unitPrice: 20
                      quantity: 2
              tpay-binding:
                summary: Оплата T-Pay с токенизацией
                value:
                  merchantPaymentReference: zakaz_123
                  currency: RUB
                  successUrl: https://www.example.com/success
                  failUrl: https://www.example.com/fail
                  authorization:
                    paymentMethod: TPAY
                  storedCredentials:
                    consentType: recurring
                    subscriptionPurpose: Причина привязки
                  client:
                    billing:
                      firstName: John
                      lastName: Doe
                      email: test@ypmn.ru
                      phone: '0771346934'
                      countryCode: RU
                  products:
                    - name: Product name 1
                      sku: sku123-1
                      unitPrice: 10.5
                      quantity: 1
                    - name: Product name 2
                      sku: sku123-2
                      unitPrice: 20
                      quantity: 2
              tpay-payment-binding:
                summary: Оплата T-Pay токеном
                value:
                  merchantPaymentReference: zakaz_123
                  currency: RUB
                  successUrl: https://www.example.com/success
                  failUrl: https://www.example.com/fail
                  authorization:
                    paymentMethod: TPAY
                    merchantToken:
                      ypmnBindingId: ab2bb91a-0012-4129-a2bf-cd18418bc726
                  storedCredentials:
                    useType: merchant
                  client:
                    billing:
                      firstName: John
                      lastName: Doe
                      email: test@ypmn.ru
                      phone: '0771346934'
                      countryCode: RU
                  products:
                    - name: Product name 1
                      sku: sku123-1
                      unitPrice: 10.5
                      quantity: 1
                    - name: Product name 2
                      sku: sku123-2
                      unitPrice: 20
                      quantity: 2
          application/json (с разделением платежа):
            schema:
              $ref: '#/components/schemas/AuthorizeRequest'
            examples:
              mp1-card-page-payment:
                summary: Страница оплаты картой
                value:
                  merchantPaymentReference: zakaz_123
                  currency: RUB
                  successUrl: https://www.example.com/success
                  failUrl: https://www.example.com/fail
                  authorization:
                    paymentMethod: CCVISAMC
                  client:
                    billing:
                      firstName: John
                      lastName: Doe
                      email: test@ypmn.ru
                      phone: '0771346934'
                      countryCode: RU
                  products:
                    - name: Product name 1
                      sku: sku123-1
                      unitPrice: 10.5
                      quantity: 1
                      marketplace:
                        version: 1
                        merchantCode: MerchantCode1
                    - name: Product name 2
                      sku: sku123-2
                      unitPrice: 20
                      quantity: 2
                      marketplace:
                        version: 1
                        merchantCode: MerchantCode2
              mp1-card-page-onDemand-payment:
                summary: Страница оплаты картой с токенизацией
                value:
                  merchantPaymentReference: zakaz_123
                  currency: RUB
                  successUrl: https://www.example.com/success
                  failUrl: https://www.example.com/fail
                  authorization:
                    paymentMethod: CCVISAMC
                  storedCredentials:
                    consentType: onDemand
                  client:
                    billing:
                      firstName: John
                      lastName: Doe
                      email: test@ypmn.ru
                      phone: '0771346934'
                      countryCode: RU
                  products:
                    - name: Product name 1
                      sku: sku123-1
                      unitPrice: 10.5
                      quantity: 1
                      marketplace:
                        version: 1
                        merchantCode: MerchantCode1
                    - name: Product name 2
                      sku: sku123-2
                      unitPrice: 20
                      quantity: 2
                      marketplace:
                        version: 1
                        merchantCode: MerchantCode2
              mp1-card-page-recurring-payment:
                summary: Страница оплаты картой с согласием на подписку
                value:
                  merchantPaymentReference: zakaz_123
                  currency: RUB
                  successUrl: https://www.example.com/success
                  failUrl: https://www.example.com/fail
                  authorization:
                    paymentMethod: CCVISAMC
                  storedCredentials:
                    consentType: recurring
                  client:
                    billing:
                      firstName: John
                      lastName: Doe
                      email: test@ypmn.ru
                      phone: '0771346934'
                      countryCode: RU
                  products:
                    - name: Product name 1
                      sku: sku123-1
                      unitPrice: 10.5
                      quantity: 1
                      marketplace:
                        version: 1
                        merchantCode: MerchantCode1
                    - name: Product name 2
                      sku: sku123-2
                      unitPrice: 20
                      quantity: 2
                      marketplace:
                        version: 1
                        merchantCode: MerchantCode2
              mp1-card-payment:
                summary: Оплата картой
                value:
                  merchantPaymentReference: zakaz_123
                  currency: RUB
                  successUrl: https://www.example.com/success
                  failUrl: https://www.example.com/fail
                  authorization:
                    paymentMethod: CCVISAMC
                    cardDetails:
                      number: '4652035440667037'
                      expiryMonth: 8
                      expiryYear: 2025
                      cvv: 971
                      owner: John Doe
                  client:
                    billing:
                      firstName: John
                      lastName: Doe
                      email: test@ypmn.ru
                      phone: '0771346934'
                      countryCode: RU
                  products:
                    - name: Product name 1
                      sku: sku123-1
                      unitPrice: 10.5
                      quantity: 1
                      marketplace:
                        version: 1
                        merchantCode: MerchantCode1
                    - name: Product name 2
                      sku: sku123-2
                      unitPrice: 20
                      quantity: 2
                      marketplace:
                        version: 1
                        merchantCode: MerchantCode2
              mp1-card-cardholder-payment:
                summary: Оплата картой в один клик
                value:
                  merchantPaymentReference: zakaz_123
                  currency: RUB
                  successUrl: https://www.example.com/success
                  failUrl: https://www.example.com/fail
                  authorization:
                    paymentMethod: CCVISAMC
                    cardDetails:
                      number: '4652035440667037'
                      expiryMonth: 8
                      expiryYear: 2025
                      cvv: 971
                      owner: John Doe
                  storedCredentials:
                    useType: cardholder
                  client:
                    billing:
                      firstName: John
                      lastName: Doe
                      email: test@ypmn.ru
                      phone: '0771346934'
                      countryCode: RU
                  products:
                    - name: Product name 1
                      sku: sku123-1
                      unitPrice: 10.5
                      quantity: 1
                      marketplace:
                        version: 1
                        merchantCode: MerchantCode1
                    - name: Product name 2
                      sku: sku123-2
                      unitPrice: 20
                      quantity: 2
                      marketplace:
                        version: 1
                        merchantCode: MerchantCode2
              mp1-card-recurring-payment:
                summary: Оплата картой подписки
                value:
                  merchantPaymentReference: zakaz_123
                  currency: RUB
                  successUrl: https://www.example.com/success
                  failUrl: https://www.example.com/fail
                  authorization:
                    paymentMethod: CCVISAMC
                    cardDetails:
                      number: '4652035440667037'
                      expiryMonth: 8
                      expiryYear: 2025
                      cvv: 971
                      owner: John Doe
                  storedCredentials:
                    useType: recurring
                  client:
                    billing:
                      firstName: John
                      lastName: Doe
                      email: test@ypmn.ru
                      phone: '0771346934'
                      countryCode: RU
                  products:
                    - name: Product name 1
                      sku: sku123-1
                      unitPrice: 10.5
                      quantity: 1
                      marketplace:
                        version: 1
                        merchantCode: MerchantCode1
                    - name: Product name 2
                      sku: sku123-2
                      unitPrice: 20
                      quantity: 2
                      marketplace:
                        version: 1
                        merchantCode: MerchantCode2
              mp1-token-cardholder-payment:
                summary: Оплата токеном в один клик
                value:
                  merchantPaymentReference: zakaz_123
                  currency: RUB
                  successUrl: https://www.example.com/success
                  failUrl: https://www.example.com/fail
                  authorization:
                    paymentMethod: CCVISAMC
                    merchantToken:
                      tokenHash: d41d8cd98f00b204e9800998ecf8427e
                  storedCredentials:
                    useType: cardholder
                  client:
                    billing:
                      firstName: John
                      lastName: Doe
                      email: test@ypmn.ru
                      phone: '0771346934'
                      countryCode: RU
                  products:
                    - name: Product name 1
                      sku: sku123-1
                      unitPrice: 10.5
                      quantity: 1
                      marketplace:
                        version: 1
                        merchantCode: MerchantCode1
                    - name: Product name 2
                      sku: sku123-2
                      unitPrice: 20
                      quantity: 2
                      marketplace:
                        version: 1
                        merchantCode: MerchantCode2
              mp1-token-recurring-payment:
                summary: Оплата токеном подписки
                value:
                  merchantPaymentReference: zakaz_123
                  currency: RUB
                  successUrl: https://www.example.com/success
                  failUrl: https://www.example.com/fail
                  authorization:
                    paymentMethod: CCVISAMC
                    merchantToken:
                      tokenHash: d41d8cd98f00b204e9800998ecf8427e
                  storedCredentials:
                    useType: recurring
                  client:
                    billing:
                      firstName: John
                      lastName: Doe
                      email: test@ypmn.ru
                      phone: '0771346934'
                      countryCode: RU
                  products:
                    - name: Product name 1
                      sku: sku123-1
                      unitPrice: 10.5
                      quantity: 1
                      marketplace:
                        version: 1
                        merchantCode: MerchantCode1
                    - name: Product name 2
                      sku: sku123-2
                      unitPrice: 20
                      quantity: 2
                      marketplace:
                        version: 1
                        merchantCode: MerchantCode2
              mp1-sbp-payment:
                summary: Оплата СБП
                value:
                  merchantPaymentReference: zakaz_123
                  currency: RUB
                  successUrl: https://www.example.com/success
                  failUrl: https://www.example.com/fail
                  authorization:
                    paymentMethod: FASTER_PAYMENTS
                  client:
                    billing:
                      firstName: John
                      lastName: Doe
                      email: test@ypmn.ru
                      phone: '0771346934'
                      countryCode: RU
                  products:
                    - name: Product name 1
                      sku: sku123-1
                      unitPrice: 10.5
                      quantity: 1
                      marketplace:
                        version: 1
                        merchantCode: MerchantCode1
                    - name: Product name 2
                      sku: sku123-2
                      unitPrice: 20
                      quantity: 2
                      marketplace:
                        version: 1
                        merchantCode: MerchantCode2
              mp1-sbp-binding:
                summary: Оплата СБП с токенизацией
                value:
                  merchantPaymentReference: zakaz_123
                  currency: RUB
                  successUrl: https://www.example.com/success
                  failUrl: https://www.example.com/fail
                  authorization:
                    paymentMethod: FASTER_PAYMENTS
                  storedCredentials:
                    consentType: recurring
                    subscriptionPurpose: 'Обоснование (причина) токенизации, например: подписка в онлайн сервисе X по тарифу Y'
                  client:
                    billing:
                      firstName: John
                      lastName: Doe
                      email: test@ypmn.ru
                      phone: '0771346934'
                      countryCode: RU
                  products:
                    - name: Product name 1
                      sku: sku123-1
                      unitPrice: 10.5
                      quantity: 1
                      marketplace:
                        version: 1
                        merchantCode: MerchantCode1
                    - name: Product name 2
                      sku: sku123-2
                      unitPrice: 20
                      quantity: 2
                      marketplace:
                        version: 1
                        merchantCode: MerchantCode2
              mp1-sbp-payment-binding:
                summary: Оплата СБП с помощью токена
                value:
                  merchantPaymentReference: zakaz_123
                  currency: RUB
                  successUrl: https://www.example.com/success
                  failUrl: https://www.example.com/fail
                  authorization:
                    paymentMethod: FASTER_PAYMENTS
                    merchantToken:
                      bindingId: ab2bb91a-0012-4129-a2bf-cd18418bc726
                  storedCredentials:
                    useType: merchant
                  client:
                    billing:
                      firstName: John
                      lastName: Doe
                      email: test@ypmn.ru
                      phone: '0771346934'
                      countryCode: RU
                  products:
                    - name: Product name 1
                      sku: sku123-1
                      unitPrice: 10.5
                      quantity: 1
                      marketplace:
                        version: 1
                        merchantCode: MerchantCode1
                    - name: Product name 2
                      sku: sku123-2
                      unitPrice: 20
                      quantity: 2
                      marketplace:
                        version: 1
                        merchantCode: MerchantCode2
              mp1-bnpl-payment:
                summary: redocNoSelect
                value: null
              mp1-som-payment:
                summary: redocNoSelect
                value: null
              mp1-sberpay-payment:
                summary: Оплата SberPay
                value:
                  merchantPaymentReference: zakaz_123
                  currency: RUB
                  successUrl: https://www.example.com/success
                  failUrl: https://www.example.com/fail
                  authorization:
                    paymentMethod: SBERPAY
                  client:
                    billing:
                      firstName: John
                      lastName: Doe
                      email: test@ypmn.ru
                      phone: '0771346934'
                      countryCode: RU
                  products:
                    - name: Product name 1
                      sku: sku123-1
                      unitPrice: 10.5
                      quantity: 1
                      marketplace:
                        version: 1
                        merchantCode: MerchantCode1
                    - name: Product name 2
                      sku: sku123-2
                      unitPrice: 20
                      quantity: 2
                      marketplace:
                        version: 1
                        merchantCode: MerchantCode2
              mp1-alfapay-payment:
                summary: Оплата Alfa Pay
                value:
                  merchantPaymentReference: zakaz_123
                  currency: RUB
                  successUrl: https://www.example.com/success
                  failUrl: https://www.example.com/fail
                  authorization:
                    paymentMethod: ALFAPAY
                  client:
                    billing:
                      firstName: John
                      lastName: Doe
                      email: test@ypmn.ru
                      phone: '0771346934'
                      countryCode: RU
                  products:
                    - name: Product name 1
                      sku: sku123-1
                      unitPrice: 10.5
                      quantity: 1
                      marketplace:
                        version: 1
                        merchantCode: MerchantCode1
                    - name: Product name 2
                      sku: sku123-2
                      unitPrice: 20
                      quantity: 2
                      marketplace:
                        version: 1
                        merchantCode: MerchantCode2
              mp1-tpay-payment:
                summary: Оплата T‑Pay
                value:
                  merchantPaymentReference: zakaz_123
                  currency: RUB
                  successUrl: https://www.example.com/success
                  failUrl: https://www.example.com/fail
                  authorization:
                    paymentMethod: TPAY
                  client:
                    billing:
                      firstName: John
                      lastName: Doe
                      email: test@ypmn.ru
                      phone: '0771346934'
                      countryCode: RU
                  products:
                    - name: Product name 1
                      sku: sku123-1
                      unitPrice: 10.5
                      quantity: 1
                      marketplace:
                        version: 1
                        merchantCode: MerchantCode1
                    - name: Product name 2
                      sku: sku123-2
                      unitPrice: 20
                      quantity: 2
                      marketplace:
                        version: 1
                        merchantCode: MerchantCode2
      responses:
        '200':
          description: Авторизация создана успешно
          x-description-lang:
            en: Successfully created a payment
          headers:
            X-Header-Signature:
              $ref: '#/components/headers/X-Header-Signature'
            X-Header-Merchant:
              $ref: '#/components/headers/X-Header-Merchant'
            X-Header-Date:
              $ref: '#/components/headers/X-Header-Date'
          content:
            application/json (Оплата картой РФ):
              schema:
                $ref: '#/components/schemas/AuthorizeResponse'
            application/json (Оплата не РФ):
              schema:
                $ref: '#/components/schemas/AuthorizeResponse__INTCARD'
            application/json (Оплата СБП):
              schema:
                $ref: '#/components/schemas/AuthorizeResponse__FASTER_PAYMENTS'
            application/json (Оплата врассрочку «ПОДЕЛИ»):
              schema:
                $ref: '#/components/schemas/AuthorizeResponse__BNPL'
            application/json (Оплата Alfa Pay):
              schema:
                $ref: '#/components/schemas/AuthorizeResponse__ALFAPAY'
            application/json (Оплата SberPay):
              schema:
                $ref: '#/components/schemas/AuthorizeResponse__SBERPAY'
            application/json (Оплата T-Pay):
              schema:
                $ref: '#/components/schemas/AuthorizeResponse__TPAY'
        '429':
          $ref: '#/components/responses/TooManyRequestResponse'
        4XX:
          description: Авторизация не выполнена, неверные параметры
          x-description-lang:
            en: Payment failed due to some invalid parameters.
          headers:
            X-Header-Signature:
              $ref: '#/components/headers/X-Header-Signature'
            X-Header-Merchant:
              $ref: '#/components/headers/X-Header-Merchant'
            X-Header-Date:
              $ref: '#/components/headers/X-Header-Date'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AluClientErrorsResponse'
        5XX:
          description: Внутренняя ошибка сервера, повторите попытку позже
          x-description-lang:
            en: Payment failed due to some internal errors. Please retry later.
          headers:
            X-Header-Signature:
              $ref: '#/components/headers/X-Header-Signature'
            X-Header-Merchant:
              $ref: '#/components/headers/X-Header-Merchant'
            X-Header-Date:
              $ref: '#/components/headers/X-Header-Date'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServerErrorsResponse'
      x-codeSamples:
        - lang: PHP
          label: PHP
          source: |
            <?php

            declare(strict_types=1);

            use Ypmn\CardDetails;
            use Ypmn\Details;
            use Ypmn\PaymentMethods;
            use Ypmn\Product;
            use Ypmn\ApiRequest;
            use Ypmn\Billing;
            use Ypmn\Delivery;
            use Ypmn\IdentityDocument;
            use Ypmn\Client;
            use Ypmn\Payment;
            use Ypmn\Authorization;
            use Ypmn\PaymentException;
            use Ypmn\Std;
            use Ypmn\StoredCredentials;
            use Ypmn\SubmerchantReceipt;
            use Ypmn\UtmDto;

            /**
             * Пример с установленным пакетом
             * https://packagist.org/packages/yourpayments/php-api-client
             */
            $merchant = new Merchant('MERCHANT_CODE', 'MERCHANT_SECRET');

            // Сумма заказа вычисляется путём сложения стоимости "продуктов" (товаров или услуг в заказе)
            // Опишем первую товарную позицию
            $product1 = new Product();
            $product1->setName('Первый тестовый товар'); // Установим Наименование товара или услуги
            $product1->setSku('toy-01'); // Установим Артикул
            $product1->setVat(20); // Установим НДС
            $product1->setUnitPrice(1); // Установим Стоимость за единицу
            $product1->setQuantity(2); // Установим Количество
            $product1->setMeasurementUnit('шт'); // Установим единицы измерения (для чеков)

            // Опишем вторую товарную позицию
            $product2 = new Product();
            $product2->setName('Второй тестовый товар'); // Установим Наименование товара или услуги
            $product2->setSku('toy-02'); // Установим Артикул
            $product2->setVat(15); // Установим НДС
            $product2->setUnitPrice(3); // Установим Стоимость за единицу
            $product2->setQuantity(1); // Установим Количество
            $product1->setMeasurementUnit('кг'); // Установим единицы измерения (для чеков)

            // Опишем Биллинговую (платёжную) информацию
            $billing = new Billing;
            $billing->setCountryCode('RU'); // Установим Код страны
            $billing->setCity('Москва'); // Установим Город
            $billing->setState('Центральный регион'); // Установим Регион
            $billing->setAddressLine1('Улица Старый Арбат, дом 10'); // Установим Адрес Плательщика (первая строка)
            $billing->setAddressLine2('Офис Ypmn'); // Установим Адрес Плательщика (вторая строка)
            $billing->setZipCode('121000'); // Установим Почтовый Индекс Плательщика
            $billing->setFirstName('Иван'); // Установим Имя Плательщика
            $billing->setLastName('Петров'); // Установим Фамилия Плательщика
            $billing->setPhone('9670660742'); // Установим Телефон Плательщика
            $billing->setEmail('develop@ypmn.ru'); // Установим Email Плательщика

            // Опишем Доставку и принимающее лицо (необязательно)
            $delivery = new Delivery;

            // Установим документ, подтверждающий право приёма доставки (необязательно)
            $delivery->setIdentityDocument(
                new IdentityDocument(123456, 'Паспорт РФ')
            );
            $delivery->setCountryCode('RU'); // Установим Код страны
            $delivery->setCity('Москва'); // Установим Город
            $delivery->setState('Центральный регион'); // Установим Регион
            $delivery->setAddressLine1('Улица Старый Арбат, дом 10'); // Установим Адрес Лица, принимающего заказ (первая строка)
            $delivery->setAddressLine2('Офис Ypmn'); // Установим Адрес Лица, принимающего заказ (вторая строка)
            $delivery->setZipCode('121000'); // Установим Почтовый Индекс Лица, принимающего заказ
            $delivery->setFirstName('Мария'); // Установим Имя Лица, принимающего заказ
            $delivery->setLastName('Петрова'); // Установим Фамилия Лица, принимающего заказ
            $delivery->setPhone('89670660743'); // Установим Телефон Лица, принимающего заказ
            $delivery->setEmail('develop@ypmn.ru'); // Установим Email Лица, принимающего заказ
            $delivery->setCompanyName('ООО "Вектор"'); // Установим Название Компании, в которой можно оставить заказ

            // Создадим клиентское подключение
            $client = new Client;
            $client->setBilling($billing); // Установим биллинг
            $client->setDelivery($delivery); // Установим доставку
            $client->setCurrentClientIp(); // Установим IP (автоматически)
            $client->setCurrentClientTime(); // И Установим время (автоматически)

            // Создадим платёж
            $payment = new Payment;
            $payment->addProduct($product1); // Установим товарную позицию 1
            $payment->addProduct($product2); // Установим товарную позицию 2
            $payment->setCurrency('RUB'); // Установим валюту платежа

            // Создадим авторизацию по типу платежа
            $payment_method = @$_REQUEST['payment_method'] ?? PaymentMethods::CCVISAMC;
            $authorization = new Authorization($_REQUEST['payment_method']);

            /**
             * Пример для h2h оплаты картой
             * (для ТСП, сертифицированных по PCI-DSS)
             *
             * Пример включает в себя тестовую карту из
             * https://ypmn.ru/docs/#tag/testing
             *  $authorization->setUsePaymentPage(false)
             *  $authorization->setCardDetails(
             *      (new CardDetails())
             *      ->setNumber('4652035440667037')
             *      ->setExpiryYear((int) date('Y', strtotime('+1 year')))
             *      ->setExpiryMonth(8)
             *      ->setCvv('971')
             *      ->setOwner('CARD OWNER')
             *  );
             *
             * Также для ускорения платежа
             * см. метод $authorization->setThreeDSecure()
             */

            // Назначим авторизацию для нашего платежа
            $payment->setAuthorization($authorization);
            // Установим номер заказа (должен быть уникальным в вашей системе)
            $payment->setMerchantPaymentReference('primer_nomer__' . time());

            // Установим адреса перенаправления пользователя после удачной и неудачной оплаты
            $payment->setSuccessUrl('http://' . $_SERVER['SERVER_NAME'] . '/php-api-client/?function=returnPage&status=success');
            $payment->setFailUrl('http://' . $_SERVER['SERVER_NAME'] . '/php-api-client/?function=returnPage&status=fail');
            /*
             * @deprecated старый вариант с одним URL
             * $payment->setReturnUrl('http://' . $_SERVER['SERVER_NAME'] . '/php-api-client/?function=returnPage');
             */

            // Подготовим клиентское подключение
            $payment->setClient($client);

            // Создадим объект расширенных данных по транзакции
            $details = new Details();
            //Пример хранения маркетинговых меток
            if (!empty(@$_REQUEST['utm_source'])) {
                $details->set('utm_tags', (new UtmDto())->fromArray([
                   'utm_source'   => @$_REQUEST['utm_source'],
                   'utm_medium'   => @$_REQUEST['utm_medium'],
                   'utm_campaign' => @$_REQUEST['utm_campaign'],
                   'utm_term'     => @$_REQUEST['utm_term'],
                   'utm_content'  => @$_REQUEST['utm_content'],
               ]));
            }

            // Токенизация (сохранение платёжной информации для повторных оплат)
            if (isset($_REQUEST['tokenization'])) {
                $storedCredentials = new StoredCredentials();
                $storedCredentials->setConsentType('recurring');
                $storedCredentials->setSubscriptionPurpose('Обоснование или тема подписки');
                $payment->setStoredCredentials($storedCredentials);
            }

            // Сплитование (разделение платежа между получателями)
            if (isset($_REQUEST['split'])) {
                // Коды сабмерчантов можно получить у менеджера после их подключения
                $product1->setMarketplaceSubmerchantByCode('SUBMERCHANT_1_CODE');
                $product2->setMarketplaceSubmerchantByCode('SUBMERCHANT_2_CODE');
            }

            // Чек внешней кассы
            if (isset($_REQUEST['receipt'])) {
                // Ниже пример данных для регистрации чека в онлайн кассе АТОЛ
                // Подробнее см. в документации АТОЛ
                $receiptCommonArr = [
                    'external_id' => $payment->getMerchantPaymentReference(),
                    'receipt' => [
                        'client' => ['email' => $billing->getEmail()],
                        'company' => [
                            'email' => 'chek@romashka.ru', // Электронная почта отправителя чека
                            'sno' => 'osn', // Система налогообложения
                            'inn' => '5544332219', // ИНН организации
                            'payment_address' => 'https://v4.online.atol.ru' // место расчетов
                        ],
                        'items' => [],
                        'payments' => [
                            [
                                'type' => 1,
                                'sum' => 0,
                            ]
                        ],
                        'vats' => [],
                        'total' => 0,
                    ],
                    'timestamp' => (new DateTime())->format('d.m.Y H:i:s')
                ];

                // Чек для одного юрлица (без разделения платежа между получателями)
                if (!isset($_REQUEST['split'])) {
                    foreach ($payment->getProducts() as $product) {
                        $receiptsArr['receipt']['items'][] = [
                            'name' => $product->getName(),
                            'price' => $product->getUnitPrice(),
                            'quantity' => $product->getQuantity(),
                            'sum' => $product->getUnitPrice() * $product->getQuantity(),
                            'measurement_unit' => 'кг',
                            'payment_method' => 'full_payment',
                            'payment_object' => 'commodity',
                            'vat' => ['type' => 'vat120'],
                        ];
                        $receiptsArr['receipt']['vats'][] = ['type' => 'vat120'];
                        $receiptsArr['receipt']['payments'][0]['sum'] += $product->getUnitPrice() * $product->getQuantity();
                        $receiptsArr['receipt']['total'] += $product->getUnitPrice() * $product->getQuantity();
                    }

                    // Закодируем данные для онлайн кассы АТОЛ в JSON строку
                    $receipts = json_encode($receiptsArr);
                } else {
                    // Чек для нескольких юрлиц (с разделением платежа между получателями)
                    $receipts = [];
                    foreach ($payment->getProducts() as $i => $product) {
                        $receiptArr = $receiptCommonArr;
                        $receiptArr['external_id'] .= '_' . $i;
                        $receiptArr['receipt']['items'][] = [
                            'name' => $product->getName(),
                            'price' => $product->getUnitPrice(),
                            'quantity' => $product->getQuantity(),
                            'sum' => $product->getUnitPrice() * $product->getQuantity(),
                            'measurement_unit' => 'кг',
                            'payment_method' => 'full_payment',
                            'payment_object' => 'commodity',
                            'vat' => ['type' => 'vat120'],
                        ];
                        $receiptArr['receipt']['vats'][] = ['type' => 'vat120'];
                        $receiptArr['receipt']['payments'][0]['sum'] = $product->getUnitPrice() * $product->getQuantity();
                        $receiptArr['receipt']['total'] = $product->getUnitPrice() * $product->getQuantity();
                        // Закодируем данные для онлайн кассы АТОЛ в JSON строку
                        $receipt = json_encode($receiptArr);
                        $receipts[] = new SubmerchantReceipt(
                            $product->getMarketplaceSubmerchant()->getMerchantCode(),
                            $receipt
                        );
                    }
                }

                // Установим данные для передачи в АТОЛ для регистрации чеков
                $details->setReceipts($receipts);
            }

            // Добавим расширенные данные по транзакции в запрос на авторизацию платежа
            $payment->setDetails($details);

            // Создадим HTTP-запрос к API
            $apiRequest = new ApiRequest($merchant);
            // Режим отладки (закомментируйте или удалите в рабочей программе!)
            $apiRequest->setDebugMode(isset($_REQUEST['debug']));
            // Режим тестового сервер (закомментируйте или удалите в рабочей программе!)
            $apiRequest->setSandboxMode(isset($_REQUEST['sandbox']));
            // Отправим запрос
            $responseData = $apiRequest->sendAuthRequest($payment, $merchant);

            // Преобразуем ответ из JSON в массив
            try {
                $responseData = json_decode(
                    (string)$responseData['response'],
                    true,
                    16,
                    JSON_THROW_ON_ERROR
                );

                if (!empty($responseData['paymentResult']['bankResponseDetails']['customBankNode']['qr'])) {
                    $qr = $responseData['paymentResult']['bankResponseDetails']['customBankNode']['qr'];
                }

                // Выведем кнопку оплаты (рекомендуется, поддерживает все виды QR-кодов)
                echo Std::drawYpmnButton([
                     'url' => $responseData['paymentResult']['url'] ?? '',
                     'sum' => $payment->sumProductsAmount(),
                     'qr' => $qr ?? null,
                     'payment_method' => $payment_method,
                 ]);

                // Либо сделаем ссылку или редирект по адресу оплаты:
                // echo Std::redirect($responseData["paymentResult"]['url']);
            } catch (Exception $exception) {
                echo Std::alert([
                    'text' => '
                        Извините, платёжный метод временно недоступен.<br>
                        Вы можете попробовать другой способ оплаты, либо свяжитесь с продавцом.<br>
                        <br>
                        <pre>' . $exception->getMessage() . '</pre>',
                        'type' => 'danger',
                    ]);

                throw new PaymentException('Платёжный метод временно недоступен');
            }

            // Этот и другие примеры можно получить в репозитории
            // https://github.com/yourpayments/php-api-client
        - lang: Go
          label: Go
          source: "package main\n\nimport (\n\t\"fmt\"\n\t\"github.com/google/uuid\"\n\t\"github.com/yourpayments/go-api-client\"\n)\n\nfunc main() {\n\t/*\n\t * Получить данные мерчанта из переменных окружения\n\t * (получите Интеграционный Код Мерчанта\n\t * и Секретный Ключ у вашего менеджера YPMN)\n\t */\n\tmerchant := ypmn.GetMerchantFromEnv()\n\n\t// Можно передать данные вручную\n\t// merchant := ypmn.Merchant{MerchantCode:\"CC1\", MerchantSecret:\"SECRET_KEY\"}\n\n\t// Сформируем уникальный номер заказа\n\tmerchantPaymentReference := fmt.Sprintf(\"%s\", uuid.New())\n\n\t// Опишем позицию (продукт или услугу, которую мы хотим оплатить)\n\tproduct := ypmn.Product{\n\t\tName:      \"Заказ № \" + merchantPaymentReference,\n\t\tSKU:       merchantPaymentReference,\n\t\tUnitPrice: 200.42,\n\t\tQuantity:  1,\n\t}\n\n\t// Опишем биллинговую информацию\n\tbilling := ypmn.Billing{\n\t\tCountryCode: \"RU\",\n\t\tFirstName:   \"Иван\",\n\t\tLastName:    \"Петров\",\n\t\tEmail:       \"test1@ypmn.ru\",\n\t\tPhone:       \"+7-800-555-35-35\",\n\t\tCity:        \"Москва\",\n\t}\n\n\tclient := ypmn.Client{\n\t\tBilling: billing,\n\t}\n\n\t// Параметры авторизации платежа\n\tauthorization := ypmn.Authorization{\n\t\tPaymentMethod:  ypmn.CCVISAMC,\n\t\tUsePaymentPage: \"YES\",\n\t}\n\n\t// Настройки платежа\n\tpayment := ypmn.Payment{\n\t\tCurrency:                 \"RUB\",                        // валюта\n\t\tMerchantPaymentReference: merchantPaymentReference,     // номер заказа\n\t\tReturnUrl:                \"https://example.com/return\", // куда вернуть плательщика после оплаты\n\t\tСlient:                   client,\n\t\tAuthorization:            authorization,\n\t}\n\n\t// Добавим позицию в платёж\n\tpayment.AddProduct(product)\n\n\t// Запрос\n\tapiRequest := ypmn.ApiRequest{\n\t\tMerchant:        merchant,\n\t\tSandboxModeIsOn: true,\n\t\tDebugModeIsOn:   true,\n\t}\n\n\tresponce, err := apiRequest.SendAuthRequest(payment)\n\n\tif err != nil {\n\t\tpanic(\"Error: \" + err.Error())\n\n\t}\n\n\tcode, _ := responce[\"code\"].(float64)\n\n\tif int(code) == 429 {\n\t\tpanic(\"Слишком много запросов\")\n\t}\n\tif int(code) != 200 {\n\t\tfmt.Println(responce)\n\t\tpanic(\"Bad responce\")\n\t}\n\n\tpaymentResult, _ := responce[\"paymentResult\"].(map[string]interface{})\n\tlink, _ := paymentResult[\"url\"].(string)\n\n\t// Полученная ссылка на оплату\n\tfmt.Println(\"Перейдите по ссылке, чтобы оплатить: \" + link)\n}\n\n// Этот и другие примеры можно получить в репозитории\n// https://github.com/yourpayments/go-api-client\n"
        - lang: TypeScript
          label: JS/TypeScript
          source: |
            import {
                API,
                AuthorizationType,
                AuthorizeOrder, AuthorizeOrderResult,
                BillingInformation,
                Client,
                PaymentMethod,
                Product,
                YPMN
            } from "ts-ypmn-client";

            /*
             * Пример использования TypeScript SDK
             * https://www.npmjs.com/package/ts-ypmn-client
             *
             * Оплата картой
             */

            let CardAuthorizeOrderRequest = async () => {

                /*
                * Инициализируем API клиент c кодом и секретным ключом мерчанта
                *
                * (получите Интеграционный Код Мерчанта
                * и Секретный Ключ у вашего менеджера YPMN)
                */
                let ypmn_client = new YPMN("MERCHANT_CODE", "MERCHANT_SECRET");

                // Отправлять запросы на песочницу, закомментируйте в боевом приложении
                ypmn_client.setDebug();

                // Создаем модель товара
                let product = new Product(
                    "Тестовый товар", // Наименования
                    "Артикул-123", // Код товара
                    2000, // Стоимость 1 штуки
                    1 // Количество штук
                );

                // Создаем модель платежной информации
                let billing = new BillingInformation(
                    "Иван", // Имя Плательщика
                    "Иванов", // Фамилия Плательщика
                    "vasya.pupkin@ypmn.ru", // email Плательщика
                    "+7-800-555-35-35", // Телефон Плательщика
                    "Сочи", // Город Плательщика
                    "RU" // Страна Плательщика
                );

                // Задаем параметры авторизации платежа
                let client = new Client(billing);
                let authorization = new AuthorizationType(
                    PaymentMethod.Card, // Метод оплаты (картой)
                    "YES" // Использовать платёжныю страницу
                );

                // Создаем модель информации об авторизации платежа
                let authorizeOrder = new AuthorizeOrder(
                    "заказ номер " + Date.now(), // уникальный номер заказа
                    "RUB", // валюта
                    "https://example.com/back-link/", // ссылка для перенаправления покупателя
                    authorization,
                    client
                );

                // Добавляем товар в модель информации
                authorizeOrder.addProduct(product);

                // Запрашиваем данные с сервера
                let response: AuthorizeOrderResult = await ypmn_client.build(API.AuthorizeOrder)?.call(authorizeOrder);

                // При нормальной обработке, в переменной response.paymentResult.url будет адрес платёжной страницы
                if (null === response.paymentResult.url) {
                    console.log('Ошибка? ', response);
                    throw new Error();
                }

                console.log('Адрес платёжной страницы: ' + response.paymentResult.url);
            }

            CardAuthorizeOrderRequest().then();

            // Этот и другие примеры можно получить в репозитории
            // https://github.com/yourpayments/ts-ypmn-client
  /return-url:
    servers:
      - url: https://merchant-site.ru/
    post:
      summary: Возврат покупателя на returnUrl (POST)
      description: |
        Это пример возврата для старого параметра `returnUrl`,
        в современном API вы можете использовать параметры
        `successUrl` и `failUrl` в
        [запросах на авторизацию платежа](./#tag/payment-api/paths/~1v4~1payments~1authorize/post)
      tags:
        - payment api return url
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/ReturnUrlRequest'
      responses:
        default:
          description: ''
    get:
      summary: Возврат покупателя на returnUrl (GET)
      description: |
        Это пример возврата для старого параметра `returnUrl`,
        в современном API вы можете использовать параметры
        `successUrl` и `failUrl` в
        [запросах на авторизацию платежа](./#tag/payment-api/paths/~1v4~1payments~1authorize/post)
      tags:
        - payment api return url
      parameters:
        - $ref: '#/components/parameters/ReturnUrlRequestBody'
        - $ref: '#/components/parameters/ReturnUrlRequestSignature'
        - $ref: '#/components/parameters/ReturnUrlRequestMerchant'
        - $ref: '#/components/parameters/ReturnUrlRequestDate'
      responses:
        default:
          description: ''
  /v4/payments/capture:
    parameters:
      - $ref: '#/components/parameters/X-Header-Signature'
      - $ref: '#/components/parameters/X-Header-Merchant'
      - $ref: '#/components/parameters/X-Header-Date'
      - $ref: '#/components/parameters/X-Header-Idempotency-Key'
    post:
      tags:
        - payment api
      summary: Списание
      x-summary-lang:
        en: Capture a payment
      description: |
        Запрос используется по необходимости

          - если не настроено автоматическое списание
          - если необходимо списать средства до того момента,
          когда средства будут списаны автоматически
          - если надо произвести частичное списание (на сумму, меньше захолдированной)

        В соответствии с требованиями НСПК, холдирование денежных средств плательщика можно держать
        не более 7 календарных дней за исключением спец. категорий мерчантов
        (MCC: 4411, 4511, 4722, 5962, 4816, 5712, 6513, 7012, 7032, 7033, 7273, 7298, 7512, 7513, 7519, 7922,
        7929, 7941, 7997, 8241, 8244, 8249, 8299, 8675, 8699). Если операцию по иным категориям не подтвердить
        в течение 7 дней — она будет автоматически отменена системой Your Payments, по спец. категориям будет
        отменена на 30-й календарный день.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CaptureRequest'
      responses:
        '200':
          description: Запрос на списание успешно отправлен
          x-description-lang:
            en: Successfully send capture request. It will be process according to merchant setup in YPMN
          headers:
            X-Rate-Limit-Limit:
              $ref: '#/components/headers/X-Rate-Limit-Limit'
            X-Rate-Limit-Reset:
              $ref: '#/components/headers/X-Rate-Limit-Reset'
            X-Rate-Limit-Remaining:
              $ref: '#/components/headers/X-Rate-Limit-Remaining'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConfirmSuccessStatusResponse'
        '429':
          $ref: '#/components/responses/TooManyRequestResponse'
        4XX:
          description: Списание не выполнено, неверные параметры
          x-description-lang:
            en: Capture failed due to invalid parameters.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IdnClientErrorsStatusResponse'
        5XX:
          description: Внутренняя ошибка сервера, повторите попытку позже
          x-description-lang:
            en: Capture failed due to some internal errors. Please retry later.
          headers:
            X-Rate-Limit-Limit:
              $ref: '#/components/headers/X-Rate-Limit-Limit'
            X-Rate-Limit-Reset:
              $ref: '#/components/headers/X-Rate-Limit-Reset'
            X-Rate-Limit-Remaining:
              $ref: '#/components/headers/X-Rate-Limit-Remaining'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IdnServerErrorsStatusResponse'
  /v4/payments/refund:
    parameters:
      - $ref: '#/components/parameters/X-Header-Signature'
      - $ref: '#/components/parameters/X-Header-Merchant'
      - $ref: '#/components/parameters/X-Header-Date'
      - $ref: '#/components/parameters/X-Header-Idempotency-Key'
    post:
      tags:
        - payment api
      summary: Возврат/Отмена платежа
      x-summary-lang: Refund a payment
      description: |
        Возврат и Отмена платежа производятся одним и тем же методом, при этом важно понимать, что:

        <span class="info">Отмена - Операция отмены блокировки средств на карте. Производится до момента списания средств.</span>

        <span class="info">Возврат - Операция возврата средств, ранее списанных с карты плательщика.</span>
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RefundRequest'
      responses:
        '200':
          description: Запрос на возврат успешно отправлен
          x-description-lang:
            en: Successfully send refund request.
          headers:
            X-Rate-Limit-Limit:
              $ref: '#/components/headers/X-Rate-Limit-Limit'
            X-Rate-Limit-Reset:
              $ref: '#/components/headers/X-Rate-Limit-Reset'
            X-Rate-Limit-Remaining:
              $ref: '#/components/headers/X-Rate-Limit-Remaining'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RefundSuccessStatusResponse'
        '202':
          description: Операция уже отменена
          x-description-lang:
            en: Place of refund failed due to already cancelled sale
          headers:
            X-Rate-Limit-Limit:
              $ref: '#/components/headers/X-Rate-Limit-Limit'
            X-Rate-Limit-Reset:
              $ref: '#/components/headers/X-Rate-Limit-Reset'
            X-Rate-Limit-Remaining:
              $ref: '#/components/headers/X-Rate-Limit-Remaining'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IrnClientAlreadyAuthStatusResponse'
        '429':
          $ref: '#/components/responses/TooManyRequestResponse'
        4XX:
          description: Запрос на возврат не обработан, неверные параметры
          x-description-lang:
            en: Place of refund failed due to invalid parameters
          headers:
            X-Rate-Limit-Limit:
              $ref: '#/components/headers/X-Rate-Limit-Limit'
            X-Rate-Limit-Reset:
              $ref: '#/components/headers/X-Rate-Limit-Reset'
            X-Rate-Limit-Remaining:
              $ref: '#/components/headers/X-Rate-Limit-Remaining'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IrnClientErrorsStatusResponse'
        5XX:
          description: Внутренняя ошибка сервера, повторите попытку позже
          x-description-lang:
            en: Refund request failed due to some internal errors. Please retry later.
          headers:
            X-Rate-Limit-Limit:
              $ref: '#/components/headers/X-Rate-Limit-Limit'
            X-Rate-Limit-Reset:
              $ref: '#/components/headers/X-Rate-Limit-Reset'
            X-Rate-Limit-Remaining:
              $ref: '#/components/headers/X-Rate-Limit-Remaining'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IrnServerErrorsStatusResponse'
      x-codeSamples:
        - lang: PHP
          label: PHP
          source: |
            <?php

            declare(strict_types=1);

            use Ypmn\Merchant;
            use Ypmn\ApiRequest;
            use Ypmn\Refund;


            /**
             * Пример с установленным пакетом
             * https://packagist.org/packages/yourpayments/php-api-client
             */
            $merchant = new Merchant('MERCHANT_CODE', 'MERCHANT_SECRET');


            // Создадим запрос на возврат средств
            $refund = (new Refund);

            $refund->setYpmnPaymentReference($paymentIdString);

            // Возврат осуществляется по уникальному номеру транзакции в системе Ypmn
            // Может отличаться от номера в системе ТСП (мерчанта)
            $refund->setYpmnPaymentReference('2297597');

            // Полная сумма исходной операции
            $refund->setOriginalAmount(3700);

            // Cумма возврата (сколько вернуть Плательщику)
            $refund->setAmount(2000);

            // Если надо разделить возврат по кодам сабмерчантов (для маркетплейсов)
            // $refund->addMarketPlaceSubmerchant('SUBMERCHANT_1', 1300);
            // $refund->addMarketPlaceSubmerchant('SUBMERCHANT_2', 700);

            // Установим валюту
            $refund->setCurrency('RUB');

            // Создадим HTTP-запрос к API
            $apiRequest = new ApiRequest($merchant);

            // Включить режим отладки (закомментируйте или удалите в рабочей программе!)
            $apiRequest->setDebugMode();

            // Переключиться на тестовый сервер (закомментируйте или удалите в рабочей программе!)
            $apiRequest->setSandboxMode();

            // Отправим запрос к API
            $responseData = $apiRequest->sendRefundRequest($refund, $merchant);

            // Этот и другие примеры можно получить в репозитории
            // https://github.com/yourpayments/php-api-client
        - lang: Go
          label: Go
          source: "package main\n\nimport (\n\t\"fmt\"\n\t\"github.com/yourpayments/go-api-client\"\n)\n\nfunc main() {\n\n\t/*\n\t * Установить Код Мерчанта и Секретный Ключ из переменных окружения\n\t * (рекомендуется)\n\t *\n\t * Интеграционный Код Мерчанта  и Секретный Ключ\n\t * можно уточнить у вашего менеджера YPMN или в ЛК\n\t */\n\tmerchant := ypmn.GetMerchantFromEnv()\n\n\t// Можно передать данные вручную\n\t// merchant := ypmn.Merchant{MerchantCode:\"MERCHANT_CODE\", MerchantSecret:\"MERCHANT_SECRET\"}\n\n\tapiRequest := ypmn.ApiRequest{\n\t\tMerchant:        merchant,\n\t\tSandboxModeIsOn: true,\n\t\tDebugModeIsOn:   true,\n\t}\n\n\t// Запросить полный возврат по уникальному номеру транзакции в системе ТСП (мерчанта)\n\tresponce, _ := apiRequest.SendOrderStatusRequest(\"primer_nomer__123\")\n\n\tfmt.Println(responce)\n}\n\n// Этот и другие примеры можно получить в репозитории\n// https://github.com/yourpayments/go-api-client\n"
        - lang: TypeScript
          label: JS/TypeScript
          source: "import {API, RefundOrder, RefundOrderResult, YPMN} from \"ts-ypmn-client\";\n\n/*\n * Пример запроса на возврат\n */\nlet RefundOrderExample = async () => {\n\n    /*\n    * Инициализируем API клиент с кодом и секретным ключом ТСП (мерчанта)\n    *\n    * Интеграционный Код Мерчанта  и Секретный Ключ\n\t* можно уточнить у вашего менеджера YPMN или в ЛК\n    */\n    let client = new YPMN(\"MERCHANT_CODE\", \"MERCHANT_SECRET\");\n\n    // Включить тестовый режим (sandbox.ypmn.ru)\n    // закомментируйте или отключите в боевом приложении\n    client.setDebug();\n\n    // Запрашиваем информацию с сервера\n    let response: RefundOrderResult;\n    response = await client.build(API.RefundOrder)?.call(new RefundOrder(\n        2501007, // Уникальный номер транзакции в системе YPMN (может отличаться от номера в ТСП)\n        2000, // Полная сумма исходной операции\n        1000, // Cумма возврата (сколько вернуть Плательщику)\n        \"RUB\" // Код валюты\n    ));\n\n    console.log(response.refundRequestId);\n}\n\nRefundOrderExample().then();\n\n// Этот и другие примеры можно получить в репозитории\n// https://github.com/yourpayments/ts-ypmn-client\n"
  /v4/payments/status/{merchantPaymentReference}:
    parameters:
      - $ref: '#/components/parameters/X-Header-Signature'
      - $ref: '#/components/parameters/X-Header-Merchant'
      - $ref: '#/components/parameters/X-Header-Date'
      - $ref: '#/components/parameters/merchantPaymentReference'
    get:
      tags:
        - payment api
      summary: Статус платежа
      x-summary-lang:
        en: Status of a payment
      responses:
        '200':
          description: Статус платежа успешно получен
          x-description-lang:
            en: Successfully get payment status.
          headers:
            X-Rate-Limit-Limit:
              $ref: '#/components/headers/X-Rate-Limit-Limit'
            X-Rate-Limit-Reset:
              $ref: '#/components/headers/X-Rate-Limit-Reset'
            X-Rate-Limit-Remaining:
              $ref: '#/components/headers/X-Rate-Limit-Remaining'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StatusSuccessResponse'
        '404':
          description: Платеж не найден
          x-description-lang:
            en: Payment not found
          headers:
            X-Rate-Limit-Limit:
              $ref: '#/components/headers/X-Rate-Limit-Limit'
            X-Rate-Limit-Reset:
              $ref: '#/components/headers/X-Rate-Limit-Reset'
            X-Rate-Limit-Remaining:
              $ref: '#/components/headers/X-Rate-Limit-Remaining'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundResponse'
        '429':
          $ref: '#/components/responses/TooManyRequestResponse'
        5XX:
          description: Внутренняя ошибка сервера, повторите попытку позже
          x-description-lang:
            en: Refund request failed due to some internal errors. Please retry later.
          headers:
            X-Rate-Limit-Limit:
              $ref: '#/components/headers/X-Rate-Limit-Limit'
            X-Rate-Limit-Reset:
              $ref: '#/components/headers/X-Rate-Limit-Reset'
            X-Rate-Limit-Remaining:
              $ref: '#/components/headers/X-Rate-Limit-Remaining'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServerErrorsResponse'
      x-codeSamples:
        - lang: PHP
          label: PHP
          source: |
            <?php

            declare(strict_types=1);

            use Ypmn\Merchant;
            use Ypmn\ApiRequest;


            /**
             * Пример с установленным пакетом
             * https://packagist.org/packages/yourpayments/php-api-client
             */
            $merchant = new Merchant('MERCHANT_CODE', 'MERCHANT_SECRET');

            // Уникальный номер платежа в системе ТСП (мерчанта)
            $merchantPaymentReference = 'primer_nomer__123';

            // Создадим HTTP-запрос к API
            $apiRequest = new ApiRequest($merchant);

            // Включить режим отладки (закомментируйте или удалите в рабочей программе!)
            $apiRequest->setDebugMode();

            // Переключиться на тестовый сервер (закомментируйте или удалите в рабочей программе!)
            $apiRequest->setSandboxMode();

            // Отправим запрос к API
            $responseData = $apiRequest->sendStatusRequest($merchantPaymentReference);

            // Этот и другие примеры можно получить в репозитории
            // https://github.com/yourpayments/php-api-client
        - lang: Go
          label: Go
          source: "package main\n\nimport (\n\t\"fmt\"\n\t\"github.com/yourpayments/go-api-client\" // импорт библиотеки\n)\n\nfunc main() {\n\n\t/*\n\t * Установить Код Мерчанта и Секретный Ключ из переменных окружения\n\t * (рекомендуется)\n\t *\n\t * Интеграционный Код Мерчанта  и Секретный Ключ\n\t * можно уточнить у вашего менеджера YPMN или в ЛК\n\t */\n\tmerchant := ypmn.GetMerchantFromEnv()\n\n\t// Можно передать данные вручную\n\t// merchant := ypmn.Merchant{MerchantCode:\"MERCHANT_CODE\", MerchantSecret:\"MERCHANT_SECRET\"}\n\n\tapiRequest := ypmn.ApiRequest{\n\t\tMerchant:        merchant,\n\t\tSandboxModeIsOn: true,\n\t\tDebugModeIsOn:   true,\n\t}\n\n\t// Запрос по уникальному номеру заказа в системе ТСП (мерчанта)\n\tresponce, _ := apiRequest.SendOrderStatusRequest(\"primer_nomer__123\")\n\n\tfmt.Println(responce)\n}\n\n// Этот и другие примеры можно получить в репозитории\n// https://github.com/yourpayments/go-api-client\n"
        - lang: TypeScript
          label: JS/TypeScript
          source: "import {API, OrderStatus, YPMN} from \"ts-ypmn-client\";\n\n/*\n * Пример запроса информации о платеже\n * по уникальному номеру транзакции в системе ТСП (мерчанта)\n */\nlet GetOrderStatusRequest = async () => {\n\n    /*\n    * Инициализируем API клиент с кодом и секретным ключом ТСП (мерчанта)\n    *\n    * Интеграционный Код Мерчанта  и Секретный Ключ\n\t* можно уточнить у вашего менеджера YPMN или в ЛК\n    */\n    let client = new YPMN(\"MERCHANT_CODE\", \"MERCHANT_SECRET\");\n\n    // Включить тестовый режим (sandbox.ypmn.ru)\n    // закомментируйте или отключите в боевом приложении\n    client.setDebug();\n\n    // Запрос статуса по уникальному номеру транзакции в системе ТСП (мерчанта)\n    let response: OrderStatus = await client.build(API.GetOrderStatus)?.call(\"primer_nomer__123\");\n\n    console.log(response.paymentStatus);\n}\n\nGetOrderStatusRequest().then();\n\n// Этот и другие примеры можно получить в репозитории\n// https://github.com/yourpayments/ts-ypmn-client\n"
  /v4/payout:
    post:
      parameters:
        - $ref: '#/components/parameters/X-Header-Signature'
        - $ref: '#/components/parameters/X-Header-Merchant'
        - $ref: '#/components/parameters/X-Header-Date'
        - $ref: '#/components/parameters/X-Header-Idempotency-Key'
      tags:
        - payouts api
      summary: Выплата
      x-summary-lang:
        en: Create payout
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PayoutRequest'
            examples:
              card-payout:
                summary: Выплата на карту
                value:
                  merchantPayoutReference: '896782'
                  amount:
                    currency: EUR
                    value: 5.66
                  description: Description of payout
                  destination:
                    type: card
                    card:
                      cardNumber: '4111111111111111'
                    recipient:
                      type: individual
                      email: example@email.com
                      city: Moscow
                      address: Sector 2
                      postalCode: '510002'
                      countryCode: RU
                      firstName: John
                      lastName: Doe
                  source:
                    type: merchantBalance
                    sender:
                      firstName: John
                      lastName: John
                      email: senderEmail@mail.com
                      phone: '0764111111'
              sbp-payout:
                summary: Выплата СБП
                value:
                  merchantPayoutReference: '896782'
                  amount:
                    currency: EUR
                    value: 5.66
                  description: Description of payout
                  destination:
                    type: sbp
                    sbp:
                      phoneNumber: '79991234567'
                      bankId: '10000000001'
                    recipient:
                      type: individual
                      email: example@email.com
                      city: Moscow
                      address: Sector 2
                      postalCode: '510002'
                      countryCode: RU
                      firstName: John
                      lastName: Doe
                  source:
                    type: merchantBalance
                    sender:
                      firstName: John
                      lastName: John
                      email: senderEmail@mail.com
                      phone: '0764111111'
      responses:
        '200':
          description: Запрос на выплату отправлен успешно
          x-description-lang:
            en: Successfully sent payout request.
          headers:
            X-Header-Signature:
              $ref: '#/components/headers/X-Header-Signature'
            X-Header-Merchant:
              $ref: '#/components/headers/X-Header-Merchant'
            X-Header-Date:
              $ref: '#/components/headers/X-Header-Date'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayoutSuccessResponse'
        '401':
          description: Несанкционированный запрос
          x-description-lang:
            en: Unauthorized request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayoutUnauthorizedResponse'
        '429':
          description: Too many requests
          x-description-lang:
            en: Слишком много запросов
          headers:
            X-Header-Signature:
              $ref: '#/components/headers/X-Header-Signature'
            X-Header-Merchant:
              $ref: '#/components/headers/X-Header-Merchant'
            X-Header-Date:
              $ref: '#/components/headers/X-Header-Date'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayoutTooManyRequestResponse'
        '502':
          description: Bad gateway
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadGatewayResponse'
        4XX:
          description: Неверный запрос на выплату
          x-description-lang:
            en: Invalid payout request
          headers:
            X-Header-Signature:
              $ref: '#/components/headers/X-Header-Signature'
            X-Header-Merchant:
              $ref: '#/components/headers/X-Header-Merchant'
            X-Header-Date:
              $ref: '#/components/headers/X-Header-Date'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayoutClientErrorResponse'
        5XX:
          description: Внутренняя ошибка сервера
          x-description-lang:
            en: Internal server error
          headers:
            X-Header-Signature:
              $ref: '#/components/headers/X-Header-Signature'
            X-Header-Merchant:
              $ref: '#/components/headers/X-Header-Merchant'
            X-Header-Date:
              $ref: '#/components/headers/X-Header-Date'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayoutServerErrorsResponse'
      x-codeSamples:
        - lang: PHP
          label: PHP
          source: |
            <?php

            declare(strict_types=1);

            use Ypmn\Merchant;
            use Ypmn\Amount;
            use Ypmn\ApiRequest;
            use Ypmn\Billing;
            use Ypmn\Payout;
            use Ypmn\PayoutDestination;
            use Ypmn\PayoutSource;

            /**
             * Этот пример подразумевает,
             * что в программе установлен composer и пакет SDK:
             * https://packagist.org/packages/yourpayments/php-api-client
             *
             * Создадим объект Мерчанта
             * (получите Интеграционный Код Мерчанта
             * и Секретный Ключ у вашего менеджера YPMN)
             *
             * Запросы от вашего приложения будут отправляться на:
             *      https://secure.ypmn.ru/
             *      https://sandbox.ypmn.ru/
             * Убедитесь, что эти адреса разрешены в Firewall вашего приложения
             */
            $merchant = new Merchant('MERCHANT_CODE', 'MERCHANT_SECRET');

            /**
             * Это файл с примером для создания выплат на карту физ. лицам
             **/

            // Созданим выплату
            $payout = new Payout();

            // Назначим ей уникальный номер выплаты
            // (повторно этот номер использовать нельзя,
            // даже если выплата неудачная
            $payout->setMerchantPayoutReference('payout__' . time());

            // Назначим сумму (здесь пример передачи данных из формы + стандартное значение)
            $payout->setAmount(
                new Amount(150.00, 'RUB')
            );

            // Назначим Описание
            $payout->setDescription('Тестовое Описание Платежа');
            // Опишем и назначим Направление и Получателя платежа
            $destination = new PayoutDestination();
            // Назначим номер карты (здесь пример передачи данных из формы + стандартное значение)
            $destination->setCardNumber('4149605380309302');
            // Опишем получателя
            $recipient = new Billing();
            // E-mail получателя
            $recipient->setEmail('test1@ypmn.ru');
            // Город получателя
            $recipient->setCity('Москва');
            // Адрес получателя
            $recipient->setAddressLine1('Арбат, 10');
            // Почтовый индекс получателя
            $recipient->setZipCode('121000');
            // Код страны получателя (2 буквы, на английском)
            $recipient->setCountryCode('RU');
            // Установим Имя получателя для платежа (здесь пример передачи данных из формы + стандартное значение)
            $recipient->setFirstName('Иван');
            // Фамилия получателя (здесь пример передачи данных из формы + стандартное значение)
            $recipient->setLastName('Петров');
            $destination->setRecipient($recipient);
            $payout->setDestination($destination);

            // Опишем и назначим Источник платежа
            $source = new PayoutSource();
            // Опишем отправителя
            $sender = new Billing();
            // Имя отправителя
            $sender->setFirstName('Василий');
            // Фамилия отправителя
            $sender->setLastName('Петрович');
            // Телефон отправителя
            $sender->setPhone('0764111111');
            // Email отправителя
            $sender->setEmail('test2@ypmn.ru');;

            $source->setSender($sender);
            $payout->setSource($source);

            // Создадим HTTP-запрос к API
            $apiRequest = new ApiRequest($merchant);

            // Включить режим отладки (закомментируйте или удалите в рабочей программе!)
            $apiRequest->setDebugMode();

            // Переключиться на тестовый сервер (закомментируйте или удалите в рабочей программе!)
            $apiRequest->setSandboxMode();

            // Отправим запрос
            $responseData = $apiRequest->sendPayoutCreateRequest($payout);

            // Этот и другие примеры можно получить в репозитории
            // https://github.com/yourpayments/php-api-client
    get:
      tags:
        - payouts api
      summary: Отчёт по выплатам
      x-summary-lang:
        en: Retrieve payouts
      description: |
        Возвращает коллекцию выплат на основе параметров запроса.

        <span class="info">В данном API есть ограничение на количество возвращаемых результатов - 50.</span>

        Чтобы получить полный отчет, соответствующий условиям, вы должны продолжать последовательно вызывать API, используя URL-адрес, указанный в узле _links из ответа в параметре **next** (для получения более подробной информации вы можете проверить структуру ответа ниже).
      x-description-lang:
        en: |
          Retrieves a collection of payouts based on the filters received. Filters are expected as query parameters and we have the available ones listed below. <br/>
          We have a limit on each call to return maximum 50 payouts. <br/>
          To retrieve all the payouts that meet the conditions, you have to continue to call the API using the next url provided in _links node from response (for more details, you can check the response structure below).
      parameters:
        - $ref: '#/components/parameters/X-Header-Signature'
        - $ref: '#/components/parameters/X-Header-Merchant'
        - $ref: '#/components/parameters/X-Header-Date'
        - name: merchantCodes
          in: query
          description: Массив торговых кодов
          x-description-lang:
            en: Array of merchant codes
          explode: false
          schema:
            type: array
            items:
              type: string
              example: MERCH_V1
              minLength: 1
        - name: startDate
          in: query
          description: Дата и время начала диапазона для отображения в ответе. Он должен быть в формате [ISO_8601 Ymd\TH:i:sP](https://en.wikipedia.org/wiki/ISO_8601)
          x-description-lang:
            en: Date start of search payouts in [ISO_8601 Y-m-d\TH:i:sP format](https://en.wikipedia.org/wiki/ISO_8601)
          schema:
            type: string
            format: ISO_8601
            example: '2021-04-12T16:40:00-04:00'
        - name: endDate
          in: query
          description: Дата и время окончания диапазона для отображения в ответе. Он должен быть в формате [ISO_8601 Ymd\TH:i:sP](https://en.wikipedia.org/wiki/ISO_8601)
          x-description-lang:
            en: Date end of search payouts in [ISO_8601 Y-m-d\TH:i:sP format](https://en.wikipedia.org/wiki/ISO_8601)
          schema:
            type: string
            format: ISO_8601
            example: '2021-04-12T16:40:00-04:00'
        - name: page
          in: query
          description: Номер страницы, указывающий, какой набор элементов будет возвращен в ответе.
          x-description-lang:
            en: The page number indicating which set of items will be returned in the response.
          schema:
            type: number
            format: int
            example: 2
      responses:
        '200':
          description: Сбор выплат прошел успешно
          x-description-lang:
            en: Payout collection successfully fetched
          headers:
            X-Header-Signature:
              $ref: '#/components/headers/X-Header-Signature'
            X-Header-Merchant:
              $ref: '#/components/headers/X-Header-Merchant'
            X-Header-Date:
              $ref: '#/components/headers/X-Header-Date'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayoutHistorySuccessResponse'
        '401':
          description: Несанкционированный запрос
          x-description-lang:
            en: Unauthorized request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayoutUnauthorizedResponse'
        '429':
          description: Слишком много запросов
          x-description-lang:
            en: Too many requests
          headers:
            X-Header-Signature:
              $ref: '#/components/headers/X-Header-Signature'
            X-Header-Merchant:
              $ref: '#/components/headers/X-Header-Merchant'
            X-Header-Date:
              $ref: '#/components/headers/X-Header-Date'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayoutTooManyRequestResponse'
        '502':
          description: Плохой шлюз
          x-description-lang:
            en: Bad gateway
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadGatewayResponse'
        4XX:
          description: Неверный запрос
          x-description-lang:
            en: Invalid request
          headers:
            X-Header-Signature:
              $ref: '#/components/headers/X-Header-Signature'
            X-Header-Merchant:
              $ref: '#/components/headers/X-Header-Merchant'
            X-Header-Date:
              $ref: '#/components/headers/X-Header-Date'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayoutHistoryClientErrorResponse'
        5XX:
          description: Внутренняя ошибка сервера
          x-description-lang:
            en: Internal server error
          headers:
            X-Header-Signature:
              $ref: '#/components/headers/X-Header-Signature'
            X-Header-Merchant:
              $ref: '#/components/headers/X-Header-Merchant'
            X-Header-Date:
              $ref: '#/components/headers/X-Header-Date'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayoutServerErrorsResponse'
  /v4/payout/balance:
    parameters:
      - $ref: '#/components/parameters/X-Header-Signature'
      - $ref: '#/components/parameters/X-Header-Merchant'
      - $ref: '#/components/parameters/X-Header-Date'
    get:
      tags:
        - payouts api
      summary: Баланс для выплат
      x-summary-lang:
        en: Get payout balance
      parameters:
        - name: merchantCodes
          in: query
          description: Массив кодов отправителя (если у Вас их несколько и необходимо получить отчет только по некоторым из них)
          x-description-lang:
            en: Array of merchant codes
          explode: false
          required: false
          schema:
            type: array
            items:
              type: string
              example: MERCH_V1
              minLength: 1
        - name: minValue
          in: query
          description: |
            Минимальная сумма баланса.

            <span class="attention">Указание этого параметра обязательно должно сопровождаться указанием валюты в параметре currency</span>
          x-description-lang:
            en: Minimum balance amount. Need to be provided with `currency`
          schema:
            type: number
            format: double
            example: 5.66
            minimum: 0
            exclusiveMinimum: true
        - name: maxValue
          in: query
          description: |
            Максимальная сумма баланса.

            <span class="attention">Указание этого параметра обязательно должно сопровождаться указанием валюты в параметре currency</span>
          x-description-lang:
            en: Maximum balance amount. Need to be provided with `currency`
          schema:
            type: number
            format: double
            example: 5.66
            minimum: 0
            exclusiveMinimum: true
        - name: currency
          in: query
          description: Код валюты, в которой выражены цены. Согласно [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217)
          x-description-lang:
            en: The currency code in which the prices are expressed. According to [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217)
          schema:
            type: string
            example: EUR
            minLength: 1
      responses:
        '200':
          description: Успешная обработка запроса на отчет
          x-description-lang:
            en: Balance successfully fetched
          headers:
            X-Header-Signature:
              $ref: '#/components/headers/X-Header-Signature'
            X-Header-Merchant:
              $ref: '#/components/headers/X-Header-Merchant'
            X-Header-Date:
              $ref: '#/components/headers/X-Header-Date'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayoutBalanceSuccessResponse'
        '401':
          description: Несанкционированный запрос
          x-description-lang:
            en: Unauthorized request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayoutUnauthorizedResponse'
        '429':
          description: Слишком много запросов
          x-description-lang:
            en: Too many requests
          headers:
            X-Header-Signature:
              $ref: '#/components/headers/X-Header-Signature'
            X-Header-Merchant:
              $ref: '#/components/headers/X-Header-Merchant'
            X-Header-Date:
              $ref: '#/components/headers/X-Header-Date'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayoutTooManyRequestResponse'
        '502':
          description: Плохой шлюз
          x-description-lang:
            en: Bad gateway
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadGatewayResponse'
        4XX:
          description: Неверный запрос
          x-description-lang:
            en: Invalid balance request
          headers:
            X-Header-Signature:
              $ref: '#/components/headers/X-Header-Signature'
            X-Header-Merchant:
              $ref: '#/components/headers/X-Header-Merchant'
            X-Header-Date:
              $ref: '#/components/headers/X-Header-Date'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BalanceClientErrorResponse'
        5XX:
          description: Внутренняя ошибка сервера
          x-description-lang:
            en: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayoutServerErrorsResponse'
      x-codeSamples:
        - lang: PHP
          label: PHP
          source: |
            <?php

            declare(strict_types=1);

            use Ypmn\Merchant;
            use Ypmn\ApiRequest;

            /**
             * Пример с установленным пакетом
             * https://packagist.org/packages/yourpayments/php-api-client
             */
            $merchant = new Merchant('MERCHANT_CODE', 'MERCHANT_SECRET');


            /* Создадим HTTP-запрос к API */
            $apiRequest = new ApiRequest($merchant);

            // Включить режим отладки (закомментируйте или удалите в рабочей программе!) //
            $apiRequest->setDebugMode();
            // Переключиться на тестовый сервер (закомментируйте или удалите в рабочей программе!) //
            $apiRequest->setSandboxMode();

            // Отправим запрос
            $responseData = $apiRequest->sendPayoutGetBalanceRequest([
                'merchantCodes' => 'test1,test2', // Массив кодов отправителя (если у Вас их несколько), необязательный параметр
                'minValue' => 0, // Минимальная сумма баланса в выборке, необязательный параметр
                'maxValue' => 100, // Максимальная сумма баланса в выборке, необязательный параметр
                'currency' => 'RUB', // Код валюты, необязательный параметр
            ]);

            // Этот и другие примеры можно получить в репозитории
            // https://github.com/yourpayments/php-api-client
  /v4/payout/sbpcheckreceiver:
    parameters:
      - $ref: '#/components/parameters/X-Header-Signature'
      - $ref: '#/components/parameters/X-Header-Merchant'
      - $ref: '#/components/parameters/X-Header-Date'
    post:
      tags:
        - payouts api
      summary: Проверка получателя СБП
      x-summary-lang:
        en: Check faster payments receiver
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                phoneNumber:
                  description: Номер телефона получателя
                  x-description-lang:
                    en: Receiver phone number
                  format: string
                  example: 791111111111
                fio:
                  description: ФИО получателя. Не обязательно, можно передать, чтобы проверить на совпадение
                  x-description-lang:
                    en: Receiver name. Optional, if name check required
                  format: string
                  example: Иванов Иван Иванович
                bankId:
                  description: Id банка
                  x-description-lang:
                    en: bankId
                  format: string
                  example: '100000000001'
              required:
                - phoneNumber
                - bankId
            examples:
              with_fio:
                summary: С проверкой ФИО
                value:
                  phoneNumber: 791111111111
                  fio: Иванов Иван Иванович
                  bankId: '100000000001'
              no_fio:
                summary: Без проверки ФИО
                value:
                  phoneNumber: 791111111111
                  bankId: '100000000001'
      responses:
        '200':
          description: Успешная обработка запроса на отчет
          x-description-lang:
            en: Balance successfully fetched
          headers:
            X-Header-Signature:
              $ref: '#/components/headers/X-Header-Signature'
            X-Header-Merchant:
              $ref: '#/components/headers/X-Header-Merchant'
            X-Header-Date:
              $ref: '#/components/headers/X-Header-Date'
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/SBPReciverCheckSuccessResponse'
                  - $ref: '#/components/schemas/SBPReciverCheckAsyncResponse'
                  - $ref: '#/components/schemas/SBPReciverCheckFailResponse'
        '401':
          description: Несанкционированный запрос
          x-description-lang:
            en: Unauthorized request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayoutUnauthorizedResponse'
        '429':
          description: Слишком много запросов
          x-description-lang:
            en: Too many requests
          headers:
            X-Header-Signature:
              $ref: '#/components/headers/X-Header-Signature'
            X-Header-Merchant:
              $ref: '#/components/headers/X-Header-Merchant'
            X-Header-Date:
              $ref: '#/components/headers/X-Header-Date'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayoutTooManyRequestResponse'
        '502':
          description: Плохой шлюз
          x-description-lang:
            en: Bad gateway
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadGatewayResponse'
        4XX:
          description: Неверный запрос
          x-description-lang:
            en: Invalid balance request
          headers:
            X-Header-Signature:
              $ref: '#/components/headers/X-Header-Signature'
            X-Header-Merchant:
              $ref: '#/components/headers/X-Header-Merchant'
            X-Header-Date:
              $ref: '#/components/headers/X-Header-Date'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BalanceClientErrorResponse'
        5XX:
          description: Внутренняя ошибка сервера
          x-description-lang:
            en: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayoutServerErrorsResponse'
  /v4/payout/banks:
    parameters:
      - $ref: '#/components/parameters/X-Header-Signature'
      - $ref: '#/components/parameters/X-Header-Merchant'
      - $ref: '#/components/parameters/X-Header-Date'
    get:
      tags:
        - payouts api
      summary: Список банков для выплат
      x-summary-lang:
        en: Get banks list
      responses:
        '200':
          description: Успешное получение списка банков
          x-description-lang:
            en: Banks list successfully fetched
          headers:
            X-Header-Signature:
              $ref: '#/components/headers/X-Header-Signature'
            X-Header-Merchant:
              $ref: '#/components/headers/X-Header-Merchant'
            X-Header-Date:
              $ref: '#/components/headers/X-Header-Date'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayoutBanksSuccessResponse'
        '401':
          description: Несанкционированный запрос
          x-description-lang:
            en: Unauthorized request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayoutUnauthorizedResponse'
        '429':
          description: Слишком много запросов
          x-description-lang:
            en: Too many requests
          headers:
            X-Header-Signature:
              $ref: '#/components/headers/X-Header-Signature'
            X-Header-Merchant:
              $ref: '#/components/headers/X-Header-Merchant'
            X-Header-Date:
              $ref: '#/components/headers/X-Header-Date'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayoutTooManyRequestResponse'
        '502':
          description: Плохой шлюз
          x-description-lang:
            en: Bad gateway
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadGatewayResponse'
        4XX:
          description: Неверный запрос
          x-description-lang:
            en: Invalid balance request
          headers:
            X-Header-Signature:
              $ref: '#/components/headers/X-Header-Signature'
            X-Header-Merchant:
              $ref: '#/components/headers/X-Header-Merchant'
            X-Header-Date:
              $ref: '#/components/headers/X-Header-Date'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BalanceClientErrorResponse'
        5XX:
          description: Внутренняя ошибка сервера
          x-description-lang:
            en: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayoutServerErrorsResponse'
  /v4/cardinfo/bin/{cardBin}:
    parameters:
      - $ref: '#/components/parameters/X-Header-Signature'
      - $ref: '#/components/parameters/X-Header-Merchant'
      - $ref: '#/components/parameters/X-Header-Date'
    get:
      tags:
        - card info api
      summary: Получить информацию о карте
      x-summary-lang:
        en: Get card information by bin
      parameters:
        - name: cardBin
          description: БИН карты
          x-description-lang:
            en: The card bin
          required: true
          in: path
          schema:
            example: 411111
            type: string
            minLength: 6
            maxLength: 10
      responses:
        '200':
          description: Ответ о успешном получении информации о карте
          x-description-lang:
            en: Card info success response
          headers:
            X-Header-Signature:
              $ref: '#/components/headers/X-Header-Signature'
            X-Header-Merchant:
              $ref: '#/components/headers/X-Header-Merchant'
            X-Header-Date:
              $ref: '#/components/headers/X-Header-Date'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CardInfoSuccessResponse'
        '429':
          $ref: '#/components/responses/TooManyRequestResponse'
        4XX:
          $ref: '#/components/responses/4xxResponse'
        5XX:
          $ref: '#/components/responses/5xxResponse'
  /v4/cardinfo/token/{token}:
    parameters:
      - $ref: '#/components/parameters/X-Header-Signature'
      - $ref: '#/components/parameters/X-Header-Merchant'
      - $ref: '#/components/parameters/X-Header-Date'
    get:
      tags:
        - card info api
      summary: Получить информацию о карте по токену
      x-summary-lang:
        en: Get card information by token
      parameters:
        - name: token
          description: Токен карты
          x-description-lang:
            en: The card token
          required: true
          in: path
          schema:
            example: d41d8cd98f00b204e9800998ecf8427e
            type: string
      responses:
        '200':
          description: Ответ о успешном получении информации о карте
          x-description-lang:
            en: Card info success response
          headers:
            X-Header-Signature:
              $ref: '#/components/headers/X-Header-Signature'
            X-Header-Merchant:
              $ref: '#/components/headers/X-Header-Merchant'
            X-Header-Date:
              $ref: '#/components/headers/X-Header-Date'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CardInfoSuccessResponse'
        '429':
          $ref: '#/components/responses/TooManyRequestResponse'
        4XX:
          $ref: '#/components/responses/4xxResponse'
        5XX:
          $ref: '#/components/responses/5xxResponse'
  /v4/reports/general:
    parameters:
      - $ref: '#/components/parameters/X-Header-Signature'
      - $ref: '#/components/parameters/X-Header-Merchant'
      - $ref: '#/components/parameters/X-Header-Date'
    get:
      tags:
        - reports
      summary: Получить отчет в формате JSON
      description: |
        Предоставление отчета не является синхронным, отчет может формироваться до нескольких минут.
      x-summary-lang:
        en: Get report in JSON format
      x-description-lang:
        en: The report is not provided synchronously, the report may take up to several minutes to generate.
      parameters:
        - name: startDate
          description: Дата начала отчета
          x-description-lang:
            en: Report start date
          in: query
          schema:
            example: '2023-11-01'
            type: string
        - name: endDate
          description: Дата окончания отчета
          x-description-lang:
            en: Report end date
          in: query
          schema:
            example: '2023-11-14'
            type: string
        - name: periodLength
          description: Группировка по часам, дням, неделям, месяцам
          x-description-lang:
            en: Grouping by hours, days, weeks, months
          in: query
          schema:
            enum:
              - hour
              - day
              - week
              - month
            type: string
      responses:
        '200':
          description: Ответ в формате JSON
          x-description-lang:
            en: success response in JSON format
          headers:
            X-Header-Signature:
              $ref: '#/components/headers/X-Header-Signature'
            X-Header-Merchant:
              $ref: '#/components/headers/X-Header-Merchant'
            X-Header-Date:
              $ref: '#/components/headers/X-Header-Date'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GeneralReportSuccessResponse'
        '429':
          $ref: '#/components/responses/TooManyRequestResponse'
        4XX:
          $ref: '#/components/responses/4xxResponse'
        5XX:
          $ref: '#/components/responses/5xxResponse'
  /v4/reports/chart:
    parameters:
      - $ref: '#/components/parameters/X-Header-Signature'
      - $ref: '#/components/parameters/X-Header-Merchant'
      - $ref: '#/components/parameters/X-Header-Date'
    get:
      tags:
        - reports
      summary: Получить отчет в виде графика
      description: |
        Предоставление отчета не является синхронным, отчет может формироваться до нескольких минут.
      x-summary-lang:
        en: Get the report as a chart
      x-description-lang:
        en: The report is not provided synchronously, the report may take up to several minutes to generate.
      parameters:
        - name: startDate
          description: Дата начала отчета
          x-description-lang:
            en: Report start date
          in: query
          schema:
            example: '2023-11-01'
            type: string
        - name: endDate
          description: Дата окончания отчета
          x-description-lang:
            en: Report end date
          in: query
          schema:
            example: '2023-11-14'
            type: string
        - name: periodLength
          description: Группировка по часам, дням, неделям, месяцам
          x-description-lang:
            en: Grouping by hours, days, weeks, months
          in: query
          schema:
            enum:
              - hour
              - day
              - week
              - month
            type: string
        - name: type
          description: тип выводимых данных - сумма, количество
          x-description-lang:
            en: type of output data - amount, count
          in: query
          schema:
            enum:
              - amount
              - count
            type: string
        - name: status
          description: вывод определенных статусов оплаты
          x-description-lang:
            en: output of certain payment statuses
          in: query
          schema:
            type: array
            items:
              type: string
              enum:
                - COMPLETE
                - AUTHRECEIVED
                - PENDING
                - CANCELED
                - REVERSED
                - REFUND
        - name: showTotal
          description: выводить сводную таблицу после графика
          x-description-lang:
            en: display a pivot table after the chart
          in: query
          schema:
            enum:
              - 'true'
              - '1'
            type: string
        - name: showToolbar
          description: выводить тулбар с фильтрами над графиком
          x-description-lang:
            en: display a toolbar with filters above the chart
          in: query
          schema:
            enum:
              - 'true'
              - '1'
            type: string
        - name: jsonUpdateUrl
          description: ссылка на endpoint для обновления графика
          x-description-lang:
            en: link to endpoint for updating chart
          in: query
          schema:
            example: /api/chartUpdate
            type: string
        - name: jsonForUpdate
          description: отдать данные для обновления графика в формате JSON
          x-description-lang:
            en: provide data to update the chart in JSON format
          in: query
          schema:
            enum:
              - 'true'
              - '1'
            type: string
      responses:
        '200':
          description: Ответ в формате html
          x-description-lang:
            en: success response in html
          headers:
            X-Header-Signature:
              $ref: '#/components/headers/X-Header-Signature'
            X-Header-Merchant:
              $ref: '#/components/headers/X-Header-Merchant'
            X-Header-Date:
              $ref: '#/components/headers/X-Header-Date'
          content:
            text/html:
              example: <div class='report-chart'> ... </div>
            application/json:
              schema:
                $ref: '#/components/schemas/ChartUpdateReportSuccessResponse'
        '429':
          $ref: '#/components/responses/TooManyRequestResponse'
        4XX:
          $ref: '#/components/responses/4xxResponse'
        5XX:
          $ref: '#/components/responses/5xxResponse'
  /v4/reports/orders:
    parameters:
      - $ref: '#/components/parameters/X-Header-Signature'
      - $ref: '#/components/parameters/X-Header-Merchant'
      - $ref: '#/components/parameters/X-Header-Date'
    get:
      tags:
        - reports
      summary: Получить потранзакционный отчет в JSON формате
      description: |
        Предоставление отчета не является синхронным, отчет может формироваться до нескольких минут.
      x-summary-lang:
        en: Get a transaction report in JSON format
      x-description-lang:
        en: The report is not provided synchronously, the report may take up to several minutes to generate.
      parameters:
        - $ref: '#/components/parameters/reportsOrdersStartDate'
        - $ref: '#/components/parameters/reportsOrdersEndDate'
        - $ref: '#/components/parameters/reportsOrdersByConfirmation'
        - $ref: '#/components/parameters/reportsOrdersStatuses'
      responses:
        '200':
          description: Ответ в формате JSON
          x-description-lang:
            en: Success response in JSON format
          headers:
            X-Header-Signature:
              $ref: '#/components/headers/X-Header-Signature'
            X-Header-Merchant:
              $ref: '#/components/headers/X-Header-Merchant'
            X-Header-Date:
              $ref: '#/components/headers/X-Header-Date'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrdersReportSuccessResponse'
        '429':
          $ref: '#/components/responses/TooManyRequestResponse'
        4XX:
          $ref: '#/components/responses/4xxResponse'
        5XX:
          $ref: '#/components/responses/5xxResponse'
  /v4/reports/orders/v2:
    parameters:
      - $ref: '#/components/parameters/X-Header-Signature'
      - $ref: '#/components/parameters/X-Header-Merchant'
      - $ref: '#/components/parameters/X-Header-Date'
    get:
      tags:
        - reports
      summary: Получить потранзакционный отчет в JSON формате v2
      description: |
        Предоставление отчета не является синхронным, отчет может формироваться до нескольких минут.
      x-summary-lang:
        en: Get a transaction report in JSON format
      x-description-lang:
        en: The report is not provided synchronously, the report may take up to several minutes to generate.
      parameters:
        - $ref: '#/components/parameters/reportsOrdersStartDate'
        - $ref: '#/components/parameters/reportsOrdersEndDate'
        - $ref: '#/components/parameters/reportsOrdersByConfirmation'
        - $ref: '#/components/parameters/reportsOrdersStatuses'
        - name: merchantCodes
          in: query
          explode: false
          required: false
          description: Массив кодов мерчантов (разделитель - запятая). Если параметр не передан, то будут возвращены данные по мерчанту, указанному в заголовке `X-Header-Merchant`
          x-description-lang:
            en: Array of merchant codes
          schema:
            type: array
            items:
              type: string
              example: MERCH_1,MERCH_2
              minLength: 1
        - name: pageNumber
          in: query
          required: false
          description: Номер страницы отчета. Общее количество страниц указывает в ответе в параметре `totalPages`.
          schema:
            type: integer
            default: 1
            example: 2
      responses:
        '200':
          description: Ответ в формате JSON
          x-description-lang:
            en: Success response in JSON format
          headers:
            X-Header-Signature:
              $ref: '#/components/headers/X-Header-Signature'
            X-Header-Merchant:
              $ref: '#/components/headers/X-Header-Merchant'
            X-Header-Date:
              $ref: '#/components/headers/X-Header-Date'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrdersReportV2SuccessResponse'
        '429':
          $ref: '#/components/responses/TooManyRequestResponse'
        4XX:
          $ref: '#/components/responses/4xxResponse'
        5XX:
          $ref: '#/components/responses/5xxResponse'
  /v4/reports/order-details:
    parameters:
      - $ref: '#/components/parameters/X-Header-Signature'
      - $ref: '#/components/parameters/X-Header-Merchant'
      - $ref: '#/components/parameters/X-Header-Date'
    get:
      tags:
        - reports
      summary: Получить детальный отчет по транзакции
      x-summary-lang:
        en: Get a detailed report on your order
      description: |
        Предоставление отчета не является синхронным, отчет может формироваться до нескольких минут.

        Для получения отчета укажите в запросе номер заказа в системе ТСП merchantPaymentReference
        или номер транзакции payuPaymentReference в системе Your Payments.
      x-description-lang:
        en: |-
          The report is not provided synchronously, the report may take up to several minutes to generate. 
          To receive a report, please specify the merchant order number merchantPaymentReference or the internal order  number payuPaymentReference in your request.
      parameters:
        - name: merchantPaymentReference
          description: Номер заказа в системе ТСП
          x-description-lang:
            en: Merchant order number
          in: query
          schema:
            example: zakaz_123
            type: string
        - name: payuPaymentReference
          description: Номер транзакции в системе Your Payments
          x-description-lang:
            en: Transaction number in Your Payments
          in: query
          schema:
            example: '6742343'
            type: string
      responses:
        '200':
          description: Ответ в формате JSON
          x-description-lang:
            en: Success response in JSON format
          headers:
            X-Header-Signature:
              $ref: '#/components/headers/X-Header-Signature'
            X-Header-Merchant:
              $ref: '#/components/headers/X-Header-Merchant'
            X-Header-Date:
              $ref: '#/components/headers/X-Header-Date'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrderDetailsRequest'
        '429':
          $ref: '#/components/responses/TooManyRequestResponse'
        4XX:
          $ref: '#/components/responses/4xxResponse'
        5XX:
          $ref: '#/components/responses/5xxResponse'
      x-codeSamples:
        - lang: PHP
          label: PHP
          source: |
            <?php

            declare(strict_types=1);

            use Ypmn\Merchant;
            use Ypmn\ApiRequest;

            /**
             * Пример с установленным пакетом
             * https://packagist.org/packages/yourpayments/php-api-client
             */
            $merchant = new Merchant('MERCHANT_CODE', 'MERCHANT_SECRET');

            // Создадим HTTP-запрос к API
            $apiRequest = new ApiRequest($merchant);
            // Включить режим отладки (закомментируйте или удалите в рабочей программе!)
            $apiRequest->setDebugMode();
            // Переключиться на тестовый сервер (закомментируйте или удалите в рабочей программе!)
            $apiRequest->setSandboxMode();

            // В запросе необходимо указать либо номер в системе ТСП (мерчанта), либо номер в системе YPMN
            $data = [
                'merchantPaymentReference' => '123', // Номер в системе ТСП (мерчанта)
            //    'payuPaymentReference' => '2297597', // Номер в системе YPMN
            ];

            // Отправим запрос, ответ в формате JSON
            $responseData = $apiRequest->sendReportOrderDetailsRequest($data);
  /v4/token:
    parameters:
      - $ref: '#/components/parameters/X-Header-Signature'
      - $ref: '#/components/parameters/X-Header-Merchant'
      - $ref: '#/components/parameters/X-Header-Date'
    post:
      tags:
        - token api
      summary: Создать токен
      x-summary-lang:
        en: Create token
      description: Создает токен из исходной операции. Чтобы сохранить карту необходимо сначала [создать оплату с картой](#tag/payment-api)!
      x-description-lang:
        en: Creates a token from an original sale
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                payuPaymentReference:
                  $ref: '#/components/schemas/PayuPaymentReference'
              required:
                - payuPaymentReference
      responses:
        '200':
          description: Успешный ответ-токен создан
          x-description-lang:
            en: Token create success response
          headers:
            X-Header-Signature:
              $ref: '#/components/headers/X-Header-Signature'
            X-Header-Merchant:
              $ref: '#/components/headers/X-Header-Merchant'
            X-Header-Date:
              $ref: '#/components/headers/X-Header-Date'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TokenSuccessResponse'
        '429':
          $ref: '#/components/responses/TooManyRequestResponse'
        4XX:
          $ref: '#/components/responses/4xxResponse'
        5XX:
          $ref: '#/components/responses/5xxResponse'
  /v4/token/{token}:
    parameters:
      - $ref: '#/components/parameters/X-Header-Signature'
      - $ref: '#/components/parameters/X-Header-Merchant'
      - $ref: '#/components/parameters/X-Header-Date'
    get:
      tags:
        - token api
      summary: Получить информацию о токене
      x-summary-lang:
        en: Get token info
      parameters:
        - name: token
          description: Информация о токене карты
          x-description-lang:
            en: The card token info
          required: true
          in: path
          schema:
            example: d41d8cd98f00b204e9800998ecf8427e
            type: string
      responses:
        '200':
          description: Ответ об успешном получении информации о токене
          x-description-lang:
            en: Token info success response
          headers:
            X-Header-Signature:
              $ref: '#/components/headers/X-Header-Signature'
            X-Header-Merchant:
              $ref: '#/components/headers/X-Header-Merchant'
            X-Header-Date:
              $ref: '#/components/headers/X-Header-Date'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetTokenSuccessResponse'
        '429':
          $ref: '#/components/responses/TooManyRequestResponse'
        4XX:
          $ref: '#/components/responses/4xxResponse'
        5XX:
          $ref: '#/components/responses/5xxResponse'
    delete:
      tags:
        - token api
      summary: Отменить токен
      x-summary-lang:
        en: Cancel token
      parameters:
        - name: token
          description: Информация о токене карты
          x-description-lang:
            en: The card token info
          required: true
          in: path
          schema:
            example: d41d8cd98f00b204e9800998ecf8427e
            type: string
      responses:
        '200':
          description: Ответ об успешной отмене токена
          x-description-lang:
            en: Cancel token success response
          headers:
            X-Header-Signature:
              $ref: '#/components/headers/X-Header-Signature'
            X-Header-Merchant:
              $ref: '#/components/headers/X-Header-Merchant'
            X-Header-Date:
              $ref: '#/components/headers/X-Header-Date'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TokenSuccessResponse'
        '429':
          $ref: '#/components/responses/TooManyRequestResponse'
        4XX:
          $ref: '#/components/responses/4xxResponse'
        5XX:
          $ref: '#/components/responses/5xxResponse'
  /merchant-ipn-url:
    servers:
      - url: /
    parameters:
      - $ref: '#/components/parameters/X-Header-Signature'
      - $ref: '#/components/parameters/X-Header-Merchant'
      - $ref: '#/components/parameters/X-Header-Date'
      - $ref: '#/components/parameters/X-Header-Idempotency-Key'
    post:
      summary: Вебхук по оплатам и возвратам
      x-summary-lang:
        en: YPMN IPN Request
      tags:
        - webhooks
      description: |
        Адрес для отправки вебхука (`merchant-ipn-url`) регистрируется в личном
        кабинете (настройка адреса описана [Здесь](#tag/cpanel-ipn-notification))

        Это общая структура запросов, которые Your Payments отправляет продавцу на
        основе нескольких событий платежного потока. Поведение этого можно изменить
        из CPanel.

        Для вебхуков, отправленных в случае заказов на возврат, информация о продуктах
        (таких как `name`, `sku`) может отсутствовать или
        отличаться от тех, которые были отправлены в запросе на авторизацию.


        В случае вебхуков для заказов на возврат информация о продукте будет отправлена
        только в том случае, если это «**Полный возврат**» или «**Частичный возврат
        только для одного продукта**». Из-за этого вы не должны использовать эти
        поля для сопоставления продуктов или выполнения определенной логики на их
        основе.
      x-description-lang:
        en: This is the general structure of requests that YPMN will sent to the merchant based on several payment flow events. The behavior of this can be changed from CPanel. <br/> <br/> For IPNs sent in case of refund orders information about products (like `name`, `sku`) may be missing or different than the ones sent in Authorization request. <br/> In case of IPN for Refund orders, the product information will be sent only if it is a <b>"Full refund"</b> or a <b>"Partial refund that only has one product"</b>. Because of this you should not use these fields to match products or do specific logic based on it.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/IpnRequest'
      responses:
        '200':
          x-summary: Вебхук принят
          description: |
            Тело ответа может быть пустым, содержать произвольный текст или HTML

            <span class="attention">При получении ответа от сайта продавца, содержащего HTTP-код отличный от 200, 
            Your Payments считает отправку вебхука неудачной и инициирует очередь из 50 попыток повторной отправки в 
            течение 7 календарных дней с увеличивающимся интервалом.</span>

            Повторная отправка будет прекращена по истечении 50 попыток, 7 дней, или при получении корректного ответа с HTTP-кодом 200
          x-description-lang:
            en: Merchant should respond with this in order to indicate the IPN was received successfully. If the request fails (server does not respond properly, with the `200` HTTP code), it will be retried for a maximum of 50 attempts in a maximum period of 10 days. The time between each attempt will increase as the number of attempts increases, to avoid unnecessary requests when the IPN URL would be generally unavailable.
  /merchant-payout-url:
    servers:
      - url: /
    parameters:
      - $ref: '#/components/parameters/X-Header-Signature'
      - $ref: '#/components/parameters/X-Header-Merchant'
      - $ref: '#/components/parameters/X-Header-Date'
    post:
      summary: Вебхук по выплатам
      x-summary-lang:
        en: Webhook on payment transactions
      tags:
        - webhooks
      description: |
        Адрес для отправки вебхука (`merchant-payout-url`) регистрируется в личном кабинете (настройка адреса описана [Здесь](#tag/cpanel-ipn-notification))

        Это общая структура запросов, которые Your Payments отправляет продавцу на основе событий выплат. Поведение этого можно изменить из CPanel.
      x-description-lang:
        en: This is the general structure of requests that YPMN will sent to the merchant based on payment events. The behavior of this can be changed from CPanel.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WebhookPayoutRequest'
      responses:
        '200':
          x-summary: Вебхук принят
          description: |
            Тело ответа может быть пустым, содержать произвольный текст или HTML

            <span class="attention">При получении ответа от сайта продавца, содержащего HTTP-код отличный от 200, 
            Your Payments считает отправку вебхука неудачной. Всего будет предпринято 100 попыток повторной отправки с интервалом 2 минуты.</span>

            Повторная отправка будет прекращена по истечении 100 попыток или при получении корректного ответа с HTTP-кодом 200
          x-description-lang:
            en: |
              The response body can be empty, contain arbitrary text or HTML

              <span class="attention">When receiving a response from the merchant's website containing an HTTP code other than 200,
              Your Payments considers the webhook sending unsuccessful. A total of 100 resending attempts will be made with an interval of 2 minutes.</span>

              Resending will be stopped after 100 attempts or upon receiving a correct response with an HTTP code 200
  /v4/payments/sessions:
    parameters:
      - $ref: '#/components/parameters/X-Header-Signature'
      - $ref: '#/components/parameters/X-Header-Merchant'
      - $ref: '#/components/parameters/X-Header-Date'
      - $ref: '#/components/parameters/X-Header-Idempotency-Key'
    post:
      tags:
        - sessions
      summary: Создание сессии
      x-summary-lang:
        en: Create a session
      description: Создает сессию для авторизации с помощью одноразового токена. Новая сессия должна быть сгенерирована для каждой успешной авторизации с помощью одноразового токена.
      x-description-lang:
        en: Creates a session to be used when authorizing with oneTimeUseToken. A new session should be generated for every successful authorization with oneTimeUseToken.
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                lifetimeMinutes:
                  description: Срок жизни сессии в минутах. Если не указан, будет использовано значение по умолчанию
                  x-description-lang:
                    en: The session lifetime in minutes. If it is not present, the default will be the platform value
                  format: number
                  example: 10
                  minimum: 1
                  maximum: 60
                  default: 60
      responses:
        '200':
          description: Ответ об успешном создании сессии
          x-description-lang:
            en: Sessions create success response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SessionsSuccessResponse'
        '400':
          description: Ответ об ошибке со стороны клиента
          x-description-lang:
            en: Sessions client error response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SessionsClientErrorResponse'
        '500':
          description: Ответ об ошибке на стороне сервера
          x-description-lang:
            en: Sessions server error response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SessionsServerErrorResponse'
  /v4/qst/create:
    parameters:
      - $ref: '#/components/parameters/X-Header-Signature'
      - $ref: '#/components/parameters/X-Header-Merchant'
      - $ref: '#/components/parameters/X-Header-Date'
    post:
      security:
        - Signature: []
      tags:
        - qst-api
      summary: Создание и отправка анкеты на проверку
      description: |
        При отправке анкеты по API отправляется полностью заполненная и валидная анкета.
        После отправки анкета получает статус `filled`.
        В случае наличия ошибок, они будут указаны в ответе на запрос.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QstCreateRequest'
            examples:
              org:
                summary: Анкета организации
                value:
                  inn: '1234567890'
                  schema:
                    phones:
                      - phone: +7 495 1234567, доб. 123
                    emails:
                      - email: example1@ypmn.com
                    legalAddress:
                      zip: '123456'
                      region: Москва
                      city: Москва
                      street: ул. Арбат
                      house: '10'
                    actualAddress:
                      isEqualToLegalAddress: true
                    ceo:
                      identityDoc:
                        series: '1234'
                        number: '123456'
                        issueDate: '2000-01-30'
                        issuedBy: МВД
                        issuedByKP: 123-456
                      birthDate: '1990-01-30'
                      birthPlace: Москва
                      registrationAddress: г. Москва, ул. Ленина, д. 1, кв. 1
                    owners:
                      - owner: Иванов Иван Иванович
                        share: '100'
                    bankAccounts:
                      - bankAccount:
                          bankBIK: '044525974'
                          bankCorAccount: '30101810145250000974'
                          bankAccount: '40817810400002911811'
              org-multiple:
                summary: Анкета организации с multiple полями
                description: Анкета организации с несколькими банковскими реквизитами, email, телефонами, собственниками
                value:
                  inn: '1234567890'
                  schema:
                    phones:
                      - phone: +7 495 1234567, доб. 123
                      - phone: +7 495 7654321, доб. 321
                    emails:
                      - email: example1@ypmn.com
                      - email: example2@ypmn.com
                    legalAddress:
                      zip: '123456'
                      region: Москва
                      city: Москва
                      street: ул. Арбат
                      house: '10'
                    actualAddress:
                      isEqualToLegalAddress: true
                    ceo:
                      identityDoc:
                        series: '1234'
                        number: '123456'
                        issueDate: '2000-01-30'
                        issuedBy: МВД
                        issuedByKP: 123-456
                      birthDate: '1990-01-30'
                      birthPlace: Москва
                      registrationAddress: г. Москва, ул. Ленина, д. 1, кв. 1
                    owners:
                      - owner: Иванов Иван Иванович
                        share: '50'
                      - owner: Иванов Василий Иванович
                        share: '50'
                    bankAccounts:
                      - bankAccount:
                          bankBIK: '044525974'
                          bankCorAccount: '30101810145250000974'
                          bankAccount: '40817810400002911811'
                      - bankAccount:
                          bankBIK: '044525974'
                          bankCorAccount: '30101810145250000974'
                          bankAccount: '40817810400002911811'
              ip:
                summary: Анкета ИП
                value:
                  inn: '123456789012'
                  schema:
                    phones:
                      - phone: +7 495 1234567, доб. 123
                    emails:
                      - email: example1@ypmn.ru
                    legalAddress:
                      zip: '123456'
                      region: Москва
                      city: Москва
                      street: ул. Арбат
                      house: '10'
                      flat: кв. 100
                    postAddress:
                      isEqualToLegalAddress: true
                    actualAddress:
                      isEqualToLegalAddress: true
                    birthDate: '1990-01-30'
                    birthPlace: Москва
                    identityDoc:
                      series: '1234'
                      number: '123456'
                      issueDate: '2000-01-30'
                      issuedBy: МВД
                      issuedByKP: 123-456
                    bankAccounts:
                      - bankAccount:
                          bankBIK: '044525974'
                          bankCorAccount: '30101810145250000974'
                          bankAccount: '40817810400002911811'
      responses:
        '200':
          description: Анкета успешно создана и отправлена на проверку
          headers:
            X-Header-Signature:
              $ref: '#/components/headers/X-Header-Signature'
            X-Header-Merchant:
              $ref: '#/components/headers/X-Header-Merchant'
            X-Header-Date:
              $ref: '#/components/headers/X-Header-Date'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/QstCreate200Response'
        '400':
          description: Анкета не создана, неверный запрос
          headers:
            X-Header-Signature:
              $ref: '#/components/headers/X-Header-Signature'
            X-Header-Merchant:
              $ref: '#/components/headers/X-Header-Merchant'
            X-Header-Date:
              $ref: '#/components/headers/X-Header-Date'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/QstCreate400Response'
        '403':
          description: Анкета не создана, доступ запрещен
          headers:
            X-Header-Signature:
              $ref: '#/components/headers/X-Header-Signature'
            X-Header-Merchant:
              $ref: '#/components/headers/X-Header-Merchant'
            X-Header-Date:
              $ref: '#/components/headers/X-Header-Date'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Qst403Response'
        '429':
          $ref: '#/components/responses/TooManyRequestResponse'
        5XX:
          description: Внутренняя ошибка сервера, повторите попытку позже
          x-description-lang:
            en: Payment failed due to some internal errors. Please retry later.
          headers:
            X-Header-Signature:
              $ref: '#/components/headers/X-Header-Signature'
            X-Header-Merchant:
              $ref: '#/components/headers/X-Header-Merchant'
            X-Header-Date:
              $ref: '#/components/headers/X-Header-Date'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServerErrorsResponse'
  /v4/qst/status/{id}:
    parameters:
      - name: id
        in: path
        required: true
        description: Идентификатор анкеты сабмерчанта
        schema:
          type: string
          example: '123456'
      - $ref: '#/components/parameters/X-Header-Signature'
      - $ref: '#/components/parameters/X-Header-Merchant'
      - $ref: '#/components/parameters/X-Header-Date'
    get:
      security:
        - Signature: []
      tags:
        - qst-api
      summary: Статус анкеты
      description: |
        Получение статуса анкета по её ID.

        <span class="info">Статус может быть запрошен как по анкете, созданной через API, так и через интерфейс cPanel.</span>
      responses:
        '200':
          description: Статус анкеты успешно получен
          headers:
            X-Header-Signature:
              $ref: '#/components/headers/X-Header-Signature'
            X-Header-Merchant:
              $ref: '#/components/headers/X-Header-Merchant'
            X-Header-Date:
              $ref: '#/components/headers/X-Header-Date'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/QstStatus200Response'
        '400':
          description: Статус анкеты не получен, неверный запрос
          headers:
            X-Header-Signature:
              $ref: '#/components/headers/X-Header-Signature'
            X-Header-Merchant:
              $ref: '#/components/headers/X-Header-Merchant'
            X-Header-Date:
              $ref: '#/components/headers/X-Header-Date'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/QstStatus400Response'
        '403':
          description: Статус анкеты не получен, доступ запрещен
          headers:
            X-Header-Signature:
              $ref: '#/components/headers/X-Header-Signature'
            X-Header-Merchant:
              $ref: '#/components/headers/X-Header-Merchant'
            X-Header-Date:
              $ref: '#/components/headers/X-Header-Date'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Qst403Response'
        '404':
          description: Статус анкеты не получен, ID не найден
          headers:
            X-Header-Signature:
              $ref: '#/components/headers/X-Header-Signature'
            X-Header-Merchant:
              $ref: '#/components/headers/X-Header-Merchant'
            X-Header-Date:
              $ref: '#/components/headers/X-Header-Date'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/QstStatus404Response'
        '429':
          $ref: '#/components/responses/TooManyRequestResponse'
        5XX:
          description: Внутренняя ошибка сервера, повторите попытку позже
          x-description-lang:
            en: Payment failed due to some internal errors. Please retry later.
          headers:
            X-Header-Signature:
              $ref: '#/components/headers/X-Header-Signature'
            X-Header-Merchant:
              $ref: '#/components/headers/X-Header-Merchant'
            X-Header-Date:
              $ref: '#/components/headers/X-Header-Date'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServerErrorsResponse'
  /v4/qst/print/{id}:
    parameters:
      - name: id
        in: path
        required: true
        description: Идентификатор анкеты сабмерчанта
        schema:
          type: string
          example: '123456'
      - $ref: '#/components/parameters/X-Header-Signature'
      - $ref: '#/components/parameters/X-Header-Merchant'
      - $ref: '#/components/parameters/X-Header-Date'
    get:
      security:
        - Signature: []
      tags:
        - qst-api
      summary: Печать анкеты
      description: |
        Получение заполненной pdf версии анкеты по её ID.

        Анкету необходимо распечатать после получения вебхука об одобрении анкеты.

        <span class="info">Может быть запрошено как по анкете, созданной через API, так и через интерфейс cPanel.</span>
      responses:
        '200':
          description: Анкета успешно распечатана
          headers:
            X-Header-Signature:
              $ref: '#/components/headers/X-Header-Signature'
            X-Header-Merchant:
              $ref: '#/components/headers/X-Header-Merchant'
            X-Header-Date:
              $ref: '#/components/headers/X-Header-Date'
          content:
            application/pdf:
              schema:
                type: string
                format: binary
        '400':
          description: Анкета не распечатана, неверный запрос
          headers:
            X-Header-Signature:
              $ref: '#/components/headers/X-Header-Signature'
            X-Header-Merchant:
              $ref: '#/components/headers/X-Header-Merchant'
            X-Header-Date:
              $ref: '#/components/headers/X-Header-Date'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/QstStatus400Response'
        '403':
          description: Анкета не распечатана, доступ запрещен
          headers:
            X-Header-Signature:
              $ref: '#/components/headers/X-Header-Signature'
            X-Header-Merchant:
              $ref: '#/components/headers/X-Header-Merchant'
            X-Header-Date:
              $ref: '#/components/headers/X-Header-Date'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/QstPrint403Response'
        '404':
          description: Анкета не распечатана, ID не найден
          headers:
            X-Header-Signature:
              $ref: '#/components/headers/X-Header-Signature'
            X-Header-Merchant:
              $ref: '#/components/headers/X-Header-Merchant'
            X-Header-Date:
              $ref: '#/components/headers/X-Header-Date'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/QstStatus404Response'
        '429':
          $ref: '#/components/responses/TooManyRequestResponse'
        5XX:
          description: Внутренняя ошибка сервера, повторите попытку позже
          x-description-lang:
            en: Payment failed due to some internal errors. Please retry later.
          headers:
            X-Header-Signature:
              $ref: '#/components/headers/X-Header-Signature'
            X-Header-Merchant:
              $ref: '#/components/headers/X-Header-Merchant'
            X-Header-Date:
              $ref: '#/components/headers/X-Header-Date'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServerErrorsResponse'
  /v4/qst/list:
    parameters:
      - $ref: '#/components/parameters/X-Header-Signature'
      - $ref: '#/components/parameters/X-Header-Merchant'
      - $ref: '#/components/parameters/X-Header-Date'
    get:
      security:
        - Signature: []
      tags:
        - qst-api
      summary: Список анкет
      description: |
        Получение списка анкет сабмерчантов.
        <span class="info">В ответе будет получен весь список анкет: созданных через API и через интерфейс cPanel.</span>
      responses:
        '200':
          description: Список анкет успешно получен
          headers:
            X-Header-Signature:
              $ref: '#/components/headers/X-Header-Signature'
            X-Header-Merchant:
              $ref: '#/components/headers/X-Header-Merchant'
            X-Header-Date:
              $ref: '#/components/headers/X-Header-Date'
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/QstStatus200Response'
        '403':
          description: Список анкет не получен, доступ запрещен
          headers:
            X-Header-Signature:
              $ref: '#/components/headers/X-Header-Signature'
            X-Header-Merchant:
              $ref: '#/components/headers/X-Header-Merchant'
            X-Header-Date:
              $ref: '#/components/headers/X-Header-Date'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Qst403Response'
        '429':
          $ref: '#/components/responses/TooManyRequestResponse'
        5XX:
          description: Внутренняя ошибка сервера, повторите попытку позже
          x-description-lang:
            en: Payment failed due to some internal errors. Please retry later.
          headers:
            X-Header-Signature:
              $ref: '#/components/headers/X-Header-Signature'
            X-Header-Merchant:
              $ref: '#/components/headers/X-Header-Merchant'
            X-Header-Date:
              $ref: '#/components/headers/X-Header-Date'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServerErrorsResponse'
  /merchant-qst-webhook-url:
    servers:
      - url: /
    parameters:
      - $ref: '#/components/parameters/X-Header-Signature'
      - $ref: '#/components/parameters/X-Header-Merchant'
      - $ref: '#/components/parameters/X-Header-Date'
    post:
      summary: Отправка вебхуков
      tags:
        - qst-api-webhooks
      responses:
        default:
          description: Вебхук получен
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/QstStatus200Response'
  /v4/users/privilege:
    parameters:
      - $ref: '#/components/parameters/X-Header-Signature'
      - in: header
        name: X-Header-Merchant
        description: Идентификатор продавца в системе Your Payments.
        x-description-lang:
          en: Merchant identifier in YPMN system.
        required: true
        example: MERCH_V2
        schema:
          type: string
      - $ref: '#/components/parameters/X-Header-Date'
    get:
      tags:
        - user-api-privileges
      summary: Получение списка привилегий
      security:
        - Signature: []
      description: Получение списка доступных привилегий сгруппированных по наименовнию доступных групп.
      x-description-lang:
        en: Getting a list of available privileges grouped by the name of the available groups.
      responses:
        '200':
          description: Список привилегий успешно получен.
          x-description-lang:
            en: The list of privileges has been successfully received.
          headers:
            X-Header-Signature:
              $ref: '#/components/headers/X-Header-Signature'
            X-Header-Merchant:
              $ref: '#/components/headers/X-Header-Merchant'
            X-Header-Date:
              $ref: '#/components/headers/X-Header-Date'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UsersApiPrivilege200Response'
        '400':
          description: Неверные запрос.
          x-description-lang:
            en: Invalid request.
          headers:
            X-Header-Signature:
              $ref: '#/components/headers/X-Header-Signature'
            X-Header-Merchant:
              $ref: '#/components/headers/X-Header-Merchant'
            X-Header-Date:
              $ref: '#/components/headers/X-Header-Date'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UsersApi400Response'
        '401':
          description: Несанкционированный запрос
          x-description-lang:
            en: Unauthorized request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UsersApi401UnauthorizedResponse'
        5XX:
          description: Внутренняя ошибка сервера, повторите попытку позже.
          x-description-lang:
            en: Internal server errors, please retry later.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServerErrorsResponse'
  /v4/users/role:
    parameters:
      - $ref: '#/components/parameters/X-Header-Signature'
      - in: header
        name: X-Header-Merchant
        description: Идентификатор продавца (ТСП) в системе Your Payments
        x-description-lang:
          en: Merchant identifier in YPMN system
        required: true
        example: MERCH_V2
        schema:
          type: string
      - $ref: '#/components/parameters/X-Header-Date'
    get:
      tags:
        - user-api-roles
      summary: Получение списка ролей
      security:
        - Signature: []
      description: Получение списка ролей.
      x-description-lang:
        en: Getting a list of roles.
      parameters:
        - name: merchants
          description: Коды мерчантов через запятую или all (допускается только один из варинатов).
          x-description-lang:
            en: Merchant codes separated by commas or all (only one of the variations is allowed).
          in: query
          schema:
            enum:
              - PAYU_3,CCITEST,PAYU_2,NONAME,CC1
              - all
            type: string
            example: PAYU_3,CCITEST,PAYU_2,NONAME,CC1
      responses:
        '200':
          description: Список ролей успешно получен.
          x-description-lang:
            en: The list of roles has been successfully received.
          headers:
            X-Header-Signature:
              $ref: '#/components/headers/X-Header-Signature'
            X-Header-Merchant:
              $ref: '#/components/headers/X-Header-Merchant'
            X-Header-Date:
              $ref: '#/components/headers/X-Header-Date'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UsersApiRole200Response'
        '400':
          description: Неверные запрос.
          x-description-lang:
            en: Invalid request.
          headers:
            X-Header-Signature:
              $ref: '#/components/headers/X-Header-Signature'
            X-Header-Merchant:
              $ref: '#/components/headers/X-Header-Merchant'
            X-Header-Date:
              $ref: '#/components/headers/X-Header-Date'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UsersApi400Response'
        '401':
          description: Несанкционированный запрос
          x-description-lang:
            en: Unauthorized request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UsersApi401UnauthorizedResponse'
        5XX:
          description: Внутренняя ошибка сервера, повторите попытку позже.
          x-description-lang:
            en: Internal server errors, please retry later.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServerErrorsResponse'
    post:
      tags:
        - user-api-roles
      summary: Создание роли с привилегиями
      security:
        - Signature: []
      description: Создание роли для мерчанта с назначением привилегий.
      x-description-lang:
        en: Creating a role for a merchant with the assignment of privileges.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UsersApiRoleCreate'
            examples:
              create-header-merchant:
                summary: Создание роли для аутентифицированного мерчанта
                description: Роль с указанными привилегиями будет создана для мерчанта, код которого передан в заголовке.
                x-description-lang:
                  en: A role with the specified privileges will be created for the merchant whose code is passed in the header.
                value:
                  roleName: name1
                  roleDescription: roleDescription1
                  privilege:
                    account:
                      additionalFields: true
                      editAccount: false
                    products:
                      manageProducts: true
                      productDelivery: false
              create-other-merchant:
                summary: Создание роли для мерчанта входящего в одну группу с аутентифицированным
                description: Роль с указанными привилегиями будет создана для мерчанта, код которого указан в атрибуте 'merchant'.
                x-description-lang:
                  en: A role with the specified privileges will be created for the merchant whose code is specified in the 'merchant' attribute.
                value:
                  roleName: name1
                  roleDescription: roleDescription1
                  merchant: merchantCode1
                  privilege:
                    account:
                      additionalFields: true
                      editAccount: false
                    products:
                      manageProducts: true
                      productDelivery: false
      responses:
        '200':
          description: Роль создана успешно.
          x-description-lang:
            en: The role was created successfully.
          headers:
            X-Header-Signature:
              $ref: '#/components/headers/X-Header-Signature'
            X-Header-Merchant:
              $ref: '#/components/headers/X-Header-Merchant'
            X-Header-Date:
              $ref: '#/components/headers/X-Header-Date'
          content:
            application/json:
              schema:
                type: object
                required:
                  - code
                  - status
                  - roles
                properties:
                  code:
                    $ref: '#/components/schemas/200ResponseCode'
                  status:
                    type: string
                    enum:
                      - created
                  roles:
                    type: array
                    items:
                      $ref: '#/components/schemas/UsersApiRole'
        '400':
          description: Неверные запрос.
          x-description-lang:
            en: Invalid request.
          headers:
            X-Header-Signature:
              $ref: '#/components/headers/X-Header-Signature'
            X-Header-Merchant:
              $ref: '#/components/headers/X-Header-Merchant'
            X-Header-Date:
              $ref: '#/components/headers/X-Header-Date'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UsersApi400Response'
        '401':
          description: Несанкционированный запрос
          x-description-lang:
            en: Unauthorized request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UsersApi401UnauthorizedResponse'
        5XX:
          description: Внутренняя ошибка сервера, повторите попытку позже.
          x-description-lang:
            en: Internal server errors, please retry later.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServerErrorsResponse'
    put:
      tags:
        - user-api-roles
      summary: Изменение роли с привилегиями
      security:
        - Signature: []
      description: Изменение роли для мерчанта с назначением привилегий.
      x-description-lang:
        en: Changing the role for the merchant with the assignment of privileges.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UsersApiRoleUpdate'
            examples:
              edit:
                summary: Изменение роли для мерчанта с назначением привилегий
                description: Для мерчанта будут установлены значения основных параметров. Привилегии роли с 'roleID' будут заменена на указанные.
                x-description-lang:
                  en: The values of the main parameters will be set for the merchant. The privileges of the role with the 'RoleId' will be replaced with the specified ones.
                value:
                  roleName: name1
                  roleDescription: roleDescription1
                  merchant: merchantCode1
                  roleID: roleID1
                  privilege:
                    account:
                      additionalFields: true
                      editAccount: false
                    products:
                      manageProducts: true
                      productDelivery: false
      responses:
        '200':
          description: Анкета успешно создана и отправлена на проверку
          headers:
            X-Header-Signature:
              $ref: '#/components/headers/X-Header-Signature'
            X-Header-Merchant:
              $ref: '#/components/headers/X-Header-Merchant'
            X-Header-Date:
              $ref: '#/components/headers/X-Header-Date'
          content:
            application/json:
              schema:
                type: object
                required:
                  - code
                  - status
                  - roleID
                properties:
                  code:
                    $ref: '#/components/schemas/200ResponseCode'
                  status:
                    type: string
                    enum:
                      - update
                  roleID:
                    type: string
                    enum:
                      - roleID1
        '400':
          description: Неверные запрос.
          x-description-lang:
            en: Invalid request.
          headers:
            X-Header-Signature:
              $ref: '#/components/headers/X-Header-Signature'
            X-Header-Merchant:
              $ref: '#/components/headers/X-Header-Merchant'
            X-Header-Date:
              $ref: '#/components/headers/X-Header-Date'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UsersApi400Response'
        '401':
          description: Несанкционированный запрос
          x-description-lang:
            en: Unauthorized request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UsersApi401UnauthorizedResponse'
        5XX:
          description: Внутренняя ошибка сервера, повторите попытку позже.
          x-description-lang:
            en: Internal server errors, please retry later.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServerErrorsResponse'
  /v4/users/user:
    parameters:
      - $ref: '#/components/parameters/X-Header-Signature'
      - in: header
        name: X-Header-Merchant
        description: Идентификатор продавца в системе Your Payments
        x-description-lang:
          en: Merchant identifier in YPMN system
        required: true
        example: MERCH_V2
        schema:
          type: string
      - $ref: '#/components/parameters/X-Header-Date'
    get:
      tags:
        - user-api-users
      summary: Получение списка пользователей
      security:
        - Signature: []
      description: Получение списка пользователей
      parameters:
        - name: merchants
          description: Коды мерчантов через запятую или all (допускается только один из варинатов)
          in: query
          schema:
            enum:
              - PAYU_3,CCITEST,PAYU_2,NONAME,CC1
              - all
            type: string
            example: PAYU_3,CCITEST,PAYU_2,NONAME,CC1
      responses:
        '200':
          description: Список пользователей успешно получен
          headers:
            X-Header-Signature:
              $ref: '#/components/headers/X-Header-Signature'
            X-Header-Merchant:
              $ref: '#/components/headers/X-Header-Merchant'
            X-Header-Date:
              $ref: '#/components/headers/X-Header-Date'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UsersApiUser200Response'
        '400':
          description: Неверные запрос.
          x-description-lang:
            en: Invalid request.
          headers:
            X-Header-Signature:
              $ref: '#/components/headers/X-Header-Signature'
            X-Header-Merchant:
              $ref: '#/components/headers/X-Header-Merchant'
            X-Header-Date:
              $ref: '#/components/headers/X-Header-Date'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UsersApi400Response'
        '401':
          description: Несанкционированный запрос
          x-description-lang:
            en: Unauthorized request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UsersApi401UnauthorizedResponse'
        5XX:
          description: Внутренняя ошибка сервера, повторите попытку позже.
          x-description-lang:
            en: Internal server errors, please retry later.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServerErrorsResponse'
    post:
      tags:
        - user-api-users
      summary: Создание пользователя с назначением ролей мерчантам
      security:
        - Signature: []
      description: Создание пользователя с назначением ролей мерчантам.
      x-description-lang:
        en: Creating a user with assigning roles to merchants.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UsersApiUserCreate'
            examples:
              create-without-roles:
                summary: Создание пользователя без ролей
                description: Будет создан пользователь без назначенных мерчантам ролей.
                x-description-lang:
                  en: A user will be created with the specified details and without roles assigned to merchants.
                value:
                  firstName: firstName1
                  lastName: lastName1
                  emailUser: email1@test.tst
                  status: enable
                  password: $Erty#ghhh678%~4
              create-with-roles:
                summary: Создание пользователя с назначением ролей мерчантам
                description: Будет создан пользователь с указанными реквизитами и ассоциированными с мерчантами ролями.
                x-description-lang:
                  en: A user will be created with the specified details and roles associated with merchants.
                value:
                  firstName: firstName1
                  lastName: lastName1
                  emailUser: email1@test.tst
                  status: enable
                  password: $Erty#ghhh678%~4
                  roles:
                    - merchantCode: PAYU_3
                      roleID: roleID1
                    - merchantCode: PAYU_2
                      roleID: roleID2
                    - merchantCode: PAYU_3
                      roleID: roleID4
      responses:
        '200':
          description: Пользователь создан успешно.
          x-description-lang:
            en: The user was created successfully.
          headers:
            X-Header-Signature:
              $ref: '#/components/headers/X-Header-Signature'
            X-Header-Merchant:
              $ref: '#/components/headers/X-Header-Merchant'
            X-Header-Date:
              $ref: '#/components/headers/X-Header-Date'
          content:
            application/json:
              schema:
                type: object
                required:
                  - code
                  - status
                  - userID
                properties:
                  code:
                    $ref: '#/components/schemas/200ResponseCode'
                  status:
                    type: string
                    enum:
                      - created
                  userID:
                    type: string
                    enum:
                      - userID1
        '400':
          description: Неверные запрос.
          x-description-lang:
            en: Invalid request.
          headers:
            X-Header-Signature:
              $ref: '#/components/headers/X-Header-Signature'
            X-Header-Merchant:
              $ref: '#/components/headers/X-Header-Merchant'
            X-Header-Date:
              $ref: '#/components/headers/X-Header-Date'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UsersApi400Response'
        '401':
          description: Несанкционированный запрос
          x-description-lang:
            en: Unauthorized request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UsersApi401UnauthorizedResponse'
        5XX:
          description: Внутренняя ошибка сервера, повторите попытку позже.
          x-description-lang:
            en: Internal server errors, please retry later.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServerErrorsResponse'
    put:
      tags:
        - user-api-users
      summary: Изменение пользователя с изменением назначенных мерчантам ролей
      security:
        - Signature: []
      description: Изменение пользователя с изменением назначенных мерчантам ролей.
      x-description-lang:
        en: Changing the user with changing the roles assigned to merchants.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UsersApiUserUpdate'
            examples:
              edit-min:
                summary: Изменение пользователя с минимально необходимыми атрибутами
                description: Минимально необходимый набор атрибутов для изменения пользователя 'userID1'.
                x-description-lang:
                  en: The minimum required modifiable user 'userID1' attributes.
                value:
                  userID: userID1
                  status: enable
              edit-without-roles:
                summary: Изменение пользователя без ассоциирования ролей мерчантам
                description: Будут изменены реквизиты пользователь 'userID1' без изменения ассоциированных с мерчантами ролей.
                x-description-lang:
                  en: The user's data will be changed without changing the roles associated with the sellers.
                value:
                  firstName: firstName1
                  lastName: lastName1
                  emailUser: email1@test.tst
                  password: $Erty#ghhh678%~4
                  userID: userID1
                  status: enable
              edit-with-roles:
                summary: Изменение пользователя c установкой ролей мерчантам
                description: Будут изменены реквизиты пользователь 'userID1' и установлены указанные ассоциации мерчантов с ролями.
                x-description-lang:
                  en: The data of the user "user ID 1" will be changed and the specified associations of sellers with roles will be created.
                value:
                  firstName: firstName1
                  lastName: lastName1
                  emailUser: email1@test.tst
                  password: $Erty#ghhh678%~4
                  userID: userID1
                  status: enable
                  roles:
                    - merchantCode: PAYU_3
                      roleID: roleID1
                    - merchantCode: PAYU_2
                      roleID: roleID2
                    - merchantCode: PAYU_3
                      roleID: roleID4
      responses:
        '200':
          description: Анкета успешно создана и отправлена на проверку
          headers:
            X-Header-Signature:
              $ref: '#/components/headers/X-Header-Signature'
            X-Header-Merchant:
              $ref: '#/components/headers/X-Header-Merchant'
            X-Header-Date:
              $ref: '#/components/headers/X-Header-Date'
          content:
            application/json:
              schema:
                type: object
                required:
                  - code
                  - status
                  - userID
                properties:
                  code:
                    $ref: '#/components/schemas/200ResponseCode'
                  status:
                    type: string
                    enum:
                      - updated
                  userID:
                    type: string
                    enum:
                      - userID1
        '400':
          description: Неверные запрос.
          x-description-lang:
            en: Invalid request.
          headers:
            X-Header-Signature:
              $ref: '#/components/headers/X-Header-Signature'
            X-Header-Merchant:
              $ref: '#/components/headers/X-Header-Merchant'
            X-Header-Date:
              $ref: '#/components/headers/X-Header-Date'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UsersApi400Response'
        '401':
          description: Несанкционированный запрос
          x-description-lang:
            en: Unauthorized request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UsersApi401UnauthorizedResponse'
        5XX:
          description: Внутренняя ошибка сервера, повторите попытку позже.
          x-description-lang:
            en: Internal server errors, please retry later.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServerErrorsResponse'
components:
  securitySchemes:
    Signature:
      type: apiKey
      description: |
        Криптографическая подпись нужна для безопасного подтверждения подлинности запросов. Она формируется с помощью алгоритма `HMAC-SHA256`. Ключом шифрования является ваш "секретный ключ" от API.
        Для формирования подписи шифруется строка, собранная из следующих подстрок:
         - Содержимого HTTP-заголовка `X-Header-Merchant`
         - Содержимого HTTP-заголовка `X-Header-Date`
         - Нименование HTTP метода (`POST`, `GET`, `PUT`, `DELETE`)
         - Базовый путь из URL вызываемого API. (например: `/api/v4/payments/authorize`)
         - Строка запроса (query string) из API URL (если есть)
         - MD5 (в нижнем регистре и шеснадцатеричном формате) от тела запроса


        Если ваш запрос не содержит тела, то последним элементом из приведенного выше списка будет вычисленный MD5 пустой строки «». Примером здесь может служить любой запрос `GET`.

        Все символы итоговой подписи должны быть строчными шестнадцатеричными символами (например: `da0b9f5e7e12cd02f02ed1591802d3739762a69c0ea31e8a3b28e6eb817b73ec`).

        Ваш секретный ключ можно найти в Личном Кабинете, в разделе Настройки учетной записи / Редактирование настроек.

        Базовый путь и строка запроса вычисляются в соответствии с разделом [RFC3986](https://www.ietf.org/rfc/rfc3986.txt)'s "Syntax Components".

        Примеры реализации подписи на разных языках программирования:
         - [Go](https://github.com/yourpayments/go-api-client/blob/master/api_requst.go)
         - [PHP](https://github.com/yourpayments/php-api-client/blob/main/src/ApiRequest.php)
         - [TypeScript](https://github.com/yourpayments/ts-ypmn-client/blob/main/lib/api/ApiRequest.ts)
         - [Python](https://github.com/yourpayments/python-api-client/blob/main/ypmn_classes_general_function.py)


        Рекомендуем использовать готовые [SDK](#tag/sdks), в них входят готовые и проверенные функции подписи запросов.  Если Вашего языка программирования ещё нет в списке, напишите нам.
      x-description-lang:
        en: |-
          Signature is obtained by applying the `HMAC-SHA256` algorithm (your secret key is the encryption key) to the following concatenated string - `X-Header-Merchant` header value - `X-Header-Date` header value - HTTP method (`POST`, `GET`, `PUT`, `DELETE`) - base path from API call URL. (eg `/api/v4/payments/authorize`) - query string from API call URL (if there is any) - computed MD5 (lowercase hexadecimal) of the request payload body
          All signature characters should be lowercase hexadecimal characters (i.e. `da0b9f5e7e12cd02f02ed1591802d3739762a69c0ea31e8a3b28e6eb817b73ec`).

          Your secret key can be found in the CPanel, under Account Management / Account Settings section. If you require additional assistance for this step, please contact us.

          The base path and query string is computed as specified by [RFC3986](https://www.ietf.org/rfc/rfc3986.txt)'s "Syntax Components" section.

          If your request has no payload body, then the last item from the above list will be the computed MD5 of the empty string "". An example here would be any `GET` request.
      in: header
      name: X-Header-Signature
  headers:
    X-Header-Date:
      description: Дата запроса в формате [ISO_8601, "Y-m-d\TH:i:sP"](https://en.wikipedia.org/wiki/ISO_8601)
      example: '2032-01-01T11:22:33+03:00'
      x-description-lang:
        en: Date of the request in ISO_8601 [Y-m-d\TH:i:sP format](https://en.wikipedia.org/wiki/ISO_8601)
      required: true
      schema:
        format: ISO_8601
    X-Header-Signature:
      description: Подпись сообщения
      x-description-lang:
        en: Signature of the message
      required: true
      example: 0b9b07bd4b81375d189bbe0fe23a7c4b939b112715c2ac090829ed2182752c1c
      schema:
        type: string
    X-Header-Merchant:
      description: Идентификатор продавца в системе Your Payments
      x-description-lang:
        en: Merchant identifier in YPMN system
      required: true
      example: MERCHANT_CODE
      schema:
        type: string
    X-Rate-Limit-Limit:
      description: Количество разрешенных запросов за период 60 секунд.
      x-description-lang:
        en: Number of allowed requests for a period of 60 seconds.
      schema:
        type: number
        format: int32
      example: 122
    X-Rate-Limit-Reset:
      description: Сколько времени осталось в секундах до конца текущего периода в 60 секунд.
      x-description-lang:
        en: How much time remains, in seconds, until the end of the current period of 60 seconds.
      schema:
        type: number
        format: int32
      example: 122
    X-Rate-Limit-Remaining:
      description: Запросы доступны до конца текущего периода 60 секунд.
      x-description-lang:
        en: Requests available until the end of current period of 60 seconds.
      schema:
        type: number
        format: int32
      example: 0
  schemas:
    TestSuccessResponse:
      type: object
      properties:
        time:
          type: number
          example: 1766114550
    MerchantPaymentReference:
      description: Номер заказа в системе ТСП
      x-description-lang:
        en: Payment reference in Merchant's system.
      anyOf:
        - type: string
        - type: number
      example: zakaz_123
      maxLength: 100
    Currency:
      description: Код валюты, в которой выражены цены. Согласно [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217)
      x-description-lang:
        en: The currency code in which the prices are expressed. According to [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217)
      type: string
      example: RUB
      minLength: 1
    ReturnUrl:
      description: Если указано, после оплаты Плательщик будет направлен на указанный URL-адрес POST или GET запросом
      x-description-lang:
        en: 'Return URL on the Merchant webshop side that will be used in case of 3DS enrolled cards authorizations or for Pay By Link (PBL) payment methods after the payment attempt. If missing the merchant url setup on his YPMN account will be used. The YPMN will submit to this endpoint a form with four inputs: body, merchant, date and signature. For signature the same algorithm as for inline request will be used, but use data from form inputs '
      type: string
      nullable: true
      example: https://www.example.com/confirm
    SuccessUrl:
      description: Если указано, после успешной оплаты Плательщик будет направлен на указанный URL-адрес GET запросом, имеет больший приоритет, чем returnUrl.
      x-description-lang:
        en: If specified, after successful payment, the Payer will be redirected to the specified URL via a GET request.
      type: string
      nullable: true
      example: https://www.example.com/success
    FailUrl:
      description: Если указано, после неуспешной оплаты Плательщик будет направлен на указанный URL-адрес GET запросом, имеет больший приоритет, чем returnUrl.
      x-description-lang:
        en: If specified, after failed payment, the Payer will be redirected to the specified URL via a GET request.
      type: string
      nullable: true
      example: https://www.example.com/fail
    CardCvv:
      description: |
        [CVV-код](https://en.wikipedia.org/wiki/Card_security_code)
      x-description-lang:
        en: The [CCV/CVV2](https://en.wikipedia.org/wiki/Card_security_code) code for the card. For some card types or based on merchant settings this can be empty, otherwise it should have a numerical value.
      type: integer
      example: 475
    CardOwner:
      description: Имя владельца карты
      x-description-lang:
        en: The card owner name, as it appears on the card. If missing the firstName and lastName from billing will be consider
      type: string
      example: John Doe
    CardDetails:
      description: |
        Необходим в случае метода оплаты картой ("CCVISAMC") если не передан токен карты (merchantToken)

        <span class="attention">Внимание, хранение, передача и обработка данных карты требует сертификации согласно правилам PCI DSS</span>
      x-description-lang:
        en: Required if the payment method is an online one and no applePayToken or merchantToken are sent
      type: object
      nullable: true
      properties:
        number:
          description: Номер карты
          x-description-lang:
            en: The card number on which the payment authorization will be made.
          type: string
          minLength: 8
          maxLength: 19
          example: 5181510361644410
        expiryMonth:
          description: Срок действия. Месяц
          x-description-lang:
            en: The month in which the card used expires
          type: integer
          minimum: 1
          maximum: 12
          example: 12
        expiryYear:
          description: Срок действия. Год
          x-description-lang:
            en: The year in which the card used expires
          type: integer
          minimum: 2022
          maximum: 9999
          example: 2024
        cvv:
          $ref: '#/components/schemas/CardCvv'
        owner:
          $ref: '#/components/schemas/CardOwner'
        timeSpentTypingNumber:
          type: integer
          example: 30
          description: Время затраченное на ввод номера карты (в секундах)
          x-description-lang:
            en: Time in seconds spent by user to insert card number
        timeSpentTypingOwner:
          type: integer
          example: 12
          description: Время затраченное на ввод имени владельца (в секундах)
          x-description-lang:
            en: Time in seconds spent by user to insert card owner
      required:
        - number
        - expiryMonth
        - expiryYear
    CardCvvMerchantToken:
      description: |
        [CVV-код](https://en.wikipedia.org/wiki/Card_security_code)

        Передается только в случае оплаты сохраненной картой и вводом данного параметра покупателем.

        <span class="attention">Сохранять CVV при сохранении карты категорически запрещено!</span>
      x-description-lang:
        en: The [CCV/CVV2](https://en.wikipedia.org/wiki/Card_security_code) code for the card. For some card types or based on merchant settings this can be empty, otherwise it should have a numerical value.
      type: integer
      example: 475
    MerchantToken:
      description: Необходим в случае метода оплаты картой ("CCVISAMC") и если у вас есть токен сохраненной ранее карты или токен привязки СБП, SberPay, T-Pay, картой не РФ
      x-description-lang:
        en: Required if the payment method is an online one and no cardDetails are sent
      nullable: true
      type: object
      properties:
        ypmnBindingId:
          description: Токен привязки SberPay, T-Pay, СБП, карты не РФ
          type: string
          example: ab2bb91a-0012-4129-a2bf-cd18418bc726
        tokenHash:
          description: |
            Токен

            <span class="info">[Как сохранить карту и получить токен](#tag/token-api/paths/~1v4~1token/post)</span>
          type: string
          example: d41d8cd98f00b204e9800998ecf8427e
        cvv:
          $ref: '#/components/schemas/CardCvvMerchantToken'
        owner:
          $ref: '#/components/schemas/CardOwner'
    OneTimeUseToken:
      description: |
        Необходим в случае метода оплаты картой ("CCVISAMC") с использованием одноразового токена.

        См. документацию [Безопасные поля](#tag/secure-fields).
      x-description-lang:
        en: Required if the payment method is an online one and want to use one time use token (see `Secure Fields` documentation).
      nullable: true
      type: object
      properties:
        token:
          description: |
            Полученный одноразовый токен

            См. документацию [Безопасные поля](#tag/secure-fields).
          type: string
          example: QyMdbnU0iStRpE0ZG5islpPPnUN7NpWTUOqvFzpWydlnWYZp62b+yJmoxxZOSnZ0lOf0ajj7c6tHi8bLRaLk/Q==
        sessionId:
          description: |
            Уникальный идентификатор сессии. Должен использоваться тот же sessionId, что и при создании токена. Для одной успешной транзакции используется один уникальный sessionId.

            См. документацию [Сессии](#tag/sessions).
          x-description-lang:
            en: This is an unique identifier for the session. This must be the same sessionId used when the token was created. This must be unique per successful authorization.
          type: string
          example: 692da2c6-8c18-4ca0-a515-8c293c7c8305
      required:
        - token
        - sessionId
    PaymentPageOptions:
      description: Эти параметры используются только в том случае, если используется платежная страница
      x-description-lang:
        en: These options are used only if payment page is used
      type: object
      properties:
        orderTimeout:
          description: Срок жизни платежной страницы в секундах
          x-description-lang:
            en: The time in seconds after which the order will expire
          type: number
          format: integer
          example: 3600
    AuthorizeDetailsRequest:
      description: |
        Этот объект содержит информацию о том, как авторизовать платеж.

        <span class="info">В зависимости от необходимого процесса авторизации с методом "**CCVISAMC**" (оплата картой) в составе узла может присутствовать только один подобъект описывающий метод ввода карточных данных:</span>

        * **merchantToken {}** - если у вас есть токен сохраненной ранее карты или токен привязки СБП
        * **cardDetails {}** - если у вас есть право (вы сертифицированы по PCI DSS) и возможность получить данные карты самостоятельно
      x-description-lang:
        en: This node contains information about how to authorize the payment.
      type: object
      required:
        - paymentMethod
      properties:
        paymentMethod:
          description: Способ оплаты
          x-description-lang:
            en: Payment method for the payment. If you don't specify payment details needed for it, some error may occurred, or a redirect to continue the payment can be send in response
          type: string
          enum:
            - CCVISAMC
            - FASTER_PAYMENTS
            - SBERPAY
            - TPAY
            - ALFAPAY
            - BNPL
            - INTCARD
            - ''
        cardDetails:
          $ref: '#/components/schemas/CardDetails'
        merchantToken:
          $ref: '#/components/schemas/MerchantToken'
        oneTimeUseToken:
          $ref: '#/components/schemas/OneTimeUseToken'
        paymentPageOptions:
          $ref: '#/components/schemas/PaymentPageOptions'
    IdentityDocument:
      description: Документы подтверждающие личность
      x-description-lang:
        en: Identity document of the client.
      type: object
      properties:
        number:
          type: string
          example: 123445
          description: Идентификационный номер покупателя (для указанного типа идентификатора)
          x-description-lang:
            en: Shopper's ID number (for the specified ID type)
        type:
          description: Тип идентификатора покупателя — обязательный для UPT
          x-description-lang:
            en: Shopper's ID type - mandatory for UPT
          type: string
          example: PERSONALID
          enum:
            - PERSONALID
            - PASSPOR
            - DRVLICENSE
    Billing:
      description: Платежная информация клиента (Плательщика)
      x-description-lang:
        en: Billing information of the client (shopper)
      type: object
      properties:
        firstName:
          description: Имя Плательщика
          x-description-lang:
            en: Shopper's first name
          type: string
          example: John
          nullable: true
        lastName:
          description: Фамилия Плательщика
          x-description-lang:
            en: Shopper's first name
          type: string
          example: Doe
          nullable: true
        email:
          description: Почта Плательщика
          x-description-lang:
            en: Shopper's email
          type: string
          example: test@ypmn.ru
          nullable: true
        countryCode:
          type: string
          example: RU
        phone:
          description: Телефонный номер Плательщика
          x-description-lang:
            en: Shopper's phone number
          type: string
          example: 771346934
          nullable: true
        city:
          description: Город Плательщика
          x-description-lang:
            en: Shopper's phone city
          type: string
          example: Москва
          nullable: true
        state:
          description: Область или регион
          type: string
          example: Moscow
          nullable: true
        companyName:
          description: Название компании Плательщика
          type: string
          example: YPMN
          nullable: true
        taxId:
          description: ИНН компании Плательщика
          x-description-lang:
            en: Tax id of the company (or fiscalCode)
          type: string
          example: example
          nullable: true
        addressLine1:
          description: Адрес (первая строка)
          type: string
          example: Улица Арбат
          nullable: true
        addressLine2:
          description: Адрес (вторая строка)
          type: string
          example: Дом 10
          nullable: true
        zipCode:
          description: Почтовый индекс
          type: string
          example: '101000'
          nullable: true
        identityDocument:
          $ref: '#/components/schemas/IdentityDocument'
    Delivery:
      type: object
      properties:
        firstName:
          type: string
          example: John
        lastName:
          type: string
          example: Doe
        phone:
          type: string
          example: 40898625
        addressLine1:
          type: string
          example: example
        addressLine2:
          type: string
          example: example
        zipCode:
          type: string
          example: example
        city:
          type: string
          example: Moscow
        state:
          type: string
          example: Moscow
        countryCode:
          type: string
          example: RU
        email:
          type: string
          example: name@example.com
    Client:
      description: Информация о плательщике. Если информация о доставке отсутствует, то же самое, что и выставление счетов, будет рассматриваться
      x-description-lang:
        en: Information about payer. If delivery information is missing, same as billing will be consider
      type: object
      properties:
        billing:
          $ref: '#/components/schemas/Billing'
        delivery:
          $ref: '#/components/schemas/Delivery'
        ip:
          description: IP браузера клиента. Должен быть действительный IP, иначе запрос не будет выполнен.
          x-description-lang:
            en: 'Client browser IP. Must be a valid IP, otherwise request will fail '
          type: string
          format: ip
          example: 127.0.0.1
        time:
          description: 'Время клиента из его браузера. Формат: YMD h:i:s'
          x-description-lang:
            en: 'Client time from his browser. Format is: Y-M-D h:i:s'
          type: string
          example: '2018-07-15 13:01:23'
        communicationLanguage:
          type: string
          description: Будет использоваться для уведомлений по электронной почте, которые отправляются клиенту. Если не указан или язык недоступен в системе Your Payments, будет использоваться язык по умолчанию
          x-description-lang:
            en: Will be used for notification email that are sent to the client. If is not specified or language is unavailable in YPMN system, the default language will be used
          example: RU
    MarketplaceVersion:
      type: number
      example: 1
      description: 'Обязательное значение: 1'
    MerchantCode:
      type: string
      description: Идентификатор продавца в системе Your Payments
      x-description-lang:
        en: Merchant identifier in YPMN system
      example: MERCH_V1
      minLength: 1
    MarketplaceV1Object:
      properties:
        version:
          $ref: '#/components/schemas/MarketplaceVersion'
        merchantCode:
          $ref: '#/components/schemas/MerchantCode'
      required:
        - version
        - merchantCode
    Marketplace:
      description: Обязательно для [оплаты с разделением платежа](#tag/payment-split-api)
      type: object
      discriminator:
        propertyName: version
        mapping:
          '1.0': '#/components/schemas/MarketplaceV1Object'
      anyOf:
        - $ref: '#/components/schemas/MarketplaceV1Object'
    Products:
      type: array
      items:
        type: object
        properties:
          name:
            type: string
            example: Product name
          sku:
            description: Артикул товара. Если Your Payments получит один и тот же артикул для разных продуктов одного и того же продавца, последний полученный вариант продукта с таким артикулом будет считаться верным и будет использоваться в дальнейшем
            x-description-lang:
              en: Sku of the product [see wiki](https://en.wikipedia.org/wiki/Stock_keeping_unit). Be aware that if YPMN will receive same sku for different producuts of the same merchant last one will be consider in different area of the platform (including authorization)
            type: string
            maxLength: 400
            example: Code_XYZ
          additionalDetails:
            description: Дополнительная информация о товаре
            x-description-lang:
              en: Additional information about product.
            type: string
            example: Product additional information
            nullable: true
          unitPrice:
            description: Цена за единицу продукта (float, два знака после разделителя)
            x-description-lang:
              en: Unit price of the product
            anyOf:
              - type: number
              - type: string
            format: double
            example: 21
          quantity:
            type: integer
            minimum: 1
            maximum: 99999
            example: 2
          vat:
            description: |
              **Ставка НДС для продукта.**
              **ВАЖНО**: если поле отсутствует или его значение не из списка допустимых - автоматически подставляется значение 20
            x-description-lang:
              en: Vat of the product. Must exist on YPMN platform, otherwise will be ignored.
            type: integer
            enum:
              - 0
              - 5
              - 7
              - 10
              - 20
            default: 0
            example: 10
          marketplace:
            $ref: '#/components/schemas/Marketplace'
        required:
          - name
          - sku
          - unitPrice
          - quantity
    AirlineInfo:
      description: Информация об авиабилете
      type: object
      properties:
        passengerName:
          maxLength: 20
          description: First name and last name of the passenger
          type: string
          example: John Doe
        ticketNumber:
          description: Ticket number
          maxLength: 14
          type: string
          example: 348943
        refundPolicy:
          description: Possibility of refund (0 - no restrictions, 1 - non refundable)
          maxLength: 1
          type: number
          example: 1
        reservationSystem:
          description: Name of reservation system (e.g. ATS = Delta, SABR = Sabre)
          maxLength: 4
          type: string
          example: ATS
        travelAgency:
          type: object
          properties:
            code:
              description: The code of travel agency
              maxLength: 8
              type: string
              example: TRVSMT
            name:
              description: The name of travel agency
              maxLength: 25
              type: string
              example: Travel Smart
        flightSegments:
          type: array
          items:
            type: object
            properties:
              departureDate:
                description: Departure date in the format YYYY-MM-DD
                type: string
                example: '2020-02-12'
              departureAirport:
                description: Departure airport code
                maxLength: 3
                type: string
                example: CRA
              destinationAirport:
                description: Destination airport code
                maxLength: 3
                type: string
                example: OTP
              airlineCode:
                description: Airline  code
                maxLength: 2
                minLength: 2
                type: string
                example: TA
              airlineName:
                description: Airline  name
                maxLength: 20
                type: string
                example: Tarom
              serviceClass:
                description: Ticket type (class) (economy, business class, etc.)
                maxLength: 1
                type: string
                example: K
              stopover:
                description: Displays the possibility of stop-over for the given ticket; 1 = Stop-over is allowed, 0 - not allowed
                maxLength: 1
                type: string
                example: 1
              fareCode:
                description: Tariff code
                maxLength: 6
                type: string
                example: 456fgh
              flightNumber:
                description: Flight number
                maxLength: 5
                type: string
                example: 46fgh
            required:
              - departureDate
              - departureAirport
              - destinationAirport
      required:
        - passengerName
        - flightSegments
    Contact:
      type: object
      properties:
        phone:
          type: object
          properties:
            home:
              type: object
              properties:
                countryPrefix:
                  type: string
                  description: Код страны домашнего телефона. Обратитесь к [ITU-E.164](https://en.wikipedia.org/wiki/E.164) для получения дополнительной информации о формате.
                  x-description-lang:
                    en: The country code of the home phone number. Refer to [ITU-E.164](https://en.wikipedia.org/wiki/E.164) for additional information on format.
                  maxLength: 3
                  example: '40'
                subscriber:
                  type: string
                  description: Номер домашнего телефона держателя карты (без кода страны). Обратитесь к [ITU-E.164](https://en.wikipedia.org/wiki/E.164) для получения дополнительной информации о формате.
                  x-description-lang:
                    en: The cardholder's home phone number (without the country code). Refer to [ITU-E.164](https://en.wikipedia.org/wiki/E.164) for additional information on format.
                  maxLength: 15
                  example: '5417543010'
            mobile:
              type: object
              properties:
                countryPrefix:
                  type: string
                  description: Код страны мобильного телефона. Обратитесь к [ITU-E.164](https://en.wikipedia.org/wiki/E.164) для получения дополнительной информации о формате.
                  x-description-lang:
                    en: The country code of the mobile phone number. Refer to [ITU-E.164](https://en.wikipedia.org/wiki/E.164) for additional information on format.
                  maxLength: 3
                  example: '40'
                subscriber:
                  type: string
                  description: Номер мобильного телефона держателя карты (без кода страны). Обратитесь к [ITU-E.164](https://en.wikipedia.org/wiki/E.164) для получения дополнительной информации о формате.
                  x-description-lang:
                    en: The cardholder's mobile phone number (without the country code). Refer to [ITU-E.164](https://en.wikipedia.org/wiki/E.164) for additional information on format.
                  maxLength: 15
                  example: '5231543010'
            work:
              type: object
              properties:
                countryPrefix:
                  type: string
                  description: Код страны рабочего телефона. Обратитесь к [ITU-E.164](https://en.wikipedia.org/wiki/E.164) для получения дополнительной информации о формате.
                  x-description-lang:
                    en: The country code of the work phone number. Refer to [ITU-E.164](https://en.wikipedia.org/wiki/E.164) for additional information on format.
                  maxLength: 3
                  example: '40'
                subscriber:
                  type: string
                  description: Номер рабочего телефона держателя карты (без кода страны). Обратитесь к [ITU-E.164](https://en.wikipedia.org/wiki/E.164) для получения дополнительной информации о формате.
                  x-description-lang:
                    en: The cardholder's work phone number (without the country code). Refer to [ITU-E.164](https://en.wikipedia.org/wiki/E.164) for additional information on format.
                  maxLength: 15
                  example: '0031543010'
    Cardholder:
      description: Описывает данные учетной записи держателя карты, которыми владеет продавец, включая сведения об управлении счетом держателя карты в системе продавца.
      x-description-lang:
        en: Describes cardholder's account data in merchant's possession, including details of account run for the cardholder in merchant's system.
      type: object
      properties:
        contact:
          $ref: '#/components/schemas/Contact'
        accountInformation:
          type: object
          properties:
            address:
              type: object
              properties:
                match:
                  type: string
                  enum:
                    - 'YES'
                    - 'NO'
                  description: |
                    Indicates whether the cardholder's shipping address and billing address are the same:
                     * `YES` - Shipping address matches billing address
                     * `NO` - Shipping address does not match billing address
                billing:
                  type: object
                  properties:
                    address3:
                      type: string
                      description: Третья строка почтового адреса или эквивалентная местная часть платежного адреса владельца карты, связанного с картой, использованной для этой покупки.
                      x-description-lang:
                        en: Third line of the street address or equivalent local portion of the cardholder's billing address associated with the card used for this purchase.
                      maxLength: 50
                      example: 445 Mount Eden Road, Mount Eden, Auckland
                    stateCode:
                      type: string
                      description: Штат или провинция платежного адреса владельца карты, связанного с картой, использованной для этой покупки. Должен быть в формате [ISO 3166-2](https://en.wikipedia.org/wiki/ISO_3166-2).
                      x-description-lang:
                        en: The state or province of the cardholder's billing address associated with the card used for this purchase. Should be in [ISO 3166-2 format](https://en.wikipedia.org/wiki/ISO_3166-2).
                      maxLength: 3
                      example: RU
                delivery:
                  type: object
                  properties:
                    address3:
                      type: string
                      description: Третья строка почтового адреса или эквивалентная местная часть адреса доставки, запрошенная держателем карты.
                      x-description-lang:
                        en: Third line of the street address or equivalent local portion of the shipping address requested by the cardholder.
                      maxLength: 50
                      example: 445 Mount Eden Road, Mount Eden, Auckland
                    stateCode:
                      type: string
                      description: Штат или провинция адреса доставки. Должен быть в формате [ISO 3166-2](https://en.wikipedia.org/wiki/ISO_3166-2).
                      x-description-lang:
                        en: The state or province of the shipping address. Should be in [ISO 3166-2 format](https://en.wikipedia.org/wiki/ISO_3166-2).
                      maxLength: 3
                      example: RU
                    addressFirstUsedDate:
                      type: string
                      description: Это дата, когда адрес доставки, использованный для этой транзакции, был впервые использован запрашивающей стороной 3DS. Должен быть в формате [ISO_8601 Ymd\TH:i:sP](https://en.wikipedia.org/wiki/ISO_8601).
                      x-description-lang:
                        en: It is the date when the shipping address used for this transaction was first used with the 3DS Requestor. Should be in [ISO_8601 Y-m-d\TH:i:sP format](https://en.wikipedia.org/wiki/ISO_8601).
                      example: '2019-10-02T12:00:14+00:00'
                    addressUsageIndicator:
                      type: string
                      minLength: 2
                      maxLength: 2
                      enum:
                        - '01'
                        - '02'
                        - '03'
                        - '04'
                      description: |
                        Указывает, когда адрес доставки, использованный для этой транзакции, впервые был использован в 3DS.
                          * `01` - Эта транзакция
                          * `02` - Менее 30 дней
                          * `03` - 30-60 дней
                          * `04` - Более 60 дней
                      x-description-lang:
                        en: |
                          Indicates when the shipping address used for this transaction was first used with the 3DS Requestor.
                            * `01` - This transaction
                            * `02` - Less than 30 days
                            * `03` - 30-60 days
                            * `04` - More than 60 days
            fraudActivity:
              type: string
              enum:
                - 'YES'
                - 'NO'
              description: |
                Указывает, наблюдал ли продавец подозрительную активность на счете:
                  * `YES` - Наблюдается подозрительная активность
                  * `NO` - Нет подозрительной активности
              x-description-lang:
                en: |
                  Indicates whether the merchant experienced suspicious activity on the account:
                    * `YES` - Suspicious activity observed
                    * `NO` - No suspicious activity
            createDate:
              type: string
              description: Это дата, когда владелец карты открыл счет в 3DS Requester. Должен быть в формате [ISO_8601 Ymd\TH:i:sP](https://en.wikipedia.org/wiki/ISO_8601)
              x-description-lang:
                en: It is the date when the cardholder opened the account with the 3DS Requestor. Should be in [ISO_8601 Y-m-d\TH:i:sP format](https://en.wikipedia.org/wiki/ISO_8601).
              example: '2019-10-02T12:00:14+00:00'
            pastOrdersYear:
              anyOf:
                - type: number
                - type: string
                  minLength: 1
                  maxLength: 3
              description: Количество транзакций (успешных и аннулированных) для этой учетной записи держателя карты с помощью 3DS Requestor по всем платежным учетным записям в предыдущем году.
              x-description-lang:
                en: Number of transactions (successful and abandoned) for this cardholder account with the 3DS Requestor across all payment accounts in the previous year.
              example: 324
            pastOrdersDay:
              anyOf:
                - type: number
                - type: string
                  minLength: 1
                  maxLength: 3
              description: Количество транзакций (успешных и аннулированных) для этой учетной записи держателя карты с помощью 3DS Requestor по всем платежным учетным записям за предыдущие 24 часа.
              x-description-lang:
                en: Number of transactions (successful and abandoned) for this cardholder account with the 3DS Requestor across all payment accounts in the previous 24hours.
              example: 27
            purchasesLastSixMonths:
              anyOf:
                - type: number
                - type: string
                  minLength: 1
                  maxLength: 4
              description: Количество покупок с использованием этого счета держателя карты за последние шесть месяцев.
              x-description-lang:
                en: Number of purchases with this cardholder account during the previous six months.
              example: 12
            changeDate:
              type: string
              description: Это дата последнего изменения учетной записи держателя карты в 3DS Requestor, включая платежный адрес или адрес доставки, новую платежную учетную запись или добавление новых пользователей. Должен быть в формате [ISO_8601 Ymd\TH:i:sP](https://en.wikipedia.org/wiki/ISO_8601).
              x-description-lang:
                en: It is the date when the cardholder’s account with the 3DS Requestor was last changed, including billing or shipping address, new payment account, or new user(s) added. Should be in [ISO_8601 Y-m-d\TH:i:sP format](https://en.wikipedia.org/wiki/ISO_8601).
              example: '2019-10-02T12:00:14+00:00'
            changeIndicator:
              type: string
              minLength: 2
              maxLength: 2
              enum:
                - '01'
                - '02'
                - '03'
                - '04'
              description: |
                Время, прошедшее с момента последнего изменения информации об учетной записи владельца карты в 3DS Requestor, включая платежный адрес или адрес доставки, новую платежную учетную запись или добавление новых пользователей.
                  * `01` - Во время этой сделки
                  * `02` - Менее 30 дней
                  * `03` - 30-60 дней
                  * `04` - Более 60 дней
              x-description-lang:
                en: |
                  Length of time since the cardholder’s account information with the 3DS Requestor was last changed, including billing or shipping address, new payment account, or new user(s) added.
                    * `01` - During this transaction
                    * `02` - Less than 30 days
                    * `03` - 30-60 days
                    * `04` - More than 60 days
            ageIndicator:
              type: string
              minLength: 2
              maxLength: 2
              enum:
                - '01'
                - '02'
                - '03'
                - '04'
                - '05'
              description: |
                Продолжительность времени, в течение которого у держателя карты была учетная запись у запрашивающей стороны 3DS.
                  * `01` - Нет аккаунта
                  * `02` - Создал эту транзакцию
                  * `03` - Менее 30 дней
                  * `04` - 30-60 дней
                  * `05` - Более 60 дней
              x-description-lang:
                en: |
                  Length of time that the cardholder has had the account with the 3DS Requestor.
                    * `01` - No account
                    * `02` - Created this transaction
                    * `03` - Less than 30 days
                    * `04` - 30-60 days
                    * `05` - More than 60 days
            passwordChangedDate:
              type: string
              description: Это дата, когда в учетной записи держателя карты в 3DS Requestor была изменена пароль или сброшена учетная запись. Должен быть в формате [ISO_8601 Ymd\TH:i:sP](https://en.wikipedia.org/wiki/ISO_8601).
              x-description-lang:
                en: It is the date when cardholder’s account with the 3DS Requestor had a password change or account reset. Should be in [ISO_8601 Y-m-d\TH:i:sP format](https://en.wikipedia.org/wiki/ISO_8601).
              example: '2019-10-02T12:00:14+00:00'
            passwordChangeIndicator:
              type: string
              minLength: 2
              maxLength: 2
              enum:
                - '01'
                - '02'
                - '03'
                - '04'
                - '05'
              description: |
                Указывает время, прошедшее с момента изменения пароля или сброса учетной записи владельца карты в 3DS Requestor.
                  * `01` - Без изменений
                  * `02` - Изменена эта транзакция
                  * `03` - Менее 30 дней
                  * `04` - 30-60 дней
                  * `05` - Более 60 дней
              x-description-lang:
                en: |
                  Indicates the length of time since the cardholder’s account with the 3DS Requestor had a password change or account reset.
                    * `01` - No change
                    * `02` - Changed this transaction
                    * `03` - Less than 30 days
                    * `04` - 30-60 days
                    * `05` - More than 60 days
            nameToRecipientMatch:
              type: string
              enum:
                - 'YES'
                - 'NO'
              description: |
                Указывает, совпадает ли имя держателя карты в учетной записи с именем доставки, используемым для этой транзакции.
                  * `YES` - Имя учетной записи идентично имени доставки
                  * `NO` - Имя учетной записи отличается от имени доставки
              x-description-lang:
                en: |
                  Indicates if the cardholder name on the account is identical to the shipping name used for this transaction.
                    * `YES` - Account name identical to shipping name
                    * `NO` - Account name different from shipping name
            addCardAttemptsDay:
              type: number
              description: Указывает количество попыток добавления карты к счету держателя карты в системе мерчанта за последние 24 часа.
              x-description-lang:
                en: Indicates the number of attempts to add a card to cardholder's account in merchant's system within last 24 hours.
              maxLength: 3
              example: 12
            authMethod:
              type: string
              maxLength: 2
              minLength: 2
              enum:
                - '01'
                - '02'
                - '03'
                - '04'
                - '05'
                - '06'
              description: |
                Механизм, используемый держателем карты для аутентификации в запросчике 3DS.
                  * `01` - Аутентификация не произошла (например, гостевая проверка)
                  * `02` - Войдите в учетную запись держателя карты в торговой системе, используя учетные данные торговой системы.
                  * `03` - Войдите в учетную запись держателя карты в торговой системе, используя Federated ID.
                  * `04` - Войдите в учетную запись держателя карты в торговой системе, используя учетные данные эмитента.
                  * `05` - Войти в учетную запись держателя карты в торговой системе, используя стороннюю аутентификацию.
                  * `06` - Войдите в учетную запись держателя карты в торговой системе, используя FIDO Authenticator.
              x-description-lang:
                en: |
                  The mechanism used by the cardholder to authenticate to the 3DS Requestor.
                    * `01` - No authentication occurred (e.g. Guest Checkout)
                    * `02` - Login to the cardholder account at the merchant system using merchant system credentials
                    * `03` - Login to the cardholder account at the merchant system using a Federated ID
                    * `04` - Login to the cardholder account at the merchant system using Issuer credentials
                    * `05` - Login to the cardholder account at the merchant system using third-party authentication
                    * `06` - Login to the cardholder account at the merchant system using FIDO Authenticator
            authDateTime:
              type: string
              description: Дата и время аутентификации держателя карты (в формате UTC). Должен быть в формате [ISO_8601 Ymd\TH:i:sP](https://en.wikipedia.org/wiki/ISO_8601).
              x-description-lang:
                en: Date and time of the cardholder authentication (in UTC). Should be in [ISO_8601 Y-m-d\TH:i:sP format](https://en.wikipedia.org/wiki/ISO_8601).
              example: '2019-10-02T12:00:14+00:00'
            requestorAuthenticationData:
              type: string
              description: Информация о том, как запрашивающая сторона 3DS аутентифицировала владельца карты до или во время транзакции.
              x-description-lang:
                en: Information about how the 3DS Requestor authenticated the cardholder before or during the transaction.
            additionalDetails:
              type: string
              description: Дополнительная информация об учетной записи держателя карты, предоставленная Заявителем 3DS.
              x-description-lang:
                en: Additional information about the cardholder’s account provided by the 3DS Requestor.
              example: Additional details here
            cardAddedIndicator:
              type: string
              maxLength: 2
              minLength: 2
              enum:
                - '01'
                - '02'
                - '03'
                - '04'
                - '05'
              description: |
                Указывает, хранилась ли карта в учетной записи продавца и когда.
                  * `01` - Нет учетной записи (гостевая оплата)
                  * `02` - Во время этой сделки
                  * `03` - Менее 30 дней
                  * `04` - 30-60 дней
                  * `05` - Более 60 дней
              x-description-lang:
                en: |
                  Indicates if and when the card was stored in the merchant account.
                    * `01` - No account (guest checkout)
                    * `02` - During this transaction
                    * `03` - Less than 30 days
                    * `04` - 30-60 days
                    * `05` - More than 60 days
            cardAddedDate:
              type: string
              description: Дата, когда карта была сохранена в торговом аккаунте. Должен быть в формате [ISO_8601 Ymd\TH:i:sP](https://en.wikipedia.org/wiki/ISO_8601).
              x-description-lang:
                en: Date when card has been stored in the merchant account. Should be in [ISO_8601 Y-m-d\TH:i:sP format](https://en.wikipedia.org/wiki/ISO_8601).
              example: '2019-10-02T12:00:14+00:00'
    ClientEnvironment:
      type: object
      required:
        - browser
      properties:
        deviceChannel:
          type: string
          enum:
            - '01'
            - '02'
            - '03'
          description: |
            Указывает тип интерфейса канала, используемого для инициирования транзакции.
              * `01` - Транзакция инициирована через мобильный SDK.
              * `02` - Транзакция была инициирована через веб-браузер.
              * `03` - Инициирован запросчик 3DS. Канал устройства, инициированного запросчиком 3DS, обеспечивает аутентификацию 3-D Secure без присутствия держателя карты.
          x-description-lang:
            en: |
              Indicates the type of channel interface being used to initiate the transaction.
                * `01` - The transaction was initiated through the mobile SDK.
                * `02` - The transaction was initiated through a web browser.
                * `03` - 3DS Requestor Initiated. The 3DS Requestor Initiated device channel allows 3-D Secure authentication without the presence of the cardholder.
        browser:
          type: object
          description: Если некоторые свойства отсутствуют, мы заменим их нашими значениями по умолчанию.
          x-description-lang:
            en: If some properties are not present, we will replace them with our default values
          properties:
            acceptHeader:
              type: string
              description: Точное содержимое заголовков принятия HTTP, отправленное запрашивающей стороне 3DS из браузера держателя карты.
              x-description-lang:
                en: Exact content of the HTTP accept headers as sent to the 3DS Requestor from the cardholder’s browser.
              maxLength: 2048
              example: text/html
              default: '*/*'
            requestIp:
              type: string
              description: IP-адрес браузера, возвращаемый HTTP-заголовками запрашивающей стороне 3DS.
              x-description-lang:
                en: IP address of the browser as returned by the HTTP headers to the 3DS Requestor.
              maxLength: 45
              example: 127.0.0.1
            javaEnabled:
              type: string
              enum:
                - 'YES'
                - 'NO'
              description: |
                Он представляет собой способность браузера держателя карты выполнять Java.
                  * `YES` - Браузер держателя карты может выполнять Java
                  * `NO` - Браузер держателя карты не может выполнить Java
              x-description-lang:
                en: |
                  It represents the ability of the cardholder's browser to execute Java.
                    * `YES` - Cardholder's browser can execute Java
                    * `NO` - Cardholder's browser can't execute Java
            language:
              type: string
              description: Он представляет язык браузера, определенный в [IETF BCP47](https://en.wikipedia.org/wiki/IETF_language_tag).
              x-description-lang:
                en: It represents the browser language as defined in [IETF BCP47](https://en.wikipedia.org/wiki/IETF_language_tag).
              minLength: 1
              maxLength: 8
              example: en-US
            colorDepth:
              anyOf:
                - type: number
                  enum:
                    - 1
                    - 4
                    - 8
                    - 15
                    - 16
                    - 24
                    - 32
                    - 48
                - type: string
                  enum:
                    - '1'
                    - '4'
                    - '8'
                    - '15'
                    - '16'
                    - '24'
                    - '32'
                    - '48'
              description: Разрядность цветовой палитры для отображения изображений в битах на пиксель.
              x-description-lang:
                en: The bit depth of the color palette for displaying images, in bits per pixel.
              example: 24
              default: 24
            screenHeight:
              anyOf:
                - type: number
                - type: string
                  maxLength: 6
                  minLength: 1
              description: Общая высота экрана держателя карты в пикселях.
              x-description-lang:
                en: The total height of the cardholder's screen, in pixels.
              example: 864
              default: 1080
            screenWidth:
              anyOf:
                - type: number
                - type: string
                  maxLength: 6
                  minLength: 1
              description: Общая ширина экрана держателя карты в пикселях.
              x-description-lang:
                en: The total width of the cardholder's screen, in pixels.
              example: 1536
              default: 1920
            timezone:
              anyOf:
                - type: number
                - type: string
                  maxLength: 5
                  minLength: 1
              description: Разница во времени между временем UTC и местным временем в браузере держателя карты в минутах.
              x-description-lang:
                en: The time difference between UTC time and the cardholder's browser local time, in minutes.
              example: 300
              default: -180
            userAgent:
              type: string
              description: Точное содержимое заголовка пользовательского агента HTTP.
              x-description-lang:
                en: Exact content of the HTTP user-agent header.
              maxLength: 2048
              example: Mozilla/5.0
              default: Mozilla/5.0
    Recurring:
      type: object
      properties:
        frequencyDays:
          type: number
          description: Указывает минимальное количество дней между авторизациями.
          x-description-lang:
            en: Indicates the minimum number of days between authorizations.
          maxLength: 4
          example: 10
        expiryDate:
          type: number
          description: Это дата, после которой никакие дальнейшие авторизации не должны выполняться. Должен быть в формате [ISO_8601 Ymd\TH:i:sP](https://en.wikipedia.org/wiki/ISO_8601).
          x-description-lang:
            en: It is the date after which no further authorizations shall be performed. Should be in [ISO_8601 Y-m-d\TH:i:sP format](https://en.wikipedia.org/wiki/ISO_8601).
          example: '2019-10-02T12:00:14+00:00'
    Purchase:
      type: object
      properties:
        recurring:
          $ref: '#/components/schemas/Recurring'
        transactionType:
          type: string
          minLength: 2
          maxLength: 2
          enum:
            - '01'
            - '10'
            - '11'
            - '28'
          description: |
            Определяет тип аутентифицируемой транзакции.
              * `01` - Покупка товаров/услуг
              * `10` - Пополнение счета
              * `11` - Квази-наличные транзакции
              * `28` - Предоплаченная активация и загрузка
          x-description-lang:
            en: |
              Identifies the type of transaction being authenticated.
                * `01` - Goods/ Service Purchase
                * `10` - Account Funding
                * `11` - Quasi-Cash Transaction
                * `28` - Prepaid Activation and Load
        shipIndicator:
          type: string
          minLength: 2
          maxLength: 2
          enum:
            - '01'
            - '02'
            - '03'
            - '04'
            - '05'
            - '06'
            - '07'
          description: |
            Способ доставки, выбранный покупателем.
              * `01` - Доставка на платежный адрес держателя карты
              * `02` - Отправка на другой проверенный адрес, указанный в файле с продавцом
              * `03` - Доставка по адресу, отличному от платежного адреса
              * `04` - Доставка в магазин (адрес магазина должен быть заполнен по запросу)
              * `05` - Цифровые товары
              * `06` - Путешествия и билеты на мероприятия, не отправленные
              * `07` - Другой
          x-description-lang:
            en: |
              The shipping method selected by the customer.
                * `01` - Ship to cardholder billing address
                * `02` - Ship to another verified address on file with merchant
                * `03` - Ship to address that is different than billing address
                * `04` - Ship to store (store address should be populated on request)
                * `05` - Digital goods
                * `06` - Travel and event tickets, not shipped
                * `07` - Other
        preOrderIndicator:
          type: string
          minLength: 2
          maxLength: 2
          enum:
            - '01'
            - '02'
          description: |
            Указывает, размещает ли владелец карты заказ на товары с будущей доступностью или датой выпуска.
              * `01` - Товар в наличии
              * `02` - Доступность в будущем
          x-description-lang:
            en: |
              Indicates whether cardholder is placing an order for merchandise with a future availability or release date.
                * `01` - Merchandise available
                * `02` - Future availability
        preOrderDate:
          type: string
          description: Ожидаемая дата, когда предзаказ будет доступен. Должен быть в формате [ISO_8601 Ymd\TH:i:sP](https://en.wikipedia.org/wiki/ISO_8601).
          x-description-lang:
            en: Expected date that a pre-ordered purchase will be available. Should be in [ISO_8601 Y-m-d\TH:i:sP format](https://en.wikipedia.org/wiki/ISO_8601).
          example: '2019-10-02T12:00:14+00:00'
        deliveryTimeFrame:
          type: string
          minLength: 2
          maxLength: 2
          enum:
            - '01'
            - '02'
            - '03'
            - '04'
          description: |
            Указывает сроки доставки товара.
              * `01` - Электронная доставка
              * `02` - Доставка в тот же день
              * `03` - Ночная доставка
              * `04` - Доставка два и более дней
          x-description-lang:
            en: |
              Indicates the merchandise delivery time frame.
                * `01` - Electronic delivery
                * `02` - Same day shipping
                * `03` - Overnight shipping
                * `04` - Two or more days shipping
        reorderedIndicator:
          type: string
          minLength: 2
          maxLength: 2
          enum:
            - '01'
            - '02'
          description: |
            Заказывает ли владелец карты ранее приобретенный товар.
              * `01` - Первый раз заказал
              * `02` - Переупорядочено
          x-description-lang:
            en: |
              Indicates whether the cardholder is reordering previously purchased merchandise.
                * `01` - First time ordered
                * `02` - Reordered
        merchantFunds:
          type: object
          properties:
            amount:
              type: number
              maxLength: 15
              description: For prepaid or gift card purchase, the purchase amount total of prepaid or gift card(s) in major units.
              example: 1293
            currency:
              minLength: 3
              maxLength: 3
              type: string
              description: For prepaid or gift card purchase, ISO 4217 three-digit currency code of the gift card.
              example: RON
    ThreeDSRequestorPreferences:
      type: object
      properties:
        challenge:
          type: object
          properties:
            indicator:
              type: string
              enum:
                - '01'
                - '02'
                - '03'
              description: |
                Указывает, запрашивается ли вызов для этой транзакции. Например, для проверки подлинности платежа запрашивающая сторона 3DS может иметь опасения по поводу транзакции и запросить вызов.
                  * `01` - вызов не запрошен
                  * `02` - Запрошен вызов (предпочтение отправителя запроса 3DS)
                  * `03` - Запрошен вызов (мандат)
              x-description-lang:
                en: |
                  Indicates whether a challenge is requested for this transaction. For example, for Payment Authentication, a 3DS Requestor may have concerns about the transaction, and request a challenge.
                    * `01` - No challenge requested
                    * `02` - Challenge requested (3DS Requestor Preference)
                    * `03` - Challenge requested (Mandate)
              maxLength: 2
              minLength: 2
            ui:
              type: object
              properties:
                windowSize:
                  type: string
                  enum:
                    - '01'
                    - '02'
                    - '03'
                    - '04'
                    - '05'
                  description: |
                    Поле переопределения, которое вы можете передать, чтобы установить размер окна вызова, который будет отображаться для конечного держателя карты. Сервер управления доступом (ACS) ответит содержимым, отформатированным соответственно этому размеру окна, чтобы обеспечить наилучшее взаимодействие с пользователем. Размеры представляют собой ширину x высоту в пикселях окна, отображаемого в окне браузера держателя карты.
                      * `01` - 250x400
                      * `02` - 390x400
                      * `03` - 500x600
                      * `04` - 600x400
                      * `05` - Полная страница
                  x-description-lang:
                    en: |
                      An override field that you can pass in to set the challenge window size to display to the end cardholder. The Access Control Server (ACS) will reply with content that is formatted appropriately to this window size to allow for the best user experience. The sizes are width x height in pixels of the window displayed in the cardholder browser window.
                        * `01` - 250x400
                        * `02` - 390x400
                        * `03` - 500x600
                        * `04` - 600x400
                        * `05` - Full page
                  minLength: 2
                  maxLength: 2
    strongCustomerAuthentication:
      type: object
      description: |
        Содержит данные для передачи в потоке перенаправления 3D Secure 2.0.

        **Исключения:** повторяющиеся транзакции и инициированные продавцом (MIT).

        Только первоначальная транзакция, запуск подписки или повторяющийся цикл потребует SCA (аутентификация 3DS 2.0). 
        Последующие транзакции будут освобождены.

        Если транзакция имеет переменную сумму и дату (например, в случае некоторых счетов за коммунальные услуги, 
        основанных на использовании, таких как электричество, телекоммуникационные услуги и т. д.), такая транзакция 
        будет называться MIT (инициированная продавцом) и также будет освобождена.

        Чтобы пометить транзакцию как:

        * Транзакция, инициированная продавцом (MIT)
        * Повторяющийся
        * Транзакция, инициированная держателем карты (CIT)

        См. специальный раздел ниже в документации по сохраненным учетным данным.

        Разумеется, в вышеуказанных случаях продавец должен получить согласие держателя карты на снятие средств.
      x-description-lang:
        en: Holds data to be passed in a 3D Secure 2.0 redirection flow. <br/><b>Exemptions:</b><br/>Recurring and Merchant Initiated Transactions (MIT).<br/>Only the initial transaction, starting the subscription or recurring cycle will require SCA (3DS 2.0 Authentification). Subsequent transactions will be exempt.<br/><br/>If the transaction is with variable amount and date (such as in case of some utility bills based on usage, like electricity, telecom services etc.), such transaction will be called MIT (Merchant Initiated Transaction) and will be also exempt.<br/><br/>For marking a transaction as a:<br/><ul><li>Merchant initiated transaction (MIT)</li><li>Recurring</li><li>Cardholder initiated transaction (CIT)</li></ul>Please see the dedicated section below of the Stored Credentials documentation. <br/>Of course in the above cases, the merchant must obtain cardholder's consent for charging the card.
      properties:
        cardholder:
          $ref: '#/components/schemas/Cardholder'
        clientEnvironment:
          $ref: '#/components/schemas/ClientEnvironment'
        purchase:
          $ref: '#/components/schemas/Purchase'
        threeDSRequestorPreferences:
          $ref: '#/components/schemas/ThreeDSRequestorPreferences'
      required:
        - clientEnvironment
    ThreeDSecure:
      description: Контейнер для различных параметров 3DS.
      x-description-lang:
        en: Container for various 3DS parameters.
      type: object
      properties:
        strongCustomerAuthentication:
          $ref: '#/components/schemas/strongCustomerAuthentication'
    StoredCredentials:
      description: |
        Идентификатор операции с сохраненной картой

        **ВАЖНО**: В запросе может присутствовать только один из нижеперечисленных параметров
          * consentType - при создании операции, по которой сохраняется карта,
          * useType - при создании операции по ранее сохраненной карте
      properties:
        consentType:
          description: |
            Тип согласия на сохранение карты
              * "recurring" - согласие покупателя на последующие рекуррентные платежи с использованием сохраненной карты
              * "onDemand" - согласие покупателя на сохранение карты для последующих оплат "в один клик"
          x-description-lang:
            en: |
              Used for the initial transaction in which the customer agrees to using stored card information for subsequent transactions. If consentType is used, useType shouldn't be present. It should have "recurring" value for subsequent scheduled transactions and "onDemand" value for subsequent customer-initiated transactions, or subsequent unscheduled transactions initiated by the merchant.
          enum:
            - recurring
            - onDemand
          type: string
        useType:
          description: |
            * "cardholder" - оплата в один клик
            * "merchant" - непериодическая операция инициированная продавцом в отсутствии покупателя
            * "recurring" - рекуррентная (периодическая) операция инициированная продавцом

            <span class="attention"> Данный параметр допустимо использовать только совместно с токеном карты.
            Также при отсутствии указанного параметра операция признается инициированной покупателем "cardholder", что влечет за собой предложение редиректа браузера покупателя на 3DS аутентификацию. Операции с признаком "merchant" или "recurring" - из алгоритма аутентификации по 3DS исключаются.</span>
          x-description-lang:
            en: |
              Used after consent authorization. It should have "cardholder" value for stored card transactions, initiated by the cardholder, "merchant" value for unscheduled stored card transactions initiated by the merchant and "recurring" for transaction that is part of a series of transactions that use stored card information and that are processed at fixed, regular intervals.
          type: string
          enum:
            - cardholder
            - merchant
            - recurring
        useId:
          description: |
            Номер операции, использованной для сохранения карты. Сообщается в блоке authorization -> storedCredentials ответа на запрос статуса или асинхронного статуса

            <span class="attention">При отсутствии указанного параметра операция может быть признана банком-эмитентом как небезопасная, в следствие чего последует отказ в ее проведении</span>
          x-description-lang:
            en: |
              The card schema's ID identifying the initial request in which the customer consented to using stored payment credentials for processing future payments. It should be sent only together with useType.
          type: string
          example: '123456'
    Receipts:
      description: |
        Строка данных для регистрации чека в виде закодированной json-строки.

        <span class="info">Используется, если транзакция не относится к маркетплейсу.</span>
      type: string
    ReceiptsMarketplace:
      type: array
      items:
        properties:
          merchantCode:
            type: string
            description: Код мерчанта, для которого будет зарегистрирован чек
          receipt:
            type: string
            description: Строка данных для регистрации чека в виде закодированной json-строки.
    Details:
      type: object
      description: |
        Объект для передачи мета-информации, в формате ключ-значение.
        ТСП может добавлять свои параметры, они будут прикреплены к платежу.
        Можно передавать файлы в бинарном виде (уточните нужные вам лимиты с менеджером).
      x-description-lang:
        en: |
          Holds data with detailed information in key/value pairs.
      properties:
        receipts:
          description: |
            Данные для регистрации чеков.

            Формат данных:
             - в виде массива объектов для маркетплейса,
             - в виде строки для остальных мерчантов.
          anyOf:
            - $ref: '#/components/schemas/Receipts'
            - $ref: '#/components/schemas/ReceiptsMarketplace'
    AuthorizeRequest:
      type: object
      properties:
        merchantPaymentReference:
          $ref: '#/components/schemas/MerchantPaymentReference'
        currency:
          $ref: '#/components/schemas/Currency'
        returnUrl:
          $ref: '#/components/schemas/ReturnUrl'
        SuccessUrl:
          $ref: '#/components/schemas/SuccessUrl'
        FailUrl:
          $ref: '#/components/schemas/FailUrl'
        authorization:
          $ref: '#/components/schemas/AuthorizeDetailsRequest'
        client:
          $ref: '#/components/schemas/Client'
        products:
          $ref: '#/components/schemas/Products'
        airlineInfo:
          $ref: '#/components/schemas/AirlineInfo'
        threeDSecure:
          $ref: '#/components/schemas/ThreeDSecure'
        storedCredentials:
          $ref: '#/components/schemas/StoredCredentials'
        details:
          allOf:
            - $ref: '#/components/schemas/Details'
            - type: object
              properties:
                paymentPurpose:
                  description: Назначение платежа
                  type: string
      required:
        - merchantPaymentReference
        - currency
        - authorization
        - products
    2xxResponseCode:
      type: number
      enum:
        - 200
        - 202
      description: Код успеха (http-код, который также возвращается в заголовках)
      x-description-lang:
        en: A Success code (http code that is also returned in headers)
    ResponseStatus:
      type: string
      example: SUCCESS
      description: ''
    ResponseMessage:
      type: string
      example: Order saved and pending authorization.
      description: Текстовое сообщение с подробностями о результате обработки или сообщением об ошибке
      x-description-lang:
        en: A text message with details about processing result or with some message error
    PayuPaymentReference:
      description: Номер транзакции в системе Your Payments
      anyOf:
        - type: number
        - type: string
      format: integer
      example: 896782
      minimum: 0
      exclusiveMinimum: true
    PriceAmount:
      description: Сумма авторизации
      type: string
      format: double
      example: 10.5
    CardResponseDetails:
      type: object
      properties:
        pan:
          type: string
          example: 411111******1111
        expiryYear:
          type: string
          example: 2026
        expiryMonth:
          type: string
          example: 7
    3dsResponseDetails:
      type: object
      properties:
        mdStatus:
          type: string
          example: 'Y'
        errorMessage:
          type: string
          example: Some error message
        txStatus:
          type: string
          example: Authorized
        xid:
          type: string
          example: 78199a88871e0f00
        eci:
          type: number
          format: integer
          enum:
            - 0
            - 1
            - 2
            - 3
            - 4
            - 5
            - 6
            - 7
        cavv:
          type: number
          format: integer
          example: 123
    PaymentResult:
      type: object
      properties:
        payuResponseCode:
          type: string
          example: AUTHORIZED
          description: Код сообщения Your Payments (RETURN_CODE)
          x-description-lang:
            en: YPMN message code (RETURN_CODE) from current ALU. It is sent only for orders that could not been authorized for various reasons
        authCode:
          type: string
          example: 324534
        rrn:
          type: string
          example: 43534654
        installmentsNumber:
          type: string
          example: 2
        cardProgramName:
          type: string
          enum:
            - AXESS
            - BONUS
            - MAXIMUM
            - ADVANTAGE
            - CARDFINANS
            - WORLD
            - ASYACARD
            - PARAF
            - BANKKART
        cardDetails:
          $ref: '#/components/schemas/CardResponseDetails'
        3dsDetails:
          $ref: '#/components/schemas/3dsResponseDetails'
        type:
          type: string
          enum:
            - redirect
            - wire
            - offline
        url:
          description: |
            URL адрес для редиректа плательщика на страницу Your Payments
          x-description-lang:
            en: 'Merchant should redirect user to this url, so he can finish payment. Can be the url for beginning of 3dsecure process, for redirecting to the client bank or to a third-party wallet (e.g: BKM)'
          type: string
          example: https://secure.ypmn.ru/pay/v2/?action=continue-payment-with-hosted-page&id=2Xrl83Gas-uNsn_tfbLcZXGR3aSvlMFt
    StoredCredentialsResponse:
      type: object
      properties:
        useId:
          description: Идентификатор первоначальной операции, в которой клиент дал согласие на сохранение карты для будущих платежей.
          x-description-lang:
            en: The card schema's ID identifying the initial request in which the customer consented to using stored payment credentials for processing future payments.
          type: string
          example: '123456'
    AuthorizationResource:
      type: object
      description: Этот объект отправляется Your Payments с информацией об использованной карте.
      x-description-lang:
        en: This node is sent by YPMN with information on the used card
      required:
        - authorized
      properties:
        timestamp:
          description: Дата и время попытки оплаты
          x-description-lang:
            en: Datetime of the payment attempt
          type: string
          format: ISO_8601 datetime
          example: '2022-01-02T12:00:14+00:00'
        authorized:
          type: string
          example: SUCCESS
          enum:
            - SUCCESS
            - PENDING
            - FAILED
        cardDetails:
          type: object
          properties:
            cardScheme:
              type: string
              example: VISA
              enum:
                - VISA
                - MASTERCARD
                - MIR
                - UNIONPAY
            cardType:
              type: string
              example: DEBIT
              enum:
                - DEBIT
                - CREDIT
                - PREPAID
                - UNKNOWN
            issuerBank:
              type: string
              example: BRD Groupe Societe Generale
              description: Название банка, выпустившего карту
              x-description-lang:
                en: Name of the bank that issued the card
            issuerCountryCode:
              type: string
              example: RU
              description: Код страны ISO 3166-1 alpha-2, где была выпущена карта
              x-description-lang:
                en: ISO 3166-1 alpha-2 country code where the card was issued
            cardProfile:
              type: string
              example: CONSUMER
              enum:
                - CONSUMER
                - COMMERCIAL
                - UNKNOWN
                - BOTH
            lastFourDigits:
              type: string
              example: '1111'
              description: Последние 4 цифры запрашиваемой карты
              x-description-lang:
                en: Last 4 digits of the requested card
            binNumber:
              type: string
              example: '411111'
              description: БИН(первые 6 цифр) запрашиваемой карты
              x-description-lang:
                en: BIN(first 6 digits) of the requested card
          required:
            - binNumber
            - lastFourDigits
        storedCredentials:
          $ref: '#/components/schemas/StoredCredentialsResponse'
    AuthorizeResponse:
      type: object
      required:
        - code
        - status
        - message
        - payuPaymentReference
        - amount
        - authorization
      properties:
        code:
          $ref: '#/components/schemas/2xxResponseCode'
        status:
          $ref: '#/components/schemas/ResponseStatus'
        message:
          $ref: '#/components/schemas/ResponseMessage'
        payuPaymentReference:
          $ref: '#/components/schemas/PayuPaymentReference'
        merchantPaymentReference:
          $ref: '#/components/schemas/MerchantPaymentReference'
        amount:
          $ref: '#/components/schemas/PriceAmount'
        currency:
          $ref: '#/components/schemas/Currency'
        paymentResult:
          $ref: '#/components/schemas/PaymentResult'
        authorization:
          $ref: '#/components/schemas/AuthorizationResource'
    AuthorizeResponse__INTCARD:
      type: object
      required:
        - code
        - message
        - payuPaymentReference
        - amount
        - authorization
      properties:
        code:
          $ref: '#/components/schemas/2xxResponseCode'
        message:
          $ref: '#/components/schemas/ResponseMessage'
        payuPaymentReference:
          $ref: '#/components/schemas/PayuPaymentReference'
        merchantPaymentReference:
          $ref: '#/components/schemas/MerchantPaymentReference'
        amount:
          $ref: '#/components/schemas/PriceAmount'
        currency:
          $ref: '#/components/schemas/Currency'
        paymentResult:
          $ref: '#/components/schemas/PaymentResult'
        authorization:
          $ref: '#/components/schemas/AuthorizationResource'
    customBankNode__FASTER_PAYMENTS:
      type: object
      properties:
        qr:
          type: string
          example: iVBORw0KGgoAAAANSUhEUgAAASwAAAEsCAYAAAB5fY51AAAACXBIWXMAAA7EAAAOxAGVKw4bAAAZOklEQVR4nO3deZRdVZXH8d+rV1PmOSGEysgYxjQzMQSwDSEGw+wSCQ2tDDIIrUJk2aggihqNJrRDo+DQCERAUCCQoN0gKnRkaBIGQ1DAhMxDVSVVITW9/iNSSb2k6tbhDPeequ9nrayVSt3hvHqv9jp3Z599coVCoSAAiEBJ2gMAgM4iYAGIBgELQDQIWACiQcACEA0CFoBoELAARIOABSAaBCwA0SBgAYgGAQtANEpNT8jlcj7G0a7ipY5J909aGml7vun1kq5ve34S1++X7c/X9Pqm71fx8b6v55rt+E35vr7p/ZMwwwIQDQIWgGgQsABEwziHVcz1M73vnFDS8bY5i7RzaMXnu87xmP58QueYioXOgZly/X65/n1M+/e7GDMsANEgYAGIBgELQDSsc1jFfNcV2d7P9Jnfdc7JlO0zv22Op5jrnJUp25yO75yW7efJ9ffTzkG5vj8zLADRIGABiAYBC0A0nOewfPOd87LNAdjWKZl+3/b+Seebfr+Y6zq2Yr7rymzrsFzn1GyFXhvpGjMsANEgYAGIBgELQDSiy2EVC91PyvfaMtu6H9scievX57o/lun3bfl+/12vbY09R5WEGRaAaBCwAESDgAUgGs5zWGnnFJKO9113k8R2LV4S13VJSUL3mPfdH8p1PzbXOSffOUHf59tihgUgGgQsANEgYAGIhnUOK/Q+Zkl8ry3L+vVdS7vnu2u+e9Lb3t/3zy90zsw1ZlgAokHAAhANAhaAaBjnsNKuw0gSeu2Z67qmpPOzVlfl+/zQPcqz9vkxPd82J5j1329mWACiQcACEA0CFoBo5AqOH1p9r8UK3R/Itue2733yTMdTzPX905b1fQjTvl/S8UlCX68YMywA0SBgAYgGAQtANIxzWKGf4W35zhGF3lfOlO8cjun1bO9fLGvHJ51fLHTOLel6WccMC0A0CFgAokHAAhAN5zms0D21i4Xed9B1Dibp+knnZ/1+oXv+F/P9fiUJXYflW+icGTMsANEgYAGIBgELQDSC93QPvRbOlOu6mdBrtWzHn3ZdXJKs9YD3ndPLWl1V6H0bizHDAhANAhaAaBCwAEQj+FrCYq57UGetH5DrnIvv1xO6n5kp2xxN2vtC+u657nvfRNf3M8UMC0A0CFgAokHAAhCN4PsSZq0fVjHTOiXT+7vOQWV9rVnsOSvX4zHlug4r6fWavr7Qv8/MsABEg4AFIBoELADRCL6W0PR6vuu8slYn5Pp6vnM0vuuIsl4X5fr6oesKfa9NdJ3TYoYFIBoELADRIGABiIZxDsv1WizfPciTZC2nkMS0H1ba/ZRc1/XY3t+0Din0++2731kS28+L735rzLAARIOABSAaBCwA0bCuw7KVtZ7svntsh64b8r020Xd/LtfvRzHX75/v8cbWf461hAC6LQIWgGgQsABEw7ine+IFHT+Tu76+7/EVC93z2nVPb1Ohf96+6wJ990hPu4d+1l5PEmZYAKJBwAIQDQIWgGhYryUs5rpOyHYtWtL3s7Y20HfOyfZ+oeuAbOt8fOe0kvj+PIauC0x7bSozLADRIGABiAYBC0A0rNcSut6n0PZ83/2IfOc8QucEXO9zZ3u/0Dk5U2nnQH2/3rT3zUzCDAtANAhYAKJBwAIQDeMclu+cletnXtd1I7Y5mLTXjpleP2v9sUz5zmkmHW9aN5Z2XWLSeNJeW8sMC0A0CFgAokHAAhAN6zos3z2xQ/e/Kua731Da/at815GFrhuzrYsK3a/MNde/P7Y/P9evlxkWgGgQsABEg4AFIBre1xL6zoG47u/kOkdiyrSOx3dPctc/z9D9xmy5Ho/rOj/X77fpeGzrvEwxwwIQDQIWgGgQsABEw3tPd991HGn3Pyrmuyd36H30kviuu3GdA3O976Lt/UOvvbT9/U1aa5p0PdYSAug2CFgAokHAAhCNXMFxEih0vyZTvuuYfK+tTLpf6OND94Q3vX6S0O+X6f1dX9/1+aHXYjLDAhANAhaAaBCwAETDei1hMdu6I9fnZ31tWug6F9c5Gds6MtP7+b5+2mvzksaTdD3Xx4deK5vEecCCndAb04beiNP360v79cMvHgkBRIOABSAa3uuwkoTu7+R7fEn34xEkLq7r0EJ/vn3XQYauy2KGBSAaBCwA0SBgAYhG8LIG2/+W9r2WKqkOyvV/m5Pjgo20+8mF3gOBGRaAaBCwAESDgAUgGt57upueH1radS/krOKStX5sttfz3Y/LNWZYAKJBwAIQDQIWgGhkrr2M6x7jvnu0m44vOwqSspVPjJHrdjm+1y6ajidJ6LW1zLC6qZaNz2vbwzerUFed9lCATiNgdVO5XIMKm+5V9demavuz90uZnQkCOxGwurGyYTUqKa9X3b1fUO28j6l51bK0hwR0yLgflu+e1Ennh97HL+n8JGnv49aewqY/qWnx2Wqu6av6Z/7xjyV5VU6aqR6nXa1cZe9UxpU1oesGY+sZH7o/FjOsbi7fr1ale1fs+KKlWe8+9VPV3DpNDS8uSHdgwB4QsKCK/eqkknzr1y01a7X1Z/+mLT/8hJrX/i3FkQFtEbCgkh71Kh+T3+3fG//yB9XOnqFtj81VoXF7CiMD2vKew0riO4eUNVmpy3ovh9X6dVO56n7fW4WGpj0eXzJwH/U654sqGz851BCjkLXPo+uclG/UYeF9yZU2qHy/9j88LZtWasvtl2rrnVepZfPqgCMDdiJgRe6uP65QXUOzk2uVjy1VjylXKFda3u4xDUueUM3Xp+nd3/6n1Nzo5L5AZxGwIvfkwy/rxDte1uPLN1tfK1eSU49p16jfrEdUdsDEdo8rbK9X/SNzVDP7DDW9sdj6vkBnWQesQqFg9KdYLpcz+pN0f9evx/frtVVZXaey1Zs184Hl+vj9r2tFjX1yvGTIKPX51J3qfdFclfTfq93jmte8odrvXai6e25QYesm6/t2VlNjk+rrtwW5l+nnMYnp58f0j+l4XX8eXf8+Fsvc4meYG7NynVYcOFqL3qjW02/X6rMn7K1PHTNc5XnDIsKWto94JUOO1rZlU/Xucy91eF7569tVdth6lR880Hjs7Xl56TL95I779Kc/PK+NGzarpaVFDQ2Nrb8EZ50zVXO/92Vn90McCFhdQL5+u/bdVKNX+/fTtsYW3fLUSt33ykbNPnW0jq/qY3ClFklSoaFJ1d9/VBtvma+Wre+2e3RJzwoNnHW2Blw7Q7mKMstXsdOc2T/S3Dk/UUtLyx6/X1FRrutvuNzZ/RAPAlYXUbVqg97u31d1/2gZs2zDNs24+zWdd/BgfenkKg3p1bmAsu3pV7T207er4bUVHR7X69R/0tC5l6hs9DDrse/qtu/+VN/51h0dHnPRJ87ViH3af1RF12UcsFzXbdjWYfmuG7FdyxhsX8KGJh24YZOeHzxol2tJ81/eoMeWb9YXJlfpoglDVdLR8JuatWL6Fzvs3FBaNVhDZ/+rep9xnPEQX1/2pp778xKtW7tBpaWlOvCgcTrxpGNVXr4jmL6x/C3Nmf3j1uP3HjFMX7zpGk068WhVVFa0/ntZ2c6PbV3dNi156bVO3b+8rExHHn2o0Zhdr+1zvTavmO89BUz3IXSNGVYXMmTVRg0a1F8bc22r1mu3N2vWord0z9L1+uaU0ZowvFf7F2nnA5wrL9WAT5+ugZ8/VyW9K43G9eILr+imG7+r559buvuYhw7Sz++eo0MOPUC3//AeNTXtKFzt26+PHnz4dvXq3VOvL3tTykljxlRp0OABbc5/+82VOu/MKzo1jiFDB+mFpY8ajR3ZQsDqQgotBR24ar3+OGLPj0v/t7pOp/38VV00YahmHdKszvZj6DFpvIbNu0zlB1UZj+nxBU/qiktvVGPjnmu28vm8xo4bqUKhoIULnmr995NPOV5f+fI8Pfbok2pu3lFnVlJSoomTjtItt35OY8eNNB4L4kcdVhfTe32NTh9eqZJ2pubNhYLueGGtJs4v6L6a6Sp00Ca5dFh/7XXnNapadMv7ClarV63TNVfd1Bqs8vm8pk6brMuvvECnnjZZFRXluuHfr1DPnj20csVqbdq0s/vpbx56Qo/85netwUqSWlpa9PRTi3XW6ZfqnXfW7vGe5eXl6tuvT+uffJ6PeFdiPcPy/Qzse+1d6H5VIdZqXXf0MF09oLc+t/AtLVlTt8dj1m+v1DVvXqJ7+56iW/f5gfYvX77zm/kS9f/EFA266XzlB7z/vli/+K+HVF+3o14qn8/r7vvm6YSJR7Z+f9OmGvXv33fH3ze2bdVcKBQ0ZMhAnX3eNOXzed03/1GtW7tBkrRxY7XmfPN2fXvujbvdc+ZFZ+nLX7m29eupH7xQr7z8+vt+Db57qPveg8B0fKb3C/37wyNhFzVheC8t+pfxuvOFdfr671eqdvuel+88UztOH/rLbF02bIGuHfaQKo/eT0O/e4kqj9zXegwv7JKzOnHyMW2ClSQNHNiv9e/50rYfxdLSvB585HaNGr2PJOn8Cz6ikyZ+VI2NO3JcTyz8g/X4EB/my11YPpfTxQcP0rzKbZq4ubrdh7/Glpz+Y/WHdfKy7+jVH89yEqwkqaFhZ96qd58OEv2S9ho+pM3XY8eNag1WkjRy1Ig2eavNm2vaXB/dAwGrC3vr2Tc1//J7tPLhJTpt6Ru68pXXVdXQ0O7xK7b11swH39DMB5ZrZW37x3XWuH1Htf796acWt8lRFRs8eIBGjty79eu1a9a3SdQ3NTZpzZoNrV/37FnZWg6B7sN5wLJde2W7Fsn0fNO1Vq7XCvpYe7V13RYtvHmBFt78mLau29L673ttrNVlz72ij7yzRj3U/r0eX75ZE3+0RLc9u1qNze9/TGedM7X179XVtTpz+qX65b2P6M+Ll+hX9z+uKy+7sU0QO/OcU1v/XlOzRdd95latWbNeGzZs1g3Xf0M11bWt35846ej3PS4TpmtFTd/PpLWAxXyvrXX9eXS9FpMcVhdTmc/p+e/8TrnGdlrONDXrhJVrNOW4En1ra53e2jxmj4fVN7bo5idXaP7LG/SNKaM1caTJEp8djj1+gj728Rm65xe/liT97a9/12evuaXNMYMGD9DNX/2MJOmSy8/Xffc+qlWr1kmSHvjlAj3wy917y1dWVui6z19mPB7Ej0fCLmZsobn9YCVp1LGjdd4PP6Yjpu6lw/e+VR8YfZd6V+z5fxKlHUt8zrz7NV35yN+0rs48Z/S1b16vT111QZvq9F3dc9evW2dZ/fr10V3z52nM2PZLKIYOG6Sf/WKODhrvJs+GuBi3SE68YOCtsZOu57uls+14bH/8V11+v6qrd5QO9Csr0eHVW1Ro3n3RcJ+hfXTC5R/Q6ON2zKiWbXxOs//0SUlSS6GX3thwll5fP0kdPQH2rcjr30+q0oVHDFHe8Oe66p21evjXv9XSJctUU1Orfv376pBDD9CHp5+sql1yV5LUsL1BD/1qkf7nv5/Rir+vUqEgVVUN14knHaMZZ01Rr149W4+trq7VEwufbv16v/3H6IgJ41u/fmLh06r+x6NkZWWFTp/xz0bjthX71vKm53sfv2nAylpP6GKh11L5rptJsmvAmlBoUu8tbftE5cvyOvSMw3Xk+UeptGLnLGfXgPWepubx2rD1Rv3vyi3qyOF79dK3p47W4Xt1/D9/XYHvfTBdfz6T7u+b77pJHgm7iKFlJbsFq70PG6GzbztXx158XJtg1Z6+lSv08McP0txpYzSoZ/vHv7SmTlN+9qquW/iWat51054Z6AwCVheQy0ljtu3sW9VzYE998PoP6fRbZ2jASLOmermcdP5hQ/TMJYdp5hFD2u3u0FIo6KcvrtPxP1qi+1/ZaDN8oNP4X8IuoKpEKq/frlw+p0OmH6qjLjhG5b3a30iiMwb0KNXsKSO1ren3evC19juObnpXum5RhYb0+qQmjx5ndU8giXU/LNPvp/3MHqw/laPxJCnL51RV/64GjxuiSVdP1tD9h1pd7z3PrFiqKx79hl5as7zD46bue7zmTbtS+w7cp8Pjuqqkz4vrfldZW+vnut9XEmZYkdu/V6kmXXysDp5+qHIddufrnPX11Zq16Db9/KUFainsuUWxJFX1G6Y5p16rs8efYn1PoLMIWJG7+EunqdLy8e89m7fldOBt52jztvb/l7CspFSfPu6j+tJJl6h3eQ8n9wU6i4AVOVfBSpKeXaEOg9WkUUfo+x+epYOHjnV2T8CE84Bl+kyfdH4x22d2235FSWxzFr7rWNqzsb63/rppz3saDuk1QLM/dLVmHjFNuQ4a/nUHtjlQ2/ff9efL9vumn1fbzzczLCiXy2vxyrykon0JcyW69Kgz9NVTrtCAHuZrCQHXCFjQ25t7avWWtvsPThh+gH4w/fM6ZsT4ds4CwiNgdXOFQpkWr9w5Te9T0VM3nXyprjrmPJWW5Ds4EwjPOGCFXptnen/X4zE93vYZP7RX11eqdvuOZn3nHvxBzTn1Wo3o66aWqzvw3cPdNd/7Cvr+/WSG1Y1tbyrXi6uatd+gkbpt2mc1ZZz55qhASASsbuwv6/vphkkf1awPXKjKUnflEYAv1u1linW3R0LX9wv1CLm+fp22bG/U2AEjgtwvVr63jnf9SBi6H1yxLt8PK+sN90z5fsMQVujPY+jPg+9+Xa5fH+1lAESDgAUgGgQsANGw3oQiaz2r084B2CKnlS2+1+KZ3s9U2r9/ru/PDAtANAhYAKJBwAIQDe91WL4L44q53ijS9P6m1ydnlW2+C5uLhd4TIeu/L8WYYQGIBgELQDQIWACi4X3xc9bX1oVebJq1tWSw4zrH5fr9D/376vv1McMCEA0CFoBoELAARMN5DquY72fktOvA0m4oGLp/Uew5mNA5R9d1TqFfb9J4TM+3xQwLQDQIWACiQcACEI3gu+aEzjnZjsf1+Wn3O/Kdgwm9Ns13nZHt++k7JxS6bi/p5+k7p8sMC0A0CFgAokHAAhAN6xyW62da38/0ps/MtjmgrpaT813HYyvrP2/bz4vrHLDrHJvvtbHMsABEg4AFIBoELADRMM5hpb12Le0e1L7rXnz3V/JdJ5Z2XZjvOjfbz4fvtYWm40m6ftL1TD9PSddLwgwLQDQIWACiQcACEA3v/bCKpb2vW9L9XI/PdV2Na6F7krtea5b18Sdd33cOOOl4W6HXMjLDAhANAhaAaBCwAETDeT8s12vRbNciuq77KeZ77VrWcjShe377ruvyXTdlej3f/aTSzomxLyGAboOABSAaBCwA0TCuw9rtApHVtZhez1baPdTT7pEeel/IrN8vdA4s658fU8ywAESDgAUgGgQsANEwrsMK3SM76f5p70uXxHddWdLxSeMx5buOyPday7T7T6Xdz6uY7c8/dM93ZlgAokHAAhANAhaAaDjvh5V2HUwx3/u6mcp6Dsl2PL6vn3adUOjxJJ1fLO21tL4xwwIQDQIWgGgQsABEw3sOK+n8tPvzFPO9Nir2nvWu7x86R5h2D3/X0q778v37XIwZFoBoELAARIOABSAaznu6h+6P5TpH4nstVdL3k67nOueQxHedTdo98dPOeWa9Z3zoHFcSZlgAokHAAhANAhaAaFjnsFz3M7LNGSVxnZPxncNwnQNIe+2gbX+p0Of77oeVJHR/saz3M2OGBSAaBCwA0SBgAYiGcQ7L9zNr6LWDptdzXffke21e6LVyoffFS+K6B3zotXOu1376rpP0nYNlhgUgGgQsANEgYAGIhnE/rMQLZqyHu+n1k473fT/X9zcVei1b1vqb2V6/WNZ78Kfdw546LABdFgELQDQIWACiYd3T3fc+f1nLOaXdryh0DsP2emnnjEzPN71eEt91WlnfY8E1ZlgAokHAAhANAhaAaDjv6W7bL8j2frY5Ktc5utDP+KbS7gFue//QOSDfdXeuP3+uc7Zp74PIDAtANAhYAKJBwAIQDed1WEnHFwtd92TKdQ4q7f5gvuukbKW9Vs5W2vtEhq6LK+a7rpAZFoBoELAARIOABSAazvth+Ra6f1CSrO1DGDonlfbat6TzY1+rZ3q/0NcLfT4zLADRIGABiAYBC0A0jNcSpp0jSTtHkXb/INO1Xr77jxUzfb2u17KF5jpHZLuW0lbofS1NMcMCEA0CFoBoELAARMO6H5bvtXa+z7ftJ+Q6p+U655N0vun4fPecN+W6f1OxtPcU8L1nQtL9XaMOC0C3QcACEA0CFoBoOO/p7rsuw/e+iGnXVZlynbMylfa+g1nbI6CY7x7sSd/3XccVek8DZlgAokHAAhANAhaAaDjPYYUWeq2V7TO57/5WrnN4vnMcofd5dL3W0TfXPw/Xa2NDY4YFIBoELADRIGABiEb0OSzX/ZuSrm96Pd/9qdLeZ851jsr0/qay1oM99NpO3/3cfK9FZIYFIBoELADRIGABiIbxvoS+1wqlfX3XayF971toK/RasGJZqwMKnbPMej+rrI2HGRaAaBCwAESDgAUgGtY5LN985zR85xxCr0ULvS+h7xyc77VvtuMPvbbR9nqh+9XZXq8YMywA0SBgAYgGAQtANIxzWACQFmZYAKJBwAIQDQIWgGgQsABEg4AFIBoELADRIGABiAYBC0A0CFgAokHAAhANAhaAaPw/kzKxS4ML1YEAAAAASUVORK5CYII=
          description: QR-код в формате data:image/png для проведения оплаты на desktop
        url:
          type: string
          example: https://qr.nspk.ru/AD10007CC00N0IDO81VAEHJKHUIQLG5I?type=02&bank=100000000008&sum=1000&cur=RUB&crc=B789
          description: прямой URL платёжного метода
    PaymentResult__FASTER_PAYMENTS:
      type: object
      properties:
        payuResponseCode:
          type: string
          example: PENDING_AUTHORIZATION
          description: Код сообщения Your Payments (RETURN_CODE)
          x-description-lang:
            en: YPMN message code (RETURN_CODE) from current ALU. It is sent only for orders that could not been authorized for various reasons
        customBankNode:
          $ref: '#/components/schemas/customBankNode__FASTER_PAYMENTS'
        type:
          type: string
          enum:
            - redirect
            - wire
            - offline
        url:
          description: |
            URL адрес для редиректа плательщика на платёжную страницу Your Payments
          x-description-lang:
            en: 'Merchant should redirect user to this url, so he can finish payment. Can be the url for beginning of 3dsecure process, for redirecting to the client bank or to a third-party wallet (e.g: BKM)'
          type: string
          example: https://secure.ypmn.ru/pay/offline/faster_payments/2Xrl83Gas-uNsoXufbrCaXGR3ZCvlL1t/
    AuthorizationResource__FASTER_PAYMENTS:
      type: object
      description: ''
      x-description-lang:
        en: This node is sent by YPMN with information on the used card
      required:
        - authorized
      properties:
        timestamp:
          type: string
          example: '2026-06-02T20:32:34+03:00'
        authorized:
          type: string
          example: SUCCESS
          enum:
            - SUCCESS
            - PENDING
            - FAILED
    AuthorizeResponse__FASTER_PAYMENTS:
      type: object
      required:
        - code
        - status
        - message
        - payuPaymentReference
        - amount
        - authorization
      properties:
        code:
          $ref: '#/components/schemas/2xxResponseCode'
        status:
          $ref: '#/components/schemas/ResponseStatus'
        message:
          $ref: '#/components/schemas/ResponseMessage'
        payuPaymentReference:
          $ref: '#/components/schemas/PayuPaymentReference'
        merchantPaymentReference:
          $ref: '#/components/schemas/MerchantPaymentReference'
        amount:
          $ref: '#/components/schemas/PriceAmount'
        currency:
          $ref: '#/components/schemas/Currency'
        paymentResult:
          $ref: '#/components/schemas/PaymentResult__FASTER_PAYMENTS'
        authorization:
          $ref: '#/components/schemas/AuthorizationResource__FASTER_PAYMENTS'
    PaymentResult__BNPL:
      type: object
      properties:
        payuResponseCode:
          type: string
          example: PENDING_AUTHORIZATION
          description: Код сообщения Your Payments (RETURN_CODE)
          x-description-lang:
            en: YPMN message code (RETURN_CODE) from current ALU. It is sent only for orders that could not been authorized for various reasons
        type:
          type: string
          enum:
            - redirect
            - wire
            - offline
        url:
          description: |
            URL адрес для редиректа плательщика на платёжную страницу Your Payments
          x-description-lang:
            en: 'Merchant should redirect user to this url, so he can finish payment. Can be the url for beginning of 3dsecure process, for redirecting to the client bank or to a third-party wallet (e.g: BKM)'
          type: string
          example: https://secure.ypmn.ru/order/pbl/redirect.php?hash=0d5f03d8763abe295b18e2b0bf185d43
    AuthorizationResource__BNPL:
      type: object
      description: ''
      x-description-lang:
        en: This node is sent by YPMN with information on the used card
      required:
        - authorized
      properties:
        authorized:
          type: string
          example: SUCCESS
          enum:
            - SUCCESS
            - PENDING
            - FAILED
    AuthorizeResponse__BNPL:
      type: object
      required:
        - code
        - status
        - message
        - payuPaymentReference
        - amount
        - authorization
      properties:
        code:
          $ref: '#/components/schemas/2xxResponseCode'
        status:
          $ref: '#/components/schemas/ResponseStatus'
        message:
          $ref: '#/components/schemas/ResponseMessage'
        payuPaymentReference:
          $ref: '#/components/schemas/PayuPaymentReference'
        merchantPaymentReference:
          $ref: '#/components/schemas/MerchantPaymentReference'
        amount:
          $ref: '#/components/schemas/PriceAmount'
        paymentResult:
          $ref: '#/components/schemas/PaymentResult__BNPL'
        authorization:
          $ref: '#/components/schemas/AuthorizationResource__BNPL'
    customBankNode__ALFAPAY:
      type: object
      properties:
        url:
          type: string
          example: https://alfa-mobile.alfabank.ru/mobile/api/v1/goto/alfapay?orderId=6dd4c148-f790-7f1f-8348-823504a254c1&merchantTitle=0JfQsNC60LDQtyBZUCpPcmlmbGFtZQ--&backUrl=https%3A%2F%2Fsecure.ypmn.ru%2Forder%2Fcommon%2Freturn%2Ffailed%3Forder%3D282664265%26orderId%3D6dd4c148-f790-7f1f-8348-823504a254c1%26lang%3Dru&authorizationUrl=aHR0cHM6Ly9hbGZhLW1vYmlsZS5hbGZhYmFuay5ydS9tb2JpbGUvYXBpL3YxL2dvdG8vYWxmYXBheT9vcmRlcklkPTZkZDRjMTQ4LWY3OTAtN2YxZi04MzQ4LTgyMzUwNGEyNTRjMQ--&merchantSubtitle=0JTQu9GPINC.0L_Qu9Cw0YLRiyDQstC.0LnQtNC40YLQtSDQsiDQkNC70YzRhNCw4oCR0J7QvdC70LDQudC9INC40LvQuCDQvtC_0LvQsNGC0LjRgtC1INC_0L4gUVLigJHQutC.0LTRgyDQsiDQv9GA0LjQu9C.0LbQtdC90LjQuCDQsdCw0L3QutCw&innerDeeplink=L211bHRpc3RlcC1yb3V0ZT92ZXJzaW9uPTImYWxpYXM9YWxmYXBheSZmcm9tTW9kdWxlPUlOVk9JQ0UmcHJlZmlsbGVkRGF0YUlEPTZkZDRjMTQ4LWY3OTAtN2YxZi04MzQ4LTgyMzUwNGEyNTRjMQ==
          description: прямой URL платёжного метода
        expiration_date:
          type: string
          example: '2026-12-02 20:54:59'
    PaymentResult__ALFAPAY:
      type: object
      properties:
        payuResponseCode:
          type: string
          example: PENDING_AUTHORIZATION
          description: Код сообщения Your Payments (RETURN_CODE)
          x-description-lang:
            en: YPMN message code (RETURN_CODE) from current ALU. It is sent only for orders that could not been authorized for various reasons
        customBankNode:
          $ref: '#/components/schemas/customBankNode__ALFAPAY'
        type:
          type: string
          enum:
            - redirect
            - wire
            - offline
        url:
          description: |
            URL адрес для редиректа плательщика на платёжную страницу Your Payments
          x-description-lang:
            en: 'Merchant should redirect user to this url, so he can finish payment. Can be the url for beginning of 3dsecure process, for redirecting to the client bank or to a third-party wallet (e.g: BKM)'
          type: string
          example: http://acquirer_url/test
    AuthorizationResource__ALFAPAY:
      type: object
      description: ''
      x-description-lang:
        en: This node is sent by YPMN with information on the used card
      required:
        - authorized
      properties:
        authorized:
          type: string
          example: PENDING
          enum:
            - SUCCESS
            - PENDING
            - FAILED
        timestamp:
          type: string
          example: '2026-12-02T20:34:59+03:00'
    AuthorizeResponse__ALFAPAY:
      type: object
      required:
        - code
        - status
        - message
        - payuPaymentReference
        - amount
        - authorization
      properties:
        code:
          $ref: '#/components/schemas/2xxResponseCode'
        status:
          $ref: '#/components/schemas/ResponseStatus'
        message:
          $ref: '#/components/schemas/ResponseMessage'
        payuPaymentReference:
          $ref: '#/components/schemas/PayuPaymentReference'
        merchantPaymentReference:
          $ref: '#/components/schemas/MerchantPaymentReference'
        amount:
          $ref: '#/components/schemas/PriceAmount'
        currency:
          $ref: '#/components/schemas/Currency'
        paymentResult:
          $ref: '#/components/schemas/PaymentResult__ALFAPAY'
        authorization:
          $ref: '#/components/schemas/AuthorizationResource__ALFAPAY'
    customBankNode__TPAY:
      type: object
      properties:
        qr:
          type: string
          example: PD94bWwgdmVyc2lvbj0iMS....
          description: QR-код в формате data:image/svg+xml для проведения оплаты на desktop
        url:
          type: string
          example: https://www.tinkoff.ru/tpay/1000000000094128736
          description: прямой URL платёжного метода
        expiration_date:
          type: string
          example: '2026-12-02 20:54:59'
    PaymentResult__TPAY:
      type: object
      properties:
        payuResponseCode:
          type: string
          example: PENDING_AUTHORIZATION
          description: Код сообщения Your Payments (RETURN_CODE)
          x-description-lang:
            en: YPMN message code (RETURN_CODE) from current ALU. It is sent only for orders that could not been authorized for various reasons
        customBankNode:
          $ref: '#/components/schemas/customBankNode__TPAY'
        type:
          type: string
          enum:
            - redirect
            - wire
            - offline
        url:
          description: |
            URL адрес для редиректа плательщика на платёжную страницу Your Payments
          x-description-lang:
            en: 'Merchant should redirect user to this url, so he can finish payment. Can be the url for beginning of 3dsecure process, for redirecting to the client bank or to a third-party wallet (e.g: BKM)'
          type: string
          example: https://secure.ypmn.ru/pay/offline/tpay/2Xrl83Gas-uNuoXrfejcaXGR3bKvlNdt/
    AuthorizationResource__TPAY:
      type: object
      description: ''
      x-description-lang:
        en: This node is sent by YPMN with information on the used card
      required:
        - authorized
      properties:
        authorized:
          type: string
          example: PENDING
          enum:
            - SUCCESS
            - PENDING
            - FAILED
        timestamp:
          type: string
          example: '2026-12-02T20:34:59+03:00'
    AuthorizeResponse__SBERPAY:
      type: object
      required:
        - code
        - status
        - message
        - payuPaymentReference
        - amount
        - authorization
      properties:
        code:
          $ref: '#/components/schemas/2xxResponseCode'
        status:
          $ref: '#/components/schemas/ResponseStatus'
        message:
          $ref: '#/components/schemas/ResponseMessage'
        payuPaymentReference:
          $ref: '#/components/schemas/PayuPaymentReference'
        merchantPaymentReference:
          $ref: '#/components/schemas/MerchantPaymentReference'
        amount:
          $ref: '#/components/schemas/PriceAmount'
        currency:
          $ref: '#/components/schemas/Currency'
        paymentResult:
          $ref: '#/components/schemas/PaymentResult__TPAY'
        authorization:
          $ref: '#/components/schemas/AuthorizationResource__TPAY'
    AuthorizeResponse__TPAY:
      type: object
      required:
        - code
        - status
        - message
        - payuPaymentReference
        - amount
        - authorization
      properties:
        code:
          $ref: '#/components/schemas/2xxResponseCode'
        status:
          $ref: '#/components/schemas/ResponseStatus'
        message:
          $ref: '#/components/schemas/ResponseMessage'
        payuPaymentReference:
          $ref: '#/components/schemas/PayuPaymentReference'
        merchantPaymentReference:
          $ref: '#/components/schemas/MerchantPaymentReference'
        amount:
          $ref: '#/components/schemas/PriceAmount'
        currency:
          $ref: '#/components/schemas/Currency'
        paymentResult:
          $ref: '#/components/schemas/PaymentResult__TPAY'
        authorization:
          $ref: '#/components/schemas/AuthorizationResource__TPAY'
    4xxResponseCode:
      type: number
      enum:
        - 400
        - 401
        - 403
        - 409
        - 404
        - 429
      example: 400
      description: Неверный код запроса (http-код, который также возвращается в заголовках)
      x-description-lang:
        en: A bad request code (http code that is also returned in headers)
    AluClientErrorsResponse:
      type: object
      properties:
        code:
          $ref: '#/components/schemas/4xxResponseCode'
        message:
          $ref: '#/components/schemas/ResponseMessage'
    5xxResponseCode:
      type: number
      enum:
        - 500
        - 502
      example: 500
      description: Произошла ошибка при обработке запроса (http-код, который также возвращается в заголовках)
      x-description-lang:
        en: Some error occurred trying to process request (http code that is also returned in headers)
    ServerErrorsResponse:
      type: object
      properties:
        code:
          $ref: '#/components/schemas/5xxResponseCode'
        message:
          $ref: '#/components/schemas/ResponseMessage'
    ReturnUrlRequestBody:
      type: string
      format: json
      description: |
        Строковое представление json объекта с информацией о заказе, где

        | ПАРАМЕТР| НАЗНАЧЕНИЕ |
        |--|--|
        | payuPaymentReference | номер транзакции в системе Your Payments |
        | status | статус операции |
        | paymentResult.payuResponseCode | код ответа |
        | message | сообщение |
        | merchantPaymentReference | номер заказа в системе ТСП |
        | code| код HTTP |
      example: |
        {"payuPaymentReference": "896782", "status": "SUCCESS", "paymentResult": { "payuResponseCode": "AUTHORIZED" }, "message": "Authorized.", "merchantPaymentReference": "34dfsd-sdgds", "code": 200}
    ReturnUrlRequestSignature:
      type: string
      description: Подпись запроса
      x-description-lang:
        en: Signature of the message
      example: 0b9b07bd4b81375d189bbe0fe23a7c4b939b112715c2ac090829ed2182752c1c
    ReturnUrlRequestMerchant:
      type: string
      description: Идентификатор продавца в системе Your Payments
      x-description-lang:
        en: Merchant identifier in YPMN system
      example: MERCH_CODE
    ReturnUrlRequestDate:
      type: string
      description: Дата запроса в формате [ISO_8601, "Y-m-d\TH:i:sP"](https://en.wikipedia.org/wiki/ISO_8601)
      example: '2032-01-01T11:22:33+03:00'
      x-description-lang:
        en: Date of the request in [ISO_8601 Y-m-d\TH:i:sP format](https://en.wikipedia.org/wiki/ISO_8601)
      format: ISO_8601
    ReturnUrlRequest:
      type: object
      properties:
        body:
          $ref: '#/components/schemas/ReturnUrlRequestBody'
        signature:
          $ref: '#/components/schemas/ReturnUrlRequestSignature'
        merchant:
          $ref: '#/components/schemas/ReturnUrlRequestMerchant'
        date:
          $ref: '#/components/schemas/ReturnUrlRequestDate'
    CaptureRequest:
      type: object
      properties:
        payuPaymentReference:
          $ref: '#/components/schemas/PayuPaymentReference'
        originalAmount:
          description: |
            Сумма исходной транзакции
            (полученная в ответе на [запрос оплаты](./#tag/payment-api/paths/~1v4~1payments~1authorize/post),
             в параметре amount)
          anyOf:
            - type: number
            - type: string
          format: double
          example: 5.66
        amount:
          description: |
            Сумма списания (меньше или равна сумме исходной транзакции)
          x-description-lang:
            en: Amount that will be captured (including installmentsAmount and sum of all products)
          anyOf:
            - type: number
            - type: string
          format: double
          example: 5.66
        currency:
          $ref: '#/components/schemas/Currency'
        details:
          $ref: '#/components/schemas/Details'
      required:
        - payuPaymentReference
        - originalAmount
        - amount
        - currency
    IdnResponseStatus:
      type: string
      example: A text representing the status of the response
      enum:
        - SUCCESS
        - MISSING_OR_INCORRECT_STRUCTURE_REFERENCE
        - MISSING_OR_INCORRECT_STRUCTURE_AMOUNT
        - MISSING_OR_INCORRECT_STRUCTURE_CURRENCY
        - ERROR_CONFIRMING_ORDER
        - ALREADY_CONFIRMED
        - REFERENCE_NOT_FOUND
        - INVALID_ORIGINAL_AMOUNT
        - INVALID_CURRENCY
        - INVALID_AMOUNT
        - INVALID_SIGNATURE
        - LIMIT_CALLS_EXCEEDED
        - INVALID_REQUEST
        - PARTIAL_AMOUNT_NOT_SUPPORTED
        - PRODUCTS_NOT_SUPPORTED
        - INVALID_CREDENTIALS
        - INTERNAL_ERROR
        - INVALID_REQUEST_STRUCTURE
    ConfirmSuccessStatusResponse:
      type: object
      properties:
        payuPaymentReference:
          $ref: '#/components/schemas/PayuPaymentReference'
        code:
          $ref: '#/components/schemas/2xxResponseCode'
        message:
          $ref: '#/components/schemas/ResponseMessage'
        status:
          $ref: '#/components/schemas/IdnResponseStatus'
    IdnClientErrorsStatusResponse:
      type: object
      properties:
        code:
          $ref: '#/components/schemas/4xxResponseCode'
        message:
          $ref: '#/components/schemas/ResponseMessage'
        payuPaymentReference:
          $ref: '#/components/schemas/PayuPaymentReference'
        status:
          $ref: '#/components/schemas/IdnResponseStatus'
    IdnServerErrorsStatusResponse:
      type: object
      properties:
        code:
          $ref: '#/components/schemas/5xxResponseCode'
        message:
          $ref: '#/components/schemas/ResponseMessage'
        payuPaymentReference:
          $ref: '#/components/schemas/PayuPaymentReference'
        status:
          $ref: '#/components/schemas/IdnResponseStatus'
    RefundRequest:
      type: object
      properties:
        payuPaymentReference:
          $ref: '#/components/schemas/PayuPaymentReference'
        originalAmount:
          description: Первоначальная сумма сделки (включая стоимость платежей в рассрочку, если применимо)
          x-description-lang:
            en: Original amount of the transaction (including installments cost if applicable)
          anyOf:
            - type: number
            - type: string
          format: double
          example: 5.66
        currency:
          $ref: '#/components/schemas/Currency'
        amount:
          description: Сумма, которая будет возвращена клиенту. Она не должен превышать разницу между суммой исходной операции и суммой ранее совершенных возвратов по этой операции (*нельзя вернуть клиенту больше чем он заплатил*). Сумма должна быть строго положительным числом.
          x-description-lang:
            en: Amount that will be refunded to client. Must not exceed difference between originalAmount and previous refund requests. Amount should be a strict positive number.
          type: number
          format: double
          example: 5.66
        merchantRefundReference:
          description: Уникальный идентификатор возврата (если он необходим).
          x-description-lang:
            en: Refund reference value that could be filled with an identifier for the request.
          type: string
          format: string
          example: 6c6ATzmtUD
        marketplaceV1:
          description: Обязательно в случае оплаты с разделением платежа
          x-description-lang:
            en: Mandatory for payment using marketplaceV1 version <i>(deprecated)</i><br/> <b>marketplaceV1</b> and <b>products</b> nodes can't be sent together
          type: array
          items:
            properties:
              merchant:
                type: string
                example: YPMN_2
                description: Идентификатор продавца в системе Your Payments
                x-description-lang:
                  en: Merchant identifier in YPMN system
              amount:
                description: Сумма, подлежащая возврату конкретному продавцу.
                x-description-lang:
                  en: Amount to be refunded to the specific merchant.
                type: number
                format: double
                example: 4.6
            required:
              - merchant
              - amount
        details:
          $ref: '#/components/schemas/Details'
      required:
        - payuPaymentReference
        - originalAmount
        - currency
        - amount
    IrnResponseStatus:
      type: string
      example: A text representing the status of the response
      enum:
        - SUCCESS
        - MISSING_OR_INCORRECT_STRUCTURE_REFERENCE
        - MISSING_OR_INCORRECT_STRUCTURE_ORIGINAL_AMOUNT
        - MISSING_OR_INCORRECT_STRUCTURE_CURRENCY
        - INVALID_ORDER_STATE
        - ALREADY_CANCELLED
        - INTERNAL_ERROR
        - REFERENCE_NOT_FOUND
        - INVALID_ORIGINAL_AMOUNT
        - INVALID_CURRENCY
        - MISSING_OR_INCORRECT_STRUCTURE_AMOUNT
        - INVALID_AMOUNT
        - INVALID_CREDENTIALS
        - INVALID_PAYMENT_METHOD
        - INVALID_LOYALTY_POINTS
        - NOT_ENOUGH_LOYALTY_POINTS
        - LIMIT_CALLS_EXCEEDED
        - PRODUCTS_NOT_SUPPORTED_FOR_PARTIAL_IRN
        - INVALID_PRODUCTS
        - INVALID_REQUEST_STRUCTURE
        - INVALID_REQUEST
        - INVALID_PRODUCT_SKU
        - INVALID_PRODUCT_AMOUNT
        - INVALID_MARKETPLACE_FIELDS
        - INVALID_MARKETPLACE_COMMISSION
        - INVALID_MARKETPLACE_COMMISSION
        - INVALID_MARKETPLACE_FIELDS
        - INVALID_MARKETPLACE_PRODUCTS_STRUCTURE
        - INVALID_INSTALLMENTS_AMOUNT
        - INVALID_INSTALLMENTS_PRODUCT
        - INVALID_FAST_REFUND_PARAMETER
        - FAST_REFUND_NOT_AVAILABLE
        - IRN_ERROR_BOTH_PRODUCTS_AND_MARKETPLACE_V1_NOT_ALLOWED
    IrnRefundRequestId:
      description: Уникальный идентификатор запроса для запроса IRN. Это поле не будет отправлено, если ваша учетная запись не настроена на его получение. Пожалуйста, свяжитесь с нами для получения дополнительной информации.
      x-description-lang:
        en: Unique request identifier for IRN request. This field will not be sent unless your account is configured on our side to receive it. Please contact us for more information.
      type: string
      example: 800d45c7-70c4-4107-ac7c-29bf03cdab63
    RefundSuccessStatusResponse:
      type: object
      properties:
        payuPaymentReference:
          $ref: '#/components/schemas/PayuPaymentReference'
        code:
          type: number
          enum:
            - 200
        message:
          type: string
          enum:
            - Confirmed
            - Order already confirmed
            - OK
        status:
          $ref: '#/components/schemas/IrnResponseStatus'
        refundRequestId:
          $ref: '#/components/schemas/IrnRefundRequestId'
    IrnClientAlreadyAuthStatusResponse:
      type: object
      properties:
        code:
          type: number
          example: 202
        message:
          type: string
          example: Order already cancelled
        payuPaymentReference:
          $ref: '#/components/schemas/PayuPaymentReference'
        status:
          type: string
          example: ALREADY_CANCELLED
    IrnClientErrorsStatusResponse:
      type: object
      properties:
        code:
          $ref: '#/components/schemas/4xxResponseCode'
        message:
          $ref: '#/components/schemas/ResponseMessage'
        payuPaymentReference:
          $ref: '#/components/schemas/PayuPaymentReference'
        status:
          $ref: '#/components/schemas/IrnResponseStatus'
    IrnServerErrorsStatusResponse:
      type: object
      properties:
        code:
          $ref: '#/components/schemas/5xxResponseCode'
        message:
          $ref: '#/components/schemas/ResponseMessage'
        payuPaymentReference:
          $ref: '#/components/schemas/PayuPaymentReference'
        status:
          $ref: '#/components/schemas/IrnResponseStatus'
    PaymentStatus:
      type: string
      example: PAYMENT_AUTHORIZED
      enum:
        - IN_PROGRESS
        - REVERSED
        - CARD_NOTAUTHORIZED
        - WAITING_PAYMENT
        - COMPLETE
        - PAYMENT_AUTHORIZED
        - REFUND
        - CANCELED
        - CASH
        - TEST
        - FRAUD
        - INVALID
      description: |
        Текущий статус платежа. Возможные значения:
          * `NOT_FOUND`- не существующий/незавершенный заказ
          * `WAITING_PAYMENT`- заказ оформлен и ожидается оплата
          * `CARD_NOTAUTHORIZED`- карта, используемая для оплаты, не была авторизована
          * `IN_PROGRESS`- оплата авторизована, заказ находится в процессе утверждения
          * `PAYMENT_AUTHORIZED`- оплата авторизована, заказ одобрен
          * `COMPLETE`- готовый заказ (оплачивается/доставляется)
          * `FRAUD`- ордер на подозрение в мошенничестве
          * `INVALID`- неверные данные, введенные клиентом
          * `TEST`- тестовый заказ
          * `CASH`- заказ с наложенным платежом
          * `REVERSED`- заказ отменен, деньги на счете клиента разблокированы
          * `REFUND`- возврат заказа, возвращенный на счет клиента
      x-description-lang:
        en: |
          Current payment status. Possible values:
            * `NOT_FOUND` - not existing/unfinished order
            * `WAITING_PAYMENT` - the order has been placed and payment is waiting
            * `CARD_NOTAUTHORIZED` - the card used for payment has not been authorized
            * `IN_PROGRESS` - payment has been authorized, the order is in approval process
            * `PAYMENT_AUTHORIZED` - payment authorized, order approved
            * `COMPLETE` - finished order (charged/delivered)
            * `FRAUD` - fraud suspect order
            * `INVALID` - invalid data entered by the customer
            * `TEST` - test order
            * `CASH` - order with cash on delivery
            * `REVERSED` - order reversed, money unlocked in the customer account
            * `REFUND` - order refund, returned to the customer account
    YpmnBindingIdResponse:
      type: object
      properties:
        ypmnBindingId:
          description: Токен привязки карты(в случае упрощенного сценария), SberPay, T-Pay, СБП, карты не РФ отправляется при `PAYMENT_AUTHORIZED` и `COMPLETE` транзакции если токен был успешно создан
          type: string
          example: ab2bb91a-0012-4129-a2bf-cd18418bc726
    AuthorizationWithYpmnTokenResource:
      allOf:
        - $ref: '#/components/schemas/AuthorizationResource'
        - type: object
          properties:
            storedCredentials:
              $ref: '#/components/schemas/YpmnBindingIdResponse'
    StatusSuccessResponse:
      type: object
      properties:
        paymentStatus:
          $ref: '#/components/schemas/PaymentStatus'
        payuPaymentReference:
          $ref: '#/components/schemas/PayuPaymentReference'
        code:
          type: number
          enum:
            - 200
        message:
          type: string
          enum:
            - Success
        authorizations:
          description: |
            <span class="attention">Не предоставляется по умолчанию, для отправки данного блока необходимо обратиться в службу поддержки</span>
          type: array
          items:
            allOf:
              - $ref: '#/components/schemas/AuthorizationWithYpmnTokenResource'
              - type: object
                properties:
                  code:
                    type: string
                    description: |
                      [Код ошибки](#tag/response-codes)
                  message:
                    type: string
                    description: |
                      [Сообщение ошибки](#tag/response-codes), соответствующее коду ошибки в `code`
                  customerMessage:
                    type: string
                    description: |
                      [Сообщение для плательщика](#tag/response-codes), соответствующее коду ошибки в `code`
    404ResponseCode:
      type: number
      enum:
        - 404
      example: 404
      description: Payment not found response
    NotFoundMessage:
      type: string
      example: Payment not found
    NotFoundResponse:
      type: object
      properties:
        code:
          $ref: '#/components/schemas/404ResponseCode'
        message:
          $ref: '#/components/schemas/NotFoundMessage'
    PayuPayoutReference:
      description: Внутренний идентификатор выплаты в системе Your Payments
      x-description-lang:
        en: This is our internal payout identifier
      type: string
      example: '123'
    PayoutStatus:
      type: string
      enum:
        - SUCCESS
        - PENDING
        - FAILED
      description: Статус операции выплаты
      x-description-lang:
        en: Payout operation status
    PayoutAmountValue:
      description: Сумма, которая будет переведена
      x-description-lang:
        en: Amount that will be transferred
      anyOf:
        - type: string
        - type: number
          format: double
      example: 5.66
      minimum: 0
      exclusiveMinimum: true
    PayoutAmount:
      description: Объект, содержащий информацию о сумме выплаты
      x-description-lang:
        en: Object containing information about the payout amount
      type: object
      properties:
        currency:
          $ref: '#/components/schemas/Currency'
        value:
          $ref: '#/components/schemas/PayoutAmountValue'
      required:
        - currency
        - value
    PayoutMerchantCommission:
      description: Размер комиссии продавца
      x-description-lang:
        en: Merchant commission amount
      type: number
      format: double
      example: 5.66
      minimum: 0
    PayoutPayeeCommission:
      description: Сумма комиссии получателя
      x-description-lang:
        en: Payee commission amount
      type: number
      format: double
      example: 2.66
      minimum: 0
    PayoutCommission:
      description: Объект, содержащий информацию о комиссии выплаты
      x-description-lang:
        en: Object containing information about the payout commission
      type: object
      properties:
        merchant:
          $ref: '#/components/schemas/PayoutMerchantCommission'
        payee:
          $ref: '#/components/schemas/PayoutPayeeCommission'
    MerchantPayoutReference:
      description: Допускаются только a-z, A-Z, 0-9, тире и подчеркивание.
      x-description-lang:
        en: Only a-z, A-Z, 0-9, dash and underscore are allowed
      type: string
      example: '896782'
      minLength: 1
    PayoutDescription:
      description: Детали выплаты
      x-description-lang:
        en: Details of payout
      type: string
      maxLength: 255
      example: Description of payout
    PayoutRecipientIndividual:
      type: object
      title: Individual Type
      properties:
        type:
          type: string
          enum:
            - individual
            - business
          description: Тип получателя
          x-description-lang:
            en: Recipient type
          minLength: 1
        email:
          type: string
          example: example@email.com
          description: Электронный адрес получателя
          x-description-lang:
            en: Recipient's email
          minLength: 1
        city:
          description: Город получателя
          x-description-lang:
            en: Recipient's city
          type: string
          example: Moscow
          minLength: 1
        address:
          description: Адрес получателя
          x-description-lang:
            en: Recipient's address
          type: string
          example: Sector 2
          minLength: 1
        postalCode:
          type: string
          example: '510002'
          description: Почтовый индекс получателя
          x-description-lang:
            en: Recipient's postal code
          minLength: 1
        countryCode:
          type: string
          example: RU
          description: Код страны получателя
          x-description-lang:
            en: Recipient's country code
          minLength: 1
        firstName:
          description: Имя получателя
          x-description-lang:
            en: Recipient's first name.
          type: string
          example: John
          minLength: 1
        lastName:
          description: Фамилия получателя
          x-description-lang:
            en: Recipient's last name.
          type: string
          example: Doe
          minLength: 1
      required:
        - type
    PayoutRecipientBusiness:
      type: object
      title: Business Type
      properties:
        type:
          type: string
          enum:
            - individual
            - business
          description: Тип получателя
          x-description-lang:
            en: Recipient type
          minLength: 1
        email:
          type: string
          example: example@email.com
          description: Электронный адрес получателя
          x-description-lang:
            en: Recipient's email
          minLength: 1
        city:
          description: Город получателя
          x-description-lang:
            en: Recipient's city
          type: string
          example: Bucharest
          minLength: 1
        address:
          description: Адрес получателя
          x-description-lang:
            en: Recipient's address
          type: string
          example: Sector 2
          minLength: 1
        postalCode:
          type: string
          example: '510002'
          description: Почтовый индекс получателя
          x-description-lang:
            en: Recipient's postal code
          minLength: 1
        countryCode:
          type: string
          example: RU
          description: Код страны получателя
          x-description-lang:
            en: Recipient's country code
          minLength: 1
        name:
          description: Название получателя
          x-description-lang:
            en: Recipient's name.
          type: string
          example: Doe
          minLength: 1
      required:
        - type
        - email
        - city
        - address
        - postalCode
        - countryCode
        - name
    PayoutRecipient:
      description: Объект, содержащий информацию о получателе
      x-description-lang:
        en: Object containing recipient info
      type: object
      discriminator:
        propertyName: type
        mapping:
          individual: '#/components/schemas/PayoutRecipientIndividual'
          business: '#/components/schemas/PayoutRecipientBusiness'
      anyOf:
        - $ref: '#/components/schemas/PayoutRecipientIndividual'
        - $ref: '#/components/schemas/PayoutRecipientBusiness'
    PayoutDestinationResponse:
      description: Объект, содержащий информацию о пункте назначения
      x-description-lang:
        en: Object containing destination info
      type: object
      properties:
        type:
          type: string
          enum:
            - card
            - token
            - spb
          description: Тип значения
          x-description-lang:
            en: Destination type
          minLength: 1
        recipient:
          $ref: '#/components/schemas/PayoutRecipient'
    PayoutSourceSender:
      description: Реквизиты отправителя для выплаты.
      x-description-lang:
        en: This is the sender details for the payout.
      type: object
      properties:
        firstName:
          type: string
          description: Имя отправителя
          x-description-lang:
            en: Sender First Name
          example: John
          minLength: 1
        lastName:
          type: string
          description: Фамилия отправителя
          x-description-lang:
            en: Sender Last Name
          example: John
          minLength: 1
        email:
          type: string
          description: Адрес электронной почты отправителя
          x-description-lang:
            en: Sender e-mail address
          example: senderEmail@mail.com
          minLength: 1
        phone:
          type: string
          description: Телефон отправителя
          x-description-lang:
            en: Sender phone
          example: '0764111111'
          minLength: 1
    PayoutSource:
      description: Источник, из которого будет получена сумма выплаты. В настоящее время для этого поля поддерживается только значение "merchantBalance"
      x-description-lang:
        en: This is the source from which the payout amount will be retrieved. The only value supported for now for this field is "merchantBalance"
      type: object
      properties:
        type:
          type: string
          enum:
            - merchantBalance
          description: Источник выплаты
          x-description-lang:
            en: Payout Source
          minLength: 1
        sender:
          $ref: '#/components/schemas/PayoutSourceSender'
      required:
        - type
    PayoutResponseObject:
      type: object
      properties:
        payuPayoutReference:
          $ref: '#/components/schemas/PayuPayoutReference'
        payoutStatus:
          $ref: '#/components/schemas/PayoutStatus'
        amount:
          $ref: '#/components/schemas/PayoutAmount'
        merchantCode:
          $ref: '#/components/schemas/MerchantCode'
        commission:
          $ref: '#/components/schemas/PayoutCommission'
        merchantPayoutReference:
          $ref: '#/components/schemas/MerchantPayoutReference'
        description:
          $ref: '#/components/schemas/PayoutDescription'
        destination:
          $ref: '#/components/schemas/PayoutDestinationResponse'
        source:
          $ref: '#/components/schemas/PayoutSource'
      required:
        - payuPayoutReference
        - payoutStatus
        - amount
        - merchantCode
        - commission
        - merchantPayoutReference
        - description
        - destination
        - source
    PaginationPrev:
      type: string
      example: /v4/payout?startDate=2021-04-12T16:40:00-04:00&endDate=2021-04-17T16:40:00-04:00&page=1
      description: Получить предыдущую страницу с результатами
      x-description-lang:
        en: Get previous page with results
    PaginationNext:
      type: string
      example: /v4/payout?startDate=2021-04-12T16:40:00-04:00&endDate=2021-04-17T16:40:00-04:00&page=2
      description: Получить следующую страницу с результатами
      x-description-lang:
        en: Get next page with results
    PaginationLast:
      type: string
      example: /v4/payout?startDate=2021-04-12T16:40:00-04:00&endDate=2021-04-17T16:40:00-04:00&page=25
      description: Получить последнюю страницу с результатами
      x-description-lang:
        en: Get last page with results
    SuccessResponseStatus:
      type: string
      example: A text representing the status of the response
      enum:
        - SUCCESS
    PayoutHistorySuccessResponse:
      type: object
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/PayoutResponseObject'
        _links:
          description: Ссылки навигации по страницам, используемые для получения всех выплат, запрошенных изначально, поскольку каждый запрос API ограничен 50 элементами. URL-адрес из «следующего» узла должен вызываться, пока он существует. Когда он больше не приходит в ответ, это означает, что вы находитесь на последней странице, и все выплаты были получены.
          x-description-lang:
            en: Page navigation links used to retrieve all the payouts requested initially, as each API request is limited to maximum 50 items. The url from "next" node should be called as long as it exists. When it no longer comes in the response, it means that you are on the last page and all the payouts were retrieved.
          type: object
          properties:
            prev:
              $ref: '#/components/schemas/PaginationPrev'
            next:
              $ref: '#/components/schemas/PaginationNext'
            last:
              $ref: '#/components/schemas/PaginationLast'
        code:
          $ref: '#/components/schemas/2xxResponseCode'
        message:
          $ref: '#/components/schemas/ResponseMessage'
        status:
          $ref: '#/components/schemas/SuccessResponseStatus'
      required:
        - items
        - _links
        - code
        - message
        - status
    401ResponseCode:
      type: number
      enum:
        - 401
      example: 401
      description: Неверный код запроса (http-код, который также возвращается в заголовках)
      x-description-lang:
        en: A bad request code (http code that is also returned in headers)
    ErrorMessage:
      description: Причина, по которой запрос не выполнен.
      x-description-lang:
        en: Reason why request failed.
      type: string
      example: A text message with details about processing result or with some message error
    UnauthorizedRequestStatus:
      type: string
      example: INVALID_CREDENTIALS
      enum:
        - INVALID_CREDENTIALS
    PayoutUnauthorizedResponse:
      type: object
      properties:
        code:
          $ref: '#/components/schemas/401ResponseCode'
        message:
          $ref: '#/components/schemas/ErrorMessage'
        status:
          $ref: '#/components/schemas/UnauthorizedRequestStatus'
    429ResponseCode:
      type: number
      enum:
        - 429
      example: 429
      description: Неверный код запроса (http-код, который также возвращается в заголовках)
      x-description-lang:
        en: A bad request code (http code that is also returned in headers)
    LimitRequestStatus:
      type: string
      example: LIMIT_CALLS_EXCEEDED
      enum:
        - LIMIT_CALLS_EXCEEDED
    PayoutTooManyRequestResponse:
      type: object
      properties:
        code:
          $ref: '#/components/schemas/429ResponseCode'
        message:
          $ref: '#/components/schemas/ErrorMessage'
        status:
          $ref: '#/components/schemas/LimitRequestStatus'
    502ResponseCode:
      type: number
      enum:
        - 502
      example: 502
      description: Неверный код ответа шлюза
      x-description-lang:
        en: Bad Gateway Response Code
    BadGatewayResponse:
      type: object
      properties:
        code:
          $ref: '#/components/schemas/502ResponseCode'
        message:
          $ref: '#/components/schemas/ErrorMessage'
    400ResponseCode:
      type: number
      enum:
        - 400
      example: 400
      description: Код ошибки 400, неправильный запрос (http-код, который также возвращается в заголовках)
      x-description-lang:
        en: A bad request code (http code that is also returned in headers)
    PayoutHistoryClientErrorMessage:
      description: Причина, по которой запрос не выполнен.
      x-description-lang:
        en: Reason why request failed.
      enum:
        - Invalid start date
        - Invalid end date
        - Start date can not be greater than current date
        - Start date can not be greater than end date
        - Invalid merchant codes
        - Invalid page
        - Invalid merchant
      type: string
      example: A text message with details about processing result or with some message error
    PayoutClientErrorStatus:
      enum:
        - INVALID_REQUEST_STRUCTURE
        - INVALID_REQUEST
      type: string
      example: A text representing the status of the response
    PayoutHistoryClientErrorResponse:
      properties:
        code:
          $ref: '#/components/schemas/400ResponseCode'
        message:
          $ref: '#/components/schemas/PayoutHistoryClientErrorMessage'
        status:
          $ref: '#/components/schemas/PayoutClientErrorStatus'
    500ResponseCode:
      type: number
      enum:
        - 500
      example: 500
      description: Произошла ошибка при обработке запроса (http-код, который также возвращается в заголовках)
      x-description-lang:
        en: Some error occurred trying to process request (http code that is also returned in headers)
    InternalErrorMessage:
      description: Причина, по которой запрос не выполнен.
      x-description-lang:
        en: Reason why request failed.
      type: string
      example: A text message with details about processing result or with some message error
      enum:
        - Internal server error
    InternalErrorStatus:
      type: string
      example: A text representing the status of the response
      enum:
        - INTERNAL_ERROR
    PayoutServerErrorsResponse:
      type: object
      properties:
        code:
          $ref: '#/components/schemas/500ResponseCode'
        message:
          $ref: '#/components/schemas/InternalErrorMessage'
        status:
          $ref: '#/components/schemas/InternalErrorStatus'
    CardObject:
      type: object
      description: |
        Используется при наличии у отправителя средств полного номера карты получателя.

        <span class="attention">Внимание, хранение, передача и обработка полного номера карты требует от отправителя сертификации согласно правилам PCI DSS</span>
      properties:
        cardNumber:
          anyOf:
            - type: string
            - type: number
          description: Номер карты
          x-description-lang:
            en: Card number
          example: '4111111111111111'
      required:
        - cardNumber
    CardDestination:
      type: object
      properties:
        type:
          type: string
          enum:
            - card
            - token
            - spb
          description: Вид передачи данных карты
          x-description-lang:
            en: Destination type
          minLength: 1
        card:
          $ref: '#/components/schemas/CardObject'
        recipient:
          $ref: '#/components/schemas/PayoutRecipient'
      required:
        - type
        - card
        - recipient
    TokenObject:
      type: object
      description: Используется в случае, если ранее получатель средств изъявил согласие на сохранение карты (данные хранятся в защищенном хранилище на стороне Your Payments) и отправитель запросил токен карты
      properties:
        tokenHash:
          type: string
          description: |
            <span class="info">[Как сохранить карту и получить токен](#tag/token-api)</span>
          x-description-lang:
            en: Token
          example: d41d8cd98f00b204e9800998ecf8427e
          minLength: 1
      required:
        - tokenHash
    TokenDestination:
      type: object
      properties:
        type:
          type: string
          enum:
            - card
            - token
            - spb
          description: Вид передачи данных карты
          x-description-lang:
            en: Destination type
          minLength: 1
        token:
          $ref: '#/components/schemas/TokenObject'
        recipient:
          $ref: '#/components/schemas/PayoutRecipient'
      required:
        - type
        - token
        - recipient
    SbpObject:
      type: object
      description: Используется при выплате через СБП при наличии у отправителя номера телефона получателя.
      properties:
        phoneNumber:
          type: string
          description: Номер телефона
          x-description-lang:
            en: Phone number
          example: '79991234567'
        bankId:
          type: string
          description: |
            ID банка получателя

            <span class="info">[Получение списка банков](#tag/payouts-api/paths/~1v4~1payout~1banks/get)</span>
          x-description-lang:
            en: |
              Recipient Bank ID

              <span class="info">[Get banks list](#tag/payouts-api/paths/~1v4~1payout~1banks/get)</span>
          example: '10000000001'
      required:
        - phoneNumber
        - bankId
    SbpDestination:
      type: object
      properties:
        type:
          type: string
          enum:
            - card
            - token
            - spb
          description: Вид передачи данных карты
          x-description-lang:
            en: Destination type
          minLength: 1
        sbp:
          $ref: '#/components/schemas/SbpObject'
        recipient:
          $ref: '#/components/schemas/PayoutRecipient'
      required:
        - type
        - sbp
        - recipient
    PayoutDestination:
      description: Объект, содержащий информацию о пункте назначения
      x-description-lang:
        en: Object containing destination info
      type: object
      discriminator:
        propertyName: type
        mapping:
          card: '#/components/schemas/CardDestination'
          token: '#/components/schemas/TokenDestination'
          sbp: '#/components/schemas/SbpDestination'
      anyOf:
        - $ref: '#/components/schemas/CardDestination'
        - $ref: '#/components/schemas/TokenDestination'
        - $ref: '#/components/schemas/SbpDestination'
    PayoutRequest:
      type: object
      properties:
        merchantPayoutReference:
          $ref: '#/components/schemas/MerchantPayoutReference'
        amount:
          $ref: '#/components/schemas/PayoutAmount'
        description:
          $ref: '#/components/schemas/PayoutDescription'
        destination:
          $ref: '#/components/schemas/PayoutDestination'
        source:
          $ref: '#/components/schemas/PayoutSource'
      required:
        - merchantPayoutReference
        - amount
        - description
        - destination
        - source
    PayoutResponseStatus:
      type: string
      description: Текст, представляющий статус ответа
      x-description-lang:
        en: A text representing the status of the response
      enum:
        - SUCCESS
        - GW_PENDING
        - GW_ERROR
    PayoutSuccessResponse:
      allOf:
        - $ref: '#/components/schemas/PayoutResponseObject'
        - type: object
          properties:
            code:
              $ref: '#/components/schemas/2xxResponseCode'
            message:
              $ref: '#/components/schemas/ResponseMessage'
            status:
              $ref: '#/components/schemas/PayoutResponseStatus'
          required:
            - code
            - message
            - status
    PayoutClientErrorMessage:
      description: Причина, по которой запрос не выполнен.
      x-description-lang:
        en: Reason why request failed.
      enum:
        - Invalid merchant
        - The merchant does not have the needed setup
        - Invalid amount
        - Not enough balance
        - Invalid card number
        - Invalid merchantPayoutReference
        - Invalid currency
        - Invalid content type
        - No parameters specified!
        - No amount specified
        - Invalid amount specified
        - No amount currency specified
        - No amount value specified
        - No merchant reference specified
        - No description specified
        - No destination specified
        - Invalid destination
        - No destination type specified
        - No destination card specified
        - Invalid destination card
        - No destination cardNumber specified
        - No token specified
        - Invalid destination type
        - No destination recipient specified
        - Invalid destination recipient
        - No destination recipient type specified
        - No destination recipient email specified
        - No destination recipient city specified
        - No destination recipient address specified
        - No destination recipient postalCode specified
        - No destination recipient countryCode specified
        - No destination recipient first and last name specified
        - 'Invalid destination recipient specified: name is not allowed'
        - No destination recipient name specified
        - 'Invalid destination recipient specified: first or last name is not allowed'
        - Invalid destination recipient type
        - No source specified
        - Invalid source
        - No source type specified
        - Invalid source type
      type: string
      example: A text message with details about processing result or with some message error
    PayoutClientErrorResponse:
      type: object
      properties:
        code:
          $ref: '#/components/schemas/400ResponseCode'
        message:
          $ref: '#/components/schemas/PayoutClientErrorMessage'
        status:
          $ref: '#/components/schemas/PayoutClientErrorStatus'
    BalanceAmount:
      description: Сумма остатка
      x-description-lang:
        en: Balance amount
      type: number
      format: double
      example: 5.66
      minimum: 0
      exclusiveMinimum: true
    BalanceTimestamp:
      type: string
      description: Дата и время, когда был рассчитан баланс. В формате [ISO_8601]( https://en.wikipedia.org/wiki/ISO_8601 )
      x-description-lang:
        en: Date time when balance was calculated. Must be in [ISO_8601 format](https://en.wikipedia.org/wiki/ISO_8601)
      format: ISO_8601 date-time
      example: '2021-06-01 10:20:01'
      minLength: 1
    PayoutBalanceItem:
      type: object
      properties:
        merchantCode:
          $ref: '#/components/schemas/MerchantCode'
        currency:
          $ref: '#/components/schemas/Currency'
        value:
          $ref: '#/components/schemas/BalanceAmount'
        timestamp:
          $ref: '#/components/schemas/BalanceTimestamp'
      required:
        - merchantCode
        - currency
        - value
        - timestamp
    PayoutBalanceSuccessResponse:
      type: object
      properties:
        items:
          type: array
          items:
            $ref: '#/components/schemas/PayoutBalanceItem'
        code:
          $ref: '#/components/schemas/2xxResponseCode'
        message:
          $ref: '#/components/schemas/ResponseMessage'
        status:
          $ref: '#/components/schemas/SuccessResponseStatus'
    BalanceClientErrorMessage:
      description: Reason why request failed.
      enum:
        - Invalid merchant codes
        - Invalid min value
        - Invalid max value
        - Max value should be greater than the min value
        - Invalid currency
        - Invalid merchant
      type: string
      example: A text message with details about processing result or with some message error
    BalanceClientErrorResponse:
      properties:
        code:
          $ref: '#/components/schemas/400ResponseCode'
        message:
          $ref: '#/components/schemas/BalanceClientErrorMessage'
        status:
          $ref: '#/components/schemas/PayoutClientErrorStatus'
    SBPReciverCheckSuccessResponse:
      type: object
      title: Успешная обработка запроса на отчет
      x-title-lang:
        en: Balance successfully fetched
      properties:
        result:
          type: string
          description: Результат проверки
          example: approved
          enum:
            - approved
            - failed
            - requested
          x-description-lang:
            en: A check result
        code:
          $ref: '#/components/schemas/2xxResponseCode'
        message:
          $ref: '#/components/schemas/ResponseMessage'
        status:
          $ref: '#/components/schemas/SuccessResponseStatus'
        fioNSPK:
          type: string
          description: ФИО
          example: Иванов Иван Иванович
    SBPReciverCheckAsyncResponse:
      type: object
      title: Асинхронный ответ, повторите запрос позже
      x-title-lang:
        en: Async response
      properties:
        result:
          type: string
          description: Результат проверки
          example: requested
          enum:
            - approved
            - failed
            - requested
          x-description-lang:
            en: A check result
        code:
          $ref: '#/components/schemas/2xxResponseCode'
        message:
          $ref: '#/components/schemas/ResponseMessage'
        status:
          $ref: '#/components/schemas/SuccessResponseStatus'
        fioNSPK:
          type: string
          description: ФИО
          example: Иванов Иван Иванович
    SBPReciverCheckFailResponse:
      type: object
      title: Успешная обработка запроса на отчет, отрицательный результат проверки
      x-title-lang:
        en: Success response with failed result
      properties:
        result:
          type: string
          description: Результат проверки
          example: failed
          enum:
            - approved
            - failed
            - requested
          x-description-lang:
            en: A check result
        code:
          $ref: '#/components/schemas/2xxResponseCode'
        message:
          $ref: '#/components/schemas/ResponseMessage'
        status:
          $ref: '#/components/schemas/SuccessResponseStatus'
        fioNSPK:
          type: string
          description: ФИО
          example: Иванов Иван Иванович
    PayoutBanksItem:
      type: object
      properties:
        BankName:
          description: Наименование банка
          x-description-lang:
            en: Bank's name
          type: string
          example: Газпромбанк
        BankID:
          description: ID банка
          x-description-lang:
            en: Bank's ID
          type: string
          example: 100000000001
    200ResponseCode:
      type: number
      enum:
        - 200
      description: Код успеха (http-код, который также возвращается в заголовках)
      x-description-lang:
        en: A Success code (http code that is also returned in headers)
    PayoutBanksSuccessResponse:
      type: object
      properties:
        list:
          type: array
          items:
            $ref: '#/components/schemas/PayoutBanksItem'
        code:
          $ref: '#/components/schemas/200ResponseCode'
        message:
          type: string
          example: Success
          enum:
            - Success
        status:
          type: string
          example: SUCCESS
          enum:
            - SUCCESS
    CardInfoItem:
      type: object
      properties:
        binNumber:
          type: string
          example: 411111
          description: BIN(первые 6 цифр) запрашиваемой карты
          x-description-lang:
            en: BIN(first 6 digits) of the requested card
        cardScheme:
          type: string
          example: VISA
          enum:
            - VISA
            - MASTERCARD
            - MIR
            - UNIONPAY
        issuerBank:
          type: string
          example: BRD Groupe Societe Generale
          description: Название банка, выпустившего карту
          x-description-lang:
            en: Name of the bank that issued the card
        issuerCountryCode:
          type: string
          example: RU
          description: Код страны ISO 3166-1 alpha-2, где была выпущена карта
          x-description-lang:
            en: ISO 3166-1 alpha-2 country code where the card was issued
        cardType:
          type: string
          example: DEBIT
          enum:
            - DEBIT
            - CREDIT
            - PREPAID
            - UNKNOWN
        cardProfile:
          type: string
          enum:
            - CONSUMER
            - COMMERCIAL
            - UNKNOWN
            - BOTH
          example: CONSUMER
        cardProgram:
          type: string
          example: Name of the program
          description: Название программы, в которой зарегистрирована карта. Приходит пустым, если карта не зарегистрирована ни в одном.
          x-description-lang:
            en: Name of the program in which the card is enrolled. Comes empty if the card is not enrolled in any.
        installmentOptions:
          type: array
          items:
            type: object
            properties:
              installmentNumber:
                type: number
                example: 1
                description: Number of installments for this installment plan
        paymentMethod:
          type: string
          example: CCVISAMC
          description: Способ оплаты, который будет использоваться для платежей с этой карты
          x-description-lang:
            en: The payment method to be used for payments with this card
      required:
        - binNumber
        - cardScheme
        - issuerBank
        - issuerCountryCode
        - cardType
        - cardProfile
        - cardProgram
        - installmentOptions
        - paymentMethod
    CardInfoSuccessResponse:
      allOf:
        - type: object
          properties:
            code:
              $ref: '#/components/schemas/2xxResponseCode'
            message:
              $ref: '#/components/schemas/ResponseMessage'
            status:
              $ref: '#/components/schemas/SuccessResponseStatus'
          required:
            - code
            - message
            - status
        - $ref: '#/components/schemas/CardInfoItem'
    ClientErrorResponseMessage:
      type: string
      example: Parameter 'x' must be a string
      description: Текстовое сообщение с подробной информацией об ошибке клиента
      x-description-lang:
        en: A text message with details about the client error
    BasicClientErrorsResponse:
      type: object
      properties:
        code:
          $ref: '#/components/schemas/4xxResponseCode'
        message:
          $ref: '#/components/schemas/ClientErrorResponseMessage'
    GeneralReportItem:
      type: object
      properties:
        startDate:
          type: string
          example: '2023-11-01'
          description: Дата начала отчета
          x-description-lang:
            en: Report start date
        endDate:
          type: string
          example: '2023-11-14'
          description: Дата окончания отчета
          x-description-lang:
            en: Report end date
        periodLength:
          type: string
          example: day
          enum:
            - hour
            - day
            - week
            - month
        periods:
          type: array
          items:
            type: object
            properties:
              startDate:
                type: string
                example: '2023-11-01 00:00:00'
                description: Дата начала периода
                x-description-lang:
                  en: Period start date
              endDate:
                type: string
                example: '2023-11-01 23:59:59'
                description: Дата окончания периода
                x-description-lang:
                  en: Period end date
              paymentMethods:
                type: array
                items:
                  type: object
                  properties:
                    method:
                      type: string
                      example: CCVISAMC
                      description: Метод оплаты
                      x-description-lang:
                        en: Payment method
                    pending:
                      type: string
                      example: '2'
                      description: Количество транзакций со статусом pending
                    pendingAmount:
                      type: string
                      example: '450.00'
                      description: Сумма транзакций со статусом pending
                    authorized:
                      type: string
                      example: '3'
                      description: Количество транзакций со статусом authorized
                    authorizedAmount:
                      type: string
                      example: '350.00'
                      description: Сумма транзакций со статусом authorized
                    completed:
                      type: string
                      example: '4'
                      description: Количество транзакций со статусом completed
                    completedAmount:
                      type: string
                      example: '650.00'
                      description: Сумма транзакций со статусом completed
                    reversed:
                      type: string
                      example: '1'
                      description: Количество транзакций со статусом reversed
                    reversedAmount:
                      type: string
                      example: '250.00'
                      description: Сумма транзакций со статусом reversed
                    refund:
                      type: string
                      example: '1'
                      description: Количество транзакций со статусом refund
                    refundAmount:
                      type: string
                      example: '100.00'
                      description: Сумма транзакций со статусом refund
      required:
        - startDate
        - endDate
        - periodLength
    GeneralReportSuccessResponse:
      allOf:
        - type: object
          properties:
            code:
              $ref: '#/components/schemas/2xxResponseCode'
            message:
              $ref: '#/components/schemas/ResponseMessage'
            status:
              $ref: '#/components/schemas/SuccessResponseStatus'
          required:
            - code
            - message
            - status
        - $ref: '#/components/schemas/GeneralReportItem'
    ChartUpdateReportSuccessResponse:
      allOf:
        - type: object
          properties:
            labels:
              type: array
              items:
                type: string
              example:
                - '2023-11-01'
                - '2023-11-02'
                - '2023-11-03'
            chartsData:
              type: array
              items:
                type: object
              example:
                завершен:
                  - '100'
                  - '200'
                  - '150'
            totalData:
              type: array
              items:
                type: object
              example:
                завершен:
                  count: '5'
                  amount: '450'
                  name: завершен
    ReportStatusesValues:
      type: string
      description: YES - включен, NO или отсутствует в запросе - не учитывается
      x-description-lang:
        en: YES - included, NO or not present in the request - not taken into account
      enum:
        - 'YES'
        - 'NO'
    OrdersReportSuccessResponseProperties:
      type: object
      required:
        - startDate
        - endDate
        - byConfirmation
      properties:
        startDate:
          type: string
          example: '2024-05-01T00:00:00+03:00'
          description: Дата начала отчета
          x-description-lang:
            en: Report start date
        endDate:
          type: string
          example: '2024-05-14T00:23:00+03:00'
          description: Дата окончания отчета
          x-description-lang:
            en: Report end date
        byConfirmation:
          type: string
          example: 'YES'
          description: Признак выбора даты фильтрации
          x-description-lang:
            en: Filtering date selection flag
          enum:
            - 'YES'
            - 'NO'
    OrdersReportSuccessResponseDataItemProperties:
      type: object
      properties:
        merchantPaymentReference:
          maxLength: 100
          type: string
          example: '1715749955353375903'
          description: Номер платежа в системе ТСП
          x-description-lang:
            en: Merchant order number
        payuPaymentReference:
          type: string
          example: '5374892697124'
          description: Номер транзакции в системе YPMN
          x-description-lang:
            en: System order number
        status:
          type: string
          example: SUCCESS
          description: Статус операции
          x-description-lang:
            en: Order status
          enum:
            - PENDING
            - AUTHRECEIVED
            - COMPLETE
            - REFUND
            - REVERSED
            - CANCELLED
        amount:
          type: string
          example: '450'
          description: Сумма операции
          x-description-lang:
            en: Order amount
        currency:
          type: string
          example: RUB
          description: Валюта операции
          x-description-lang:
            en: Order currency
        commission:
          type: string
          example: '9'
          description: Удержанная комиссия с операции
          x-description-lang:
            en: Withheld commission from the order
        paymentDate:
          type: string
          example: '2023-11-01 10:00:00'
          description: Дата создания операции
          x-description-lang:
            en: Order creation date
        captureDate:
          type: string
          example: '2023-11-01 10:01:00'
          description: Дата проведения операции
          x-description-lang:
            en: Date of payment
    OrdersReportSuccessResponse:
      allOf:
        - type: object
          properties:
            code:
              $ref: '#/components/schemas/2xxResponseCode'
          required:
            - code
        - $ref: '#/components/schemas/OrdersReportSuccessResponseProperties'
        - type: object
          properties:
            data:
              type: array
              items:
                allOf:
                  - $ref: '#/components/schemas/OrdersReportSuccessResponseDataItemProperties'
    OrdersReportV2SuccessResponse:
      allOf:
        - type: object
          properties:
            code:
              $ref: '#/components/schemas/2xxResponseCode'
          required:
            - code
        - $ref: '#/components/schemas/OrdersReportSuccessResponseProperties'
        - type: object
          required:
            - totalPages
            - pageNumber
          properties:
            totalPages:
              type: integer
              description: Количество страниц в отчете
              example: 10
            pageNumber:
              type: integer
              description: Текущая страница в отчете
              example: 1
            data:
              type: array
              items:
                allOf:
                  - $ref: '#/components/schemas/OrdersReportSuccessResponseDataItemProperties'
                  - type: object
                    properties:
                      merchantCode:
                        type: string
                        description: Код мерчанта по данной операции. Указывается в случае передачи в запросе `merchantCodes`
                        example: MERCH_1
                      operationType:
                        type: string
                        description: Тип операции
                        enum:
                          - Payment
                          - Refund
                          - ChargeBack
                          - Payout
                        example: Payment
                      paymentSystem:
                        type: string
                        nullable: true
                        description: Платежная система в случае оплаты карты. `null`, если это не оплата картой
                        example: Visa
                      paymentAmount:
                        type: number
                        format: float
                        description: Сумма к возмещению
                        example: 12.34
    OrderDetailsPointsDetails:
      type: array
      description: Информация об использованных баллах лояльности.
      x-description-lang:
        en: Information on loyatly points used
      items:
        type: object
        properties:
          type:
            type: string
            example: BNS
          amount:
            anyOf:
              - type: number
              - type: string
            example: '5'
    OrderDetailsRefundInfo:
      type: array
      description: Подробная информация о возвратах
      x-description-lang:
        en: refund detailed information
      items:
        type: object
        properties:
          chargeback:
            type: string
            example: 'AUTO: IRN'
            description: Причина опротестования операции (если возврат является результатом оспоренной операции)
            x-description-lang:
              en: Reason for disputing the transaction (if the refund is the result of a disputed transaction)
          payuPaymentReference:
            type: string
            example: '240118'
            description: Номер операции возврата
            x-description-lang:
              en: Return transaction number
          amount:
            type: string
            example: '200.00'
            description: Общая сумма возврата
            x-description-lang:
              en: Total refund amount
          rrn:
            type: string
            example: 0f2a39ef-e296-4b0a-8068-90b5167b
            description: RRN возврата, если он обработан
            x-description-lang:
              en: RRN of the return if processed
          requestDate:
            type: string
            example: '2024-06-14T11:37:57+00:00'
            description: Дата и время фиксации запроса на возврат
            x-description-lang:
              en: Date and time of recording the return request
          refundDate:
            type: string
            example: '2024-06-14T11:37:57+00:00'
            description: Дата и время обработки возврата
            x-description-lang:
              en: Date and time of return processing
          requestedBy:
            type: string
            example: IRN
            description: Инициатор возврата
            x-description-lang:
              en: Return Initiator
          products:
            type: array
            items:
              type: object
              properties:
                sku:
                  type: string
                  maxLength: 400
                  example: '38408'
                  description: Артикул товара
                  x-description-lang:
                    en: Product code
                name:
                  type: string
                  example: Diff for refund order products
                unitPrice:
                  type: string
                  example: '-200'
                  description: Цена за единицу продукта
                  x-description-lang:
                    en: Price per unit of product
                quantity:
                  type: string
                  example: '1'
                  description: Количество возвращенного товара
                  x-description-lang:
                    en: Quantity of refunded goods
                additionalDetails:
                  type: string
                  example: Additional product details
                  description: Дополнительная информация о товаре
                  x-description-lang:
                    en: Additional information about the product
                vatAmount:
                  type: string
                  example: '0'
                  description: Сумма НДС товара
                  x-description-lang:
                    en: VAT amount of the product
    OrderDetailsOrderData:
      type: object
      description: Информация о заказе
      x-description-lang:
        en: Information on the order
      required:
        - orderDate
        - payuPaymentReference
        - merchantPaymentReference
        - status
        - currency
        - amount
      properties:
        orderDate:
          type: string
          example: '2018-08-02T12:00:14+00:00'
          description: |
            Дата, отправленная продавцом в заголовке `X-Header-Date` при [создание платежа](./#tag/payment-api/paths/~1v4~1payments~1authorize/post) в формате ISO_8601
          x-description-lang:
            en: Date sent by the merchant when creating the payment in the ISO_8601 datetime format
        payuPaymentReference:
          type: string
          example: '6742343'
          description: Референс платежа, присвоенный Your Payments платежу
          x-description-lang:
            en: Payment reference assigned by YPMN to the payment
        merchantPaymentReference:
          $ref: '#/components/schemas/MerchantPaymentReference'
        status:
          type: string
          enum:
            - PAYMENT_AUTHORIZED
            - PAYMENT_RECEIVED
            - TEST
            - CASH
            - COMPLETE
            - REVERSED
            - REFUND
            - SUSPECT
            - PENDING
            - PROCESSING
            - INVALID
            - '-'
          description: |
            Указывает текущий статус заказа, по которому отправлено уведомление. Возможные значения:

              * `PAYMENT_AUTHORIZED` - оплата авторизована, заказ одобрен
              * `PAYMENT_RECEIVED` - оплата банковским переводом завершена
              * `TEST` - тестовый заказ
              * `CASH` - заказ с наложенным платежом
              * `COMPLETE` - оплата завершена, доставка подтверждена продавцом
              * `REVERSED` - заказ отменен, деньги на счете клиента разблокированы
              * `REFUND` - возврат заказа, возвращенный на счет клиента
              * `SUSPECT` - ордер на подозрение в мошенничестве
              * `PENDING` - ожидающий подтверждения заказ
              * `PROCESSING` - оплата авторизована, заказ находится в процессе утверждения
              * `INVALID` - неверные данные, введенные клиентом
              * `-` - незавершенный заказ*

            _*При оплате СБП последовательность статусов отличается:_
              * `-` - заказ создан и оплачен
              * `COMPLETE` - оплата завершена, операция готова к взаиморасчетам

            <span class="attention">`COMPLETE` - Единственный статус подтверждающий успешное завершение операции и  готовность со стороны Your Payments произвести расчеты. (В свою очередь статус PAYMENT_AUTHORIZED таким  свойством не обладает и передача товаров/услуг по факту его получения - категорически не рекомендуется)</span>
          x-description-lang:
            en: |
              Indicates the current status of the order for which the notification is sent.Possible values:
                * `PAYMENT_AUTHORIZED` - payment authorized, order approved
                * `PAYMENT_RECEIVED` - wired transfer payment is finished
                * `TEST` - test order
                * `CASH` - order with cash on delivery
                * `COMPLETE` - payment finished, delivery confirmed by merchant
                * `REVERSED` - order reversed, money unlocked in the customer account
                * `REFUND` - order refund, returned to the customer account
                * `SUSPECT` - fraud suspect order
                * `PENDING` - pending order waiting for approval
                * `PROCESSING` - payment has been authorized, the order is in approval process
                * `INVALID` - invalid data entered by the customer
                * `-` - unfinished order
        currency:
          type: string
          example: RUB
          description: Валюта, используемая для создания транзакции
          x-description-lang:
            en: The currency used to create the transaction
        amount:
          anyOf:
            - type: number
              format: double
            - type: string
          example: '352.30'
          description: Первоначальная сумма сделки (включая стоимость платежей в рассрочку, если применимо)
          x-description-lang:
            en: Original amount of the transaction (including installments cost if applicable)
        commission:
          anyOf:
            - type: number
              format: double
            - type: string
          example: '25.10'
        loyaltyPointsAmount:
          anyOf:
            - type: number
              format: double
            - type: string
        loyaltyPointsDetails:
          $ref: '#/components/schemas/OrderDetailsPointsDetails'
        refundInfo:
          $ref: '#/components/schemas/OrderDetailsRefundInfo'
        refundRequestId:
          type: string
          format: uuid
          example: 2149a875-8984-471a-b4a4-b74fa28b59ff
          description: |
            Если `status` либо `REFUND` или `REVERSED`, это содержит уникальный идентификатор, который был отправлен в 
            ответе API «Возврат платежа». Дополнительные сведения об этом значении см. в документации 
            «[Возврат платежа](#tag/payment-api/paths/~1v4~1payments~1refund/post)».

            Это поле не будет отправлено, если ваша учетная запись не настроена на его получение. Пожалуйста, свяжитесь 
            с нами для получения дополнительной информации. Если ваша учетная запись уже настроена, вы можете включить 
            (или отключить) получение этого поля в любое время через CPanel на странице «Управление учетной записью» > 
            «Настройки учетной записи» > «Настройки IPN».
          x-description-lang:
            en: |
              If the `status` is either `REFUND` or `REVERSED`, this contains the unique ID that was sent in the "Refund a payment" API response.
              Please refer to the ["Refund a payment"](#tag/payment-api/paths/~1v4~1payments~1refund/post) documentation for more information regarding this value.

              This field will not be sent unless your account is configured on our side to receive it. Please contact us for more information.
              If your account is already configured, you may enable (or disable) receiving this field anytime via CPanel, in the Account Management > Account settings > IPN settings page.
    OrderDetailsCardDetails:
      type: object
      description: Данные карты.
      x-description-lang:
        en: Card data
      properties:
        bin:
          anyOf:
            - type: number
            - type: string
          example: '424242'
          description: Первые 6 номеров использованной карты
          x-description-lang:
            en: First 6 numbers of the used card
        owner:
          type: string
          example: John Doe
          description: Владелец карты, как это указано на ней.
          x-description-lang:
            en: Owner of the card as it appears on it.
        pan:
          type: string
          example: 4242-xxxx-xxxx-2466
          description: Зашифрованный номер карты
          x-description-lang:
            en: Obfuscated card number
        type:
          type: string
          example: Visa
          description: Тип карты
          x-description-lang:
            en: Card type
        cardIssuerBank:
          type: string
          example: EST
    OrderDetailsPaymentResult:
      type: object
      description: Платежная информация.
      x-description-lang:
        en: Payment information
      properties:
        paymentMethod:
          type: string
          example: CCVISAMC
          description: Способ оплаты, используемый для транзакции. Для транзакций Masterpass это будет CCVISAMC|MASTERPASS.
          x-description-lang:
            en: Payment method used for the transaction. For Masterpass transactions it would be CCVISAMC|MASTERPASS
        paymentDate:
          type: string
          example: '2018-08-02T12:00:14+00:00'
          description: Дата обработки платежа в формате даты и времени ISO_8601.
          x-description-lang:
            en: Date when the payment was processed in the ISO_8601 datetime format
        captureDate:
          type: string
          example: '2018-08-02T12:00:14+00:00'
          description: Дата обработки платежа в формате даты и времени ISO_8601.
          x-description-lang:
            en: Date when the payment was processed in the ISO_8601 datetime format
        cardProgramName:
          type: string
          example: World
          description: Название программы рассрочки, к которой привязана карта
          x-description-lang:
            en: Name of the installments program the card is associated to
        installmentsNumber:
          anyOf:
            - type: number
              format: integer
            - type: string
          example: '5'
        authCode:
          type: string
          example: 324534
        merchantId:
          type: string
          example: A891911
        rrn:
          type: string
          example: 43534654
        cardDetails:
          $ref: '#/components/schemas/OrderDetailsCardDetails'
        paymentBankShortName:
          type: string
          example: BRD
        serviceProcessingType:
          type: string
          example: TSP
    OrderDetailsDeliveryDetails:
      type: object
      description: Идентификационные данные транзакции.
      x-description-lang:
        en: Identity data of the transaction
      properties:
        firstName:
          type: string
          example: John
        lastName:
          type: string
          example: Doe
        companyName:
          type: string
          example: Example Inc.
        addressLine1:
          type: string
          example: example address 1
        addressLine2:
          type: string
          example: example address 2
        city:
          type: string
          example: Bucharest
        state:
          type: string
          example: Ilfov
        zipCode:
          type: string
          example: '900169'
        countryCode:
          type: string
          example: ro
        phone:
          type: string
          example: '+407101082567'
        email:
          type: string
          example: example@email.com
    OrderDetailsClientData:
      type: object
      description: Данные клиента.
      x-description-lang:
        en: Client data
      properties:
        billing:
          $ref: '#/components/schemas/Billing'
        delivery:
          $ref: '#/components/schemas/OrderDetailsDeliveryDetails'
        ip:
          type: string
          example: 192.168.24.1
          description: IP-адрес клиента
          x-description-lang:
            en: IP address of the client
        ipCountry:
          type: string
          example: Russia
          description: Связанная страна IP-адреса
          x-description-lang:
            en: Associated country of the IP address
    IpnProducts:
      type: array
      items:
        type: object
        properties:
          name:
            type: string
            example: Product name
          sku:
            description: Артикул товара (см. [вики]([https://en.wikipedia.org/wiki/Stock_keeping_unit])). Имейте в виду, что если Your Payments получит один и тот же артикул для разных продуктов одного и того же продавца, последний  будет рассматриваться в другой области платформы (включая авторизацию)
            x-description-lang:
              en: Sku of the product [see wiki](https://en.wikipedia.org/wiki/Stock_keeping_unit). Be aware that if YPMN will receive same sku for different producuts of the same merchant last one will be consider in different area of the platform (including authorization)
            type: string
            maxLength: 400
            example: Code_XYZ
          additionalDetails:
            description: Дополнительная информация о товаре
            x-description-lang:
              en: Additional information about product.
            type: string
            example: Product additional information
          unitPrice:
            description: Цена за единицу продукта
            x-description-lang:
              en: Unit price of the product
            anyOf:
              - type: number
                format: double
              - type: string
            example: '21'
          quantity:
            anyOf:
              - type: number
                format: integer
              - type: string
            example: '2'
          vatAmount:
            description: Сумма НДС товара.
            x-description-lang:
              en: VAT amount of the product.
            anyOf:
              - type: number
              - type: string
            example: '12'
    FX:
      type: object
      description: Этот объект отправляется от Your Payments к ТСП с информацией о курсе валют при оплате зарубежными картами.
      x-description-lang:
        en: This node is sent by YPMN with exchange rate information for foreign card payments
      required:
        - authorized
      properties:
        currency:
          description: Валюта оплаты зарубежной картой
          x-description-lang:
            en: Foreign card payment currency
          type: string
          example: USD
        exchangeRate:
          description: Курс обмена на момент оплаты или возврата
          x-description-lang:
            en: Exchange rate at the time of payment or refund
          type: string
          example: '5.66'
        amountRUB:
          description: Сумма в рублях
          x-description-lang:
            en: Foreign card payment currency
          anyOf:
            - type: number
              format: double
            - type: string
          example: '566.00'
        amountCur:
          description: Сумма оплаты в валюте
          x-description-lang:
            en: Payment amount in currency
          anyOf:
            - type: number
              format: double
            - type: string
          example: '100.00'
    OrderDetailsRequest:
      type: object
      properties:
        dateTime:
          type: string
          example: '2018-08-02T12:00:14+00:00'
          description: Значение даты и времени на момент отправки запроса
          x-description-lang:
            en: Date time value for the moment of the sending of the request
        orderData:
          $ref: '#/components/schemas/OrderDetailsOrderData'
        paymentResult:
          $ref: '#/components/schemas/OrderDetailsPaymentResult'
        client:
          $ref: '#/components/schemas/OrderDetailsClientData'
        products:
          $ref: '#/components/schemas/IpnProducts'
        authorization:
          $ref: '#/components/schemas/AuthorizationResource'
        fx:
          $ref: '#/components/schemas/FX'
    TokenDetails:
      type: object
      properties:
        token:
          type: string
          description: Строка токена, сгенерированная для данного заказа (refNo)
          x-description-lang:
            en: Token string generated for the given order (refNo)
          example: d41d8cd98f00b204e9800998ecf8427e
        cardUniqueIdentifier:
          description: Уникальный идентификатор карты
          x-description-lang:
            en: Card unique identifier
          type: string
          example: e9fc5107db302fa8373efbedf55a1614b5a3125ee59fe274e7dc802930d68f6d
        expirationDate:
          type: string
          description: Это дата истечения срока действия токена. Должен быть в формате [ISO_8601 ГГГГ-ММ-ДД](https://en.wikipedia.org/wiki/ISO_8601)
          x-description-lang:
            en: It is the date when the token expires. Should be in [ISO_8601 YYYY-MM-DD format](https://en.wikipedia.org/wiki/ISO_8601).
          format: date
          example: '2023-06-10'
        cardHolderName:
          description: Имя держателя карты
          x-description-lang:
            en: The card holder name
          type: string
          example: Test
        tokenStatus:
          description: Статус токена
          x-description-lang:
            en: The token status
          type: string
          enum:
            - ACTIVE
            - EXPIRED
            - CANCELED
        lastFourDigits:
          type: string
          example: '1111'
          description: Последние четыре цифры запрашиваемой карты
          x-description-lang:
            en: Last four digits of the requested card
        cardExpirationDate:
          type: string
          example: '2023-08-31'
          description: Срок действия запрашиваемой карты
          x-description-lang:
            en: Expiration date of the requested card
      required:
        - token
        - cardUniqueIdentifier
        - expirationDate
        - cardHolderName
        - tokenStatus
        - lastFourDigits
        - cardExpirationDate
    TokenSuccessResponse:
      allOf:
        - type: object
          properties:
            code:
              $ref: '#/components/schemas/2xxResponseCode'
            message:
              $ref: '#/components/schemas/ResponseMessage'
            status:
              $ref: '#/components/schemas/SuccessResponseStatus'
          required:
            - code
            - message
            - status
        - $ref: '#/components/schemas/TokenDetails'
    GetTokenDetails:
      type: object
      properties:
        token:
          type: string
          description: Строка токена, сгенерированная для данного заказа (refNo)
          x-description-lang:
            en: Token string generated for the given order (refNo)
          example: d41d8cd98f00b204e9800998ecf8427e
        cardUniqueIdentifier:
          description: Уникальный идентификатор карты
          x-description-lang:
            en: Card unique identifier
          type: string
          example: e9fc5107db302fa8373efbedf55a1614b5a3125ee59fe274e7dc802930d68f6d
        expirationDate:
          type: string
          description: Это дата истечения срока действия токена. Должен быть в формате [ISO_8601 ГГГГ-ММ-ДД](https://en.wikipedia.org/wiki/ISO_8601).
          x-description-lang:
            en: It is the date when the token expires. Should be in [ISO_8601 YYYY-MM-DD format](https://en.wikipedia.org/wiki/ISO_8601).
          format: date
          example: '2023-06-10'
        cardHolderName:
          description: Имя держателя карты
          x-description-lang:
            en: The card holder name
          type: string
          example: Test
        tokenStatus:
          description: Статус токена
          x-description-lang:
            en: The token status
          type: string
          enum:
            - ACTIVE
            - EXPIRED
            - CANCELED
        lastFourDigits:
          type: string
          example: '1111'
          description: Последние четыре цифры запрашиваемой карты. Если в вашей учетной записи включена сетевая токенизация, то это будут последние четыре цифры карты сетевого токена.
          x-description-lang:
            en: Last four digits of the requested card. If network tokenization is enabled on your account, then it will be the network token card's last four digits
        cardExpirationDate:
          type: string
          example: '2023-08-31'
          description: Срок действия запрашиваемой карты. Если в вашей учетной записи включена сетевая токенизация, это будет дата истечения срока действия карты сетевого токена
          x-description-lang:
            en: Expiration date of the requested card. If network tokenization is enabled on your account, then it will be the network token card's expiration date
        networkToken:
          type: object
          description: Доступно, только если в вашей учетной записи включена сетевая токенизация и доступен сетевой токен.
          x-description-lang:
            en: Available only if network tokenization is enabled on your account and only if a network token is available.
          properties:
            lastFourDigits:
              type: string
              example: '1111'
              description: Последние четыре цифры сетевого токена
              x-description-lang:
                en: Last four digits of the network token
            expirationDate:
              type: string
              example: '2023-08-31'
              description: Срок действия сетевого токена
              x-description-lang:
                en: The expiration date of the network token
      required:
        - token
        - cardUniqueIdentifier
        - expirationDate
        - cardHolderName
        - tokenStatus
        - lastFourDigits
        - cardExpirationDate
    GetTokenSuccessResponse:
      allOf:
        - type: object
          properties:
            code:
              $ref: '#/components/schemas/2xxResponseCode'
            message:
              $ref: '#/components/schemas/ResponseMessage'
            status:
              $ref: '#/components/schemas/SuccessResponseStatus'
          required:
            - code
            - message
            - status
        - $ref: '#/components/schemas/GetTokenDetails'
    IpnLoyaltyPointsDetails:
      type: array
      description: Этот объект отправляется в вебхуке от Your Payments с информацией об использованных баллах лояльности.
      x-description-lang:
        en: This node is sent by YPMN on the IPN request with information on loyatly points used
      items:
        type: object
        properties:
          type:
            type: string
            example: BNS
          amount:
            anyOf:
              - type: number
              - type: string
            example: '5'
    IPNOrderRefundInfo:
      type: object
      description: Подробная информация о заказе на возврат
      x-description-lang:
        en: refund order detailed information
      properties:
        chargeback:
          type: string
          example: the merchandise does not match the merchant's description.
          description: Chargeback reason of refund order.
    IpnOrderData:
      type: object
      description: Этот объект отправляется в вебхуке от Your Payments с информацией о транзакции
      x-description-lang:
        en: This node is sent by YPMN on the IPN request with information on the order
      required:
        - orderDate
        - payuPaymentReference
        - merchantPaymentReference
        - status
        - currency
        - amount
      properties:
        orderDate:
          type: string
          example: '2018-08-02T12:00:14+00:00'
          description: |
            Дата, отправленная продавцом в заголовке `X-Header-Date` при [создание платежа](./#tag/payment-api/paths/~1v4~1payments~1authorize/post) в формате ISO_8601
          x-description-lang:
            en: Date sent by the merchant when creating the payment in the ISO_8601 datetime format
        payuPaymentReference:
          type: string
          example: '6742343'
          description: Номер заказа в системе Your Payments
          x-description-lang:
            en: Payment reference assigned by YPMN to the payment
        merchantPaymentReference:
          $ref: '#/components/schemas/MerchantPaymentReference'
        status:
          type: string
          enum:
            - PAYMENT_AUTHORIZED
            - PAYMENT_RECEIVED
            - TEST
            - CASH
            - COMPLETE
            - REVERSED
            - REFUND
            - SUSPECT
            - PENDING
            - PROCESSING
            - INVALID
            - '-'
          description: |
            Указывает текущий статус заказа, по которому отправлено уведомление. Возможные значения:

              * `PAYMENT_AUTHORIZED` - оплата авторизована, заказ одобрен
              * `PAYMENT_RECEIVED` - оплата банковским переводом завершена
              * `TEST` - тестовый заказ
              * `CASH` - заказ с наложенным платежом
              * `COMPLETE` - оплата завершена, доставка подтверждена продавцом
              * `REVERSED` - заказ отменен, деньги на счете клиента разблокированы
              * `REFUND` - возврат заказа, возвращенный на счет клиента
              * `SUSPECT` - ордер на подозрение в мошенничестве
              * `PENDING` - ожидающий подтверждения заказ
              * `PROCESSING` - оплата авторизована, заказ находится в процессе утверждения
              * `INVALID` - неверные данные, введенные клиентом
              * `-` - незавершенный заказ*

            _*При оплате СБП последовательность статусов отличается:_
              * `-` - заказ создан и оплачен
              * `COMPLETE` - оплата завершена, операция готова к взаиморасчетам

            <span class="attention">`COMPLETE` - Единственный статус подтверждающий успешное завершение операции и  готовность со стороны Your Payments произвести расчеты. (В свою очередь статус PAYMENT_AUTHORIZED таким  свойством не обладает и передача товаров/услуг по факту его получения - категорически не рекомендуется)</span>
          x-description-lang:
            en: |
              Indicates the current status of the order for which the notification is sent.Possible values:
                * `PAYMENT_AUTHORIZED` - payment authorized, order approved
                * `PAYMENT_RECEIVED` - wired transfer payment is finished
                * `TEST` - test order
                * `CASH` - order with cash on delivery
                * `COMPLETE` - payment finished, delivery confirmed by merchant
                * `REVERSED` - order reversed, money unlocked in the customer account
                * `REFUND` - order refund, returned to the customer account
                * `SUSPECT` - fraud suspect order
                * `PENDING` - pending order waiting for approval
                * `PROCESSING` - payment has been authorized, the order is in approval process
                * `INVALID` - invalid data entered by the customer
                * `-` - unfinished order
        currency:
          type: string
          example: RUB
          description: Валюта, используемая для создания транзакции
          x-description-lang:
            en: The currency used to create the transaction
        amount:
          anyOf:
            - type: number
              format: double
            - type: string
          example: '352.30'
          description: Первоначальная сумма сделки (включая стоимость платежей в рассрочку, если применимо)
          x-description-lang:
            en: Original amount of the transaction (including installments cost if applicable)
        commission:
          anyOf:
            - type: number
              format: double
            - type: string
          example: '25.10'
        loyaltyPointsAmount:
          anyOf:
            - type: number
              format: double
            - type: string
        loyaltyPointsDetails:
          $ref: '#/components/schemas/IpnLoyaltyPointsDetails'
        refundInfo:
          $ref: '#/components/schemas/IPNOrderRefundInfo'
        refundRequestId:
          type: string
          format: uuid
          example: 2149a875-8984-471a-b4a4-b74fa28b59ff
          description: |
            Если `status` либо `REFUND` или `REVERSED`, это содержит уникальный идентификатор, который был отправлен в 
            ответе API «Возврат платежа». Дополнительные сведения об этом значении см. в документации 
            «[Возврат платежа](#tag/payment-api/paths/~1v4~1payments~1refund/post)».

            Это поле не будет отправлено, если ваша учетная запись не настроена на его получение. Пожалуйста, свяжитесь 
            с нами для получения дополнительной информации. Если ваша учетная запись уже настроена, вы можете включить 
            (или отключить) получение этого поля в любое время через CPanel на странице «Управление учетной записью» > 
            «Настройки учетной записи» > «Настройки IPN».
          x-description-lang:
            en: |
              If the `status` is either `REFUND` or `REVERSED`, this contains the unique ID that was sent in the "Refund a payment" API response.
              Please refer to the ["Refund a payment"](#tag/payment-api/paths/~1v4~1payments~1refund/post) documentation for more information regarding this value.

              This field will not be sent unless your account is configured on our side to receive it. Please contact us for more information.
              If your account is already configured, you may enable (or disable) receiving this field anytime via CPanel, in the Account Management > Account settings > IPN settings page.
    IpnCardDetails:
      type: object
      description: Этот объект отправляется в вебхуках от Your Payments с данными карты.
      x-description-lang:
        en: This node is sent by YPMN on the IPN request with the relevant card data
      properties:
        bin:
          anyOf:
            - type: number
            - type: string
          example: '424242'
          description: Первые 6 номеров использованной карты
          x-description-lang:
            en: First 6 numbers of the used card
        owner:
          type: string
          example: John Doe
          description: Владелец карты, как это указано на ней.
          x-description-lang:
            en: Owner of the card as it appears on it.
        pan:
          type: string
          example: 4242-xxxx-xxxx-2466
          description: Зашифрованный номер карты
          x-description-lang:
            en: Obfuscated card number
        type:
          type: string
          example: Visa
          description: Тип карты
          x-description-lang:
            en: Card type
        cardIssuerBank:
          type: string
          example: EST
    IpnPaymentResult:
      type: object
      description: Этот объект отправляется в вебхуке от Your Payments с информацией о платеже информацией.
      x-description-lang:
        en: This node is sent by YPMN on the IPN request with relevant payment information
      properties:
        paymentMethod:
          type: string
          example: CCVISAMC
          description: Способ оплаты, используемый для транзакции. Для транзакций Masterpass это будет CCVISAMC|MASTERPASS.
          x-description-lang:
            en: Payment method used for the transaction. For Masterpass transactions it would be CCVISAMC|MASTERPASS
        paymentDate:
          type: string
          example: '2018-08-02T12:00:14+00:00'
          description: Дата обработки платежа в формате даты и времени ISO_8601.
          x-description-lang:
            en: Date when the payment was processed in the ISO_8601 datetime format
        captureDate:
          type: string
          example: '2018-08-02T12:00:14+00:00'
          description: Дата обработки платежа в формате даты и времени ISO_8601.
          x-description-lang:
            en: Date when the payment was processed in the ISO_8601 datetime format
        cardProgramName:
          type: string
          example: World
          description: Название программы рассрочки, к которой привязана карта
          x-description-lang:
            en: Name of the installments program the card is associated to
        installmentsNumber:
          anyOf:
            - type: number
              format: integer
            - type: string
          example: '5'
        authCode:
          type: string
          example: 324534
        merchantId:
          type: string
          example: A891911
        rrn:
          type: string
          example: 43534654
        cardDetails:
          $ref: '#/components/schemas/IpnCardDetails'
        paymentBankShortName:
          type: string
          example: BRD
        serviceProcessingType:
          type: string
          example: TSP
    IpnDeliveryDetails:
      type: object
      description: Этот объект отправляется в вебхуке от Your Payments по [выплатам](./#tag/payouts)
      x-description-lang:
        en: This node is sent by YPMN on the IPN request with the identity data of the transaction
      properties:
        firstName:
          type: string
          example: John
        lastName:
          type: string
          example: Doe
        companyName:
          type: string
          example: Example Inc.
        addressLine1:
          type: string
          example: example address 1
        addressLine2:
          type: string
          example: example address 2
        city:
          type: string
          example: Bucharest
        state:
          type: string
          example: Ilfov
        zipCode:
          type: string
          example: '900169'
        countryCode:
          type: string
          example: ro
        phone:
          type: string
          example: '+407101082567'
        email:
          type: string
          example: example@email.com
    IpnClientData:
      type: object
      description: Этот объект отправляется в вебхуке от Your Payments клиента.
      x-description-lang:
        en: This node is sent by YPMN on the IPN request with the relevant client data
      properties:
        billing:
          $ref: '#/components/schemas/Billing'
        delivery:
          $ref: '#/components/schemas/IpnDeliveryDetails'
        ip:
          type: string
          example: 192.168.24.1
          description: IP-адрес клиента
          x-description-lang:
            en: IP address of the client
        ipCountry:
          type: string
          example: Russia
          description: Связанная страна IP-адреса
          x-description-lang:
            en: Associated country of the IP address
    IpnRequest:
      type: object
      properties:
        orderData:
          $ref: '#/components/schemas/IpnOrderData'
        paymentResult:
          $ref: '#/components/schemas/IpnPaymentResult'
        client:
          $ref: '#/components/schemas/IpnClientData'
        products:
          $ref: '#/components/schemas/IpnProducts'
        dateTime:
          type: string
          example: '20190114143730'
          description: Значение даты и времени на момент отправки запроса в формате «ГГГГММДДЧЧММСС»
          x-description-lang:
            en: Date time value for the moment of the sending of the request in 'YYYYMMDDHHMMSS' format
        authorization:
          $ref: '#/components/schemas/AuthorizationWithYpmnTokenResource'
        fx:
          $ref: '#/components/schemas/FX'
    PayoutOrderData:
      type: object
      description: Этот объект отправляется в вебхуке Your Payments выплатам
      x-description-lang:
        en: This node is sent by YPMN on the payout request with information on the order
      required:
        - orderDate
        - payuPayoutReference
        - merchantPayoutReference
        - currency
        - amount
        - status
        - message
      properties:
        orderDate:
          type: string
          example: '2018-08-02T12:00:14+00:00'
          description: |
            Дата, отправленная продавцом в заголовке `X-Header-Date` при [создание платежа](./#tag/payment-api/paths/~1v4~1payments~1authorize/post) в формате ISO_8601
          x-description-lang:
            en: Date sent by the merchant when creating the payment in the ISO_8601 datetime format
        payuPayoutReference:
          type: string
          example: '6742343'
          description: Референс платежа, присвоенный Your Payments платежу
          x-description-lang:
            en: Payment reference assigned by YPMN to the payment
        merchantPayoutReference:
          $ref: '#/components/schemas/MerchantPayoutReference'
        currency:
          $ref: '#/components/schemas/Currency'
        amount:
          anyOf:
            - type: number
              format: double
            - type: string
          example: '352.30'
          description: Сумма выплаты
          x-description-lang:
            en: Payout amount
        status:
          type: string
          enum:
            - PENDING
            - WAITING
            - SENT
            - CANCELLED
            - INCOMPLETE_DATA
            - FINALIZED
            - RETURNED
          description: |
            Указывает текущий статус заказа, по которому отправлено уведомление. Возможные значения:

              * `PENDING` - Выплата в процессе
              * `WAITING` - Выплата ожидает обработки
              * `SENT` - Выплата ожидает обработки
              * `CANCELLED` - Выплата отменена
              * `INCOMPLETE_DATA` - Выплата с неполными данными
              * `FINALIZED` - Выплата завершена
              * `RETURNED` - Выплата возвращена на баланс
          x-description-lang:
            en: |
              Indicates the current status of the order for which the notification is sent.Possible values:

                * `PENDING` - Payout in progress
                * `WAITING` - Payout waiting for processing
                * `SENT` - Payout waiting for processing
                * `CANCELLED` - Payout cancelled
                * `INCOMPLETE_DATA` - Payout with incomplete data
                * `FINALIZED` - Payout completed
                * `RETURNED` - Payout returned to a balance
        message:
          type: string
          example: 003.approved.active
          description: Сообщение с описанием
          x-description-lang:
            en: Message with description
    PayoutPaymentResult:
      type: object
      description: Этот объект отправляется в вебхуках от Your Payments по [выплатам](./#tag/payouts)
      x-description-lang:
        en: This node is sent by YPMN on the IPN request with relevant payment information
      required:
        - paymentMethod
        - paymentDate
        - authCode
        - rrn
        - commission
      properties:
        paymentMethod:
          type: string
          example: PAYOUT
          description: Способ оплаты, используемый для транзакции
          x-description-lang:
            en: Payment method used for the transaction
        paymentDate:
          type: string
          example: '2018-08-02T12:00:14+00:00'
          description: Дата обработки выплаты в формате даты и времени ISO_8601.
          x-description-lang:
            en: Date when the payment was processed in the ISO_8601 datetime format
        authCode:
          type: string
          nullable: true
          example: 324534
        rrn:
          type: string
          nullable: true
          example: 43534654
        commission:
          $ref: '#/components/schemas/PayoutCommission'
    WebhookPayoutRecipient:
      type: object
      required:
        - city
        - address
        - postalCode
        - countryCode
        - clientName
      properties:
        city:
          description: Город получателя
          x-description-lang:
            en: Recipient's city
          type: string
          example: Moscow
          minLength: 1
        address:
          description: Адрес получателя
          x-description-lang:
            en: Recipient's address
          type: string
          example: Sector 2
          minLength: 1
        postalCode:
          type: string
          example: '510002'
          description: Почтовый индекс получателя
          x-description-lang:
            en: Recipient's postal code
          minLength: 1
        countryCode:
          type: string
          example: RU
          description: Код страны получателя
          x-description-lang:
            en: Recipient's country code
          minLength: 1
        clientName:
          description: Имя и Фамилия получателя
          x-description-lang:
            en: Recipient's First and Last Name.
          type: string
          example: testFirstName testLastName
          minLength: 1
    WebhookPayoutRequest:
      type: object
      properties:
        orderData:
          $ref: '#/components/schemas/PayoutOrderData'
        paymentResult:
          $ref: '#/components/schemas/PayoutPaymentResult'
        recipient:
          $ref: '#/components/schemas/WebhookPayoutRecipient'
    SessionsSuccessResponse:
      type: object
      properties:
        sessionId:
          description: Идентификатор сессии (sessionId)
          x-description-lang:
            en: The session id
          format: uuid
          example: 49a88d24-7615-41e8-adc0-fa7ae01bbebu
        merchantCode:
          $ref: '#/components/schemas/MerchantCode'
        createdAt:
          type: string
          description: Дата, когда sessionId был сгенерирован. В формате [ISO_8601 Y-m-d\TH:i:sP](https://en.wikipedia.org/wiki/ISO_8601)
          x-description-lang:
            en: It is the datetime when the sessionId was generated. Should be in [ISO_8601 Y-m-d\TH:i:sP format](https://en.wikipedia.org/wiki/ISO_8601).
          example: '2023-01-15T12:00:00+00:00'
        lifetimeMinutes:
          description: Время жизни сессии в минутах. Значение указывается при отправке запроса на создание sessionId или используется значение по умолчанию
          x-description-lang:
            en: The session lifetime in minutes. This value will be received in the request or it will be the platform default
          format: number
          example: 10
          minimum: 1
          maximum: 60
        code:
          $ref: '#/components/schemas/200ResponseCode'
        message:
          $ref: '#/components/schemas/ResponseMessage'
        status:
          $ref: '#/components/schemas/SuccessResponseStatus'
      required:
        - sessionId
        - merchantCode
        - createdAt
        - lifetimeMinutes
        - code
        - message
        - status
    SessionsClientErrorResponse:
      allOf:
        - type: object
          properties:
            code:
              type: number
              enum:
                - 400
              description: Код ошибки (http-код, который также возвращается в заголовках)
              x-description-lang:
                en: A error code (http code that is also returned in headers)
            message:
              type: string
              example: A text message with details about processing result or with some message error
              description: Текст сообщения с подробностями о результате обработки или сообщением об ошибке
              x-description-lang:
                en: A text message with details about processing result or with some message error
            status:
              type: string
              example: INVALID_REQUEST
              enum:
                - INVALID_REQUEST
          required:
            - code
            - message
            - status
    SessionsServerErrorResponse:
      allOf:
        - type: object
          properties:
            code:
              type: number
              enum:
                - 500
              description: Код ошибки (http-код, который также возвращается в заголовках)
              x-description-lang:
                en: A error code (http code that is also returned in headers)
            message:
              type: string
              example: A text message with details about processing result or with some message error
              description: Текст сообщения с подробностями о результате обработки или сообщением об ошибке
              x-description-lang:
                en: A text message with details about processing result or with some message error
            status:
              type: string
              example: INTERNAL_ERROR
              enum:
                - INTERNAL_ERROR
          required:
            - code
            - message
            - status
    QstAddressZip:
      description: |
        Индекс.

        <span class="info">Строка должна содержать 6 цифр</span>
      type: string
      example: 100000
      minLength: 6
      maxLength: 6
    QstAddressRegion:
      description: Регион
      type: string
      example: г. Москва
      maxLength: 100
    QstAddressCity:
      description: Город
      type: string
      example: г. Москва
      maxLength: 100
    QstAddressStreet:
      description: Улица
      type: string
      example: ул. Арбат
      maxLength: 100
    QstAddressHouse:
      description: Дом
      type: string
      example: д. 10
      maxLength: 100
    QstAddressFlat:
      description: Офис / квартира
      type: string
      example: оф. 123
      maxLength: 100
    QstIdentityDocType:
      description: |
        Тип документа:
          - `PASSPORT` - паспорт РФ,
          - `OTHER` - иной документ, удостоверяющий личность
      type: string
      enum:
        - PASSPORT
        - OTHER
      default: PASSPORT
    QstIdentityDocSeries:
      description: |
        Серия документа

        <span class="info">Для выбранного типа "Паспорт РФ": поле должно содержать 4 цифры</span><br/>
        <span class="info">Для выбранного типа "Иной документ, удостоверяющий личность": поле может содержать до 100 символов</span>
      type: string
      example: 1234
    QstIdentityDocNumber:
      description: |
        Номер документа

        <span class="info">Для выбранного типа "Паспорт РФ": поле должно содержать 6 цифры</span><br/>
        <span class="info">Для выбранного типа "Иной документ, удостоверяющий личность": поле может содержать до 100 символов</span>
      type: string
      example: 123456
    QstIdentityDocIssueDate:
      description: |
        Дата выдачи документа

        <span class="info">Допустимый формат: ГГГГ-ММ-ДД</span>
      type: string
      example: '2020-01-30'
    QstIdentityDocIssuedBy:
      description: Кем выдан документ
      type: string
      example: УФМС России по г. Москве
      maxLength: 100
    QstIdentityDocIssuedByKP:
      description: |
        Кем выдан документ (к/п)

        <span class="info">Для выбранного типа "Паспорт РФ": поле должно быть заполнено в формате `123-456`</span><br/>
        <span class="info">Для выбранного типа "Иной документ, удостоверяющий личность": поле может содержать до 100 символов</span>
      type: string
      example: 123-456
    QstCreateRequest:
      type: object
      properties:
        inn:
          description: Допускаются только цифры
          type: string
          example: 1234567890
          minLength: 10
          maxLength: 12
        schema:
          type: object
          properties:
            foreignName:
              description: |
                Наименование на иностранном языке (если имеется)

                <span class="attention">Необязательное поле, опционально заполняется только для организаций</span>
              type: string
              maxLength: 200
              default: Нет
            phones:
              description: Список телефонов
              type: array
              items:
                type: object
                properties:
                  phone:
                    description: Телефон
                    type: string
                    example: +7 (495) 1234567, доб. 123
                    maxLength: 100
                required:
                  - phone
            emails:
              description: Список email
              type: array
              items:
                type: object
                properties:
                  email:
                    description: Валидный email адрес
                    type: string
                    example: example@ypmn.ru
                    maxLength: 100
                required:
                  - email
            legalAddress:
              description: Юридический адрес
              type: object
              properties:
                zip:
                  $ref: '#/components/schemas/QstAddressZip'
                region:
                  $ref: '#/components/schemas/QstAddressRegion'
                city:
                  $ref: '#/components/schemas/QstAddressCity'
                street:
                  $ref: '#/components/schemas/QstAddressStreet'
                house:
                  $ref: '#/components/schemas/QstAddressHouse'
                flat:
                  $ref: '#/components/schemas/QstAddressFlat'
              required:
                - zip
                - region
                - city
                - street
                - house
            postAddress:
              description: |
                Почтовый адрес

                <span class="attention">Обязательное поле только для ИП</span>
              type: object
              properties:
                isEqualToLegalAddress:
                  description: |
                    Необязательный параметр. Если передано значение `true`, остальные поля не будут учтены, 
                    а в качестве почтового адреса будет использован юридический. Если параметр не передан либо 
                    передано значение `false`, остальные поля обязательны к заполнению.
                  type: boolean
                  default: false
                zip:
                  $ref: '#/components/schemas/QstAddressZip'
                region:
                  $ref: '#/components/schemas/QstAddressRegion'
                city:
                  $ref: '#/components/schemas/QstAddressCity'
                street:
                  $ref: '#/components/schemas/QstAddressStreet'
                house:
                  $ref: '#/components/schemas/QstAddressHouse'
                flat:
                  $ref: '#/components/schemas/QstAddressFlat'
            actualAddress:
              description: Фактический адрес
              type: object
              properties:
                isEqualToLegalAddress:
                  description: |
                    Необязательный параметр. Если передано значение `true`, остальные поля не будут учтены, 
                    а в качестве фактического адреса будет использован юридический. Если параметр не передан либо 
                    передано значение `false`, остальные поля обязательны к заполнению.
                  type: boolean
                  example: true
                  default: false
                zip:
                  $ref: '#/components/schemas/QstAddressZip'
                region:
                  $ref: '#/components/schemas/QstAddressRegion'
                city:
                  $ref: '#/components/schemas/QstAddressCity'
                street:
                  $ref: '#/components/schemas/QstAddressStreet'
                house:
                  $ref: '#/components/schemas/QstAddressHouse'
                flat:
                  $ref: '#/components/schemas/QstAddressFlat'
            ceo:
              description: |
                Данные о руководителе

                <span class="attention">Обязательное поле, заполняется только для организаций</span>
              type: object
              properties:
                citizenship:
                  description: Гражданство
                  type: string
                  default: РФ
                  maxLength: 100
                birthDate:
                  description: |
                    Дата рождения

                    <span class="info">Допустимый формат: ГГГГ-ММ-ДД</span><br/>
                    <span class="info">Допустимый возраст: от 16 до 100 лет</span>
                  type: string
                  example: '2000-01-30'
                birthPlace:
                  description: Место рождения
                  type: string
                  maxLength: 100
                  example: Россия, г. Москва
                identityDoc:
                  description: Документ удостоверяющий личность
                  type: object
                  properties:
                    type:
                      $ref: '#/components/schemas/QstIdentityDocType'
                    series:
                      $ref: '#/components/schemas/QstIdentityDocSeries'
                    number:
                      $ref: '#/components/schemas/QstIdentityDocNumber'
                    issueDate:
                      $ref: '#/components/schemas/QstIdentityDocIssueDate'
                    issuedBy:
                      $ref: '#/components/schemas/QstIdentityDocIssuedBy'
                    issuedByKP:
                      $ref: '#/components/schemas/QstIdentityDocIssuedByKP'
                  required:
                    - series
                    - number
                    - issueDate
                    - issuedBy
                    - issuedByKP
                registrationAddress:
                  description: Адрес регистрации
                  type: string
                  maxLength: 1000
                  example: г. Москва, ул. Ленина, д. 1, кв. 1
              required:
                - birthDate
                - birthPlace
                - identityDoc
                - registrationAddress
            owners:
              description: |
                Список собственников

                <span class="attention">Обязательное поле, заполняется только для организаций</span>
              type: array
              items:
                description: Собственник
                type: object
                properties:
                  owner:
                    description: Имя собственника
                    type: string
                    maxLength: 200
                    example: Иванов Иван Иванович
                  share:
                    description: |
                      Доля собственника

                      <span class="info">Допустимый формат: 50 или 99.99</span>
                    type: string
                    example: 100
                required:
                  - owner
                  - share
            boardOfDirectors:
              description: |
                Совет директоров / наблюдательный совет (состав)

                <span class="attention">Необязательное поле, опционально заполняется только для организаций</span>
              type: string
              maxLength: 5000
              default: Нет
            managementBoard:
              description: |
                Правление (дирекция)

                <span class="attention">Необязательное поле, опционально заполняется только для организаций</span>
              type: string
              maxLength: 5000
              default: Нет
            otherManagementBodies:
              description: |
                Другие органы управления

                <span class="attention">Необязательное поле, опционально заполняется только для организаций</span>
              type: string
              maxLength: 5000
              default: Нет
            addressLocation:
              description: |
                Присутствует ли по месту нахождения юридического лица постоянно действующий исполнительный орган

                <span class="attention">Необязательное поле, опционально заполняется только для организаций</span>
              type: string
              enum:
                - 'YES'
                - 'NO'
              default: 'YES'
            birthDate:
              description: |
                Дата рождения

                <span class="attention">Обязательное поле, заполняется только для ИП</span><br/>
                <span class="info">Допустимый формат: ГГГГ-ММ-ДД</span><br/>
                <span class="info">Допустимый возраст: от 16 до 100 лет</span>
              type: string
              example: '2000-01-30'
            birthPlace:
              description: |
                Место рождения

                <span class="attention">Обязательное поле, заполняется только для ИП</span>
              type: string
              maxLength: 100
              example: Россия, г. Москва
            identityDoc:
              description: |
                Документ удостоверяющий личность

                <span class="attention">Обязательное поле, заполняется только для ИП</span>
              type: object
              properties:
                type:
                  $ref: '#/components/schemas/QstIdentityDocType'
                series:
                  $ref: '#/components/schemas/QstIdentityDocSeries'
                number:
                  $ref: '#/components/schemas/QstIdentityDocNumber'
                issueDate:
                  $ref: '#/components/schemas/QstIdentityDocIssueDate'
                issuedBy:
                  $ref: '#/components/schemas/QstIdentityDocIssuedBy'
                issuedByKP:
                  $ref: '#/components/schemas/QstIdentityDocIssuedByKP'
              required:
                - series
                - number
                - issueDate
                - issuedBy
                - issuedByKP
            bankAccounts:
              description: Список банковских реквизитов
              type: array
              items:
                type: object
                properties:
                  bankAccount:
                    description: Банковские реквизиты
                    type: object
                    properties:
                      bankBIK:
                        description: |
                          БИК

                          <span class="info">Строка должна содержать 9 цифр</span>
                        type: string
                        minLength: 9
                        maxLength: 9
                        example: 123456789
                      bankCorAccount:
                        description: |
                          Кор. счет

                          <span class="info">Строка должна содержать 20 цифр</span>
                        type: string
                        minLength: 20
                        maxLength: 20
                        example: 12345678901234567000
                      bankAccount:
                        description: |
                          Номер счета

                          <span class="info">Строка должна содержать 20 цифр</span>
                        type: string
                        minLength: 20
                        maxLength: 20
                        example: 12345678901234567000
                    required:
                      - bankBIK
                      - bankCorAccount
                      - bankAccount
            license:
              description: |
                Сведения о лицензии на право осуществления деятельности, подлежащей лицензированию: вид, номер, 
                дата выдачи лицензии; кем выдана; срок действия; перечень видов лицензируемой деятельности
              type: string
              maxLength: 5000
              default: Нет
            actionInFavor:
              description: |
                Сведения об основаниях, свидетельствующих о том, что Вы действуете к выгоде другого лица при 
                проведении операций и иных сделок
              type: string
              maxLength: 5000
              default: Нет
            commission:
              description: |
                Вознаграждение Оператора из суммы денежных средств, подлежащих переводу в адрес выгодоприобретателя, 
                Оператором не удерживается
              type: string
              maxLength: 100
              default: Да
          required:
            - phones
            - emails
            - legalAddress
            - actualAddress
            - bankAccounts
      required:
        - inn
        - schema
    QstIdResponse:
      description: ID анкеты
      type: number
      example: 123
    QstFilledStatusResponse:
      description: Статус анкеты
      type: string
      enum:
        - created
        - filled
        - edited
        - review
        - returned
        - declined
        - approved
        - printed
        - exported
        - imported
        - completed
        - removed
      example: filled
    QstCreate200Response:
      type: object
      required:
        - id
        - status
      properties:
        id:
          $ref: '#/components/schemas/QstIdResponse'
        status:
          $ref: '#/components/schemas/QstFilledStatusResponse'
    QstCreate400ErrorMessage:
      description: Причина, по которой запрос не выполнен.
      x-description-lang:
        en: Reason why request failed.
      enum:
        - Invalid request
        - Invalid seller INN
        - No data for seller INN
        - Schema validation error
        - Request size error
      type: string
      example: Schema validation error
    QstCreate400ErrorStatus:
      description: Описание статуса ответа.
      x-description-lang:
        en: A text representing the status of the response.
      enum:
        - INVALID_REQUEST
        - INVALID_SELLER_INN
        - INVALID_SCHEMA
        - SIZE_ERROR
      type: string
      example: INVALID_SCHEMA
    QstCreate400Response:
      type: object
      required:
        - code
        - message
        - status
      properties:
        code:
          $ref: '#/components/schemas/400ResponseCode'
        message:
          $ref: '#/components/schemas/QstCreate400ErrorMessage'
        status:
          $ref: '#/components/schemas/QstCreate400ErrorStatus'
        schemaErrors:
          description: Перечень ошибок в данных анкеты
          type: object
          example:
            owners:
              - owner: Missed field
                share: Missed field
    Qst403Code:
      type: number
      enum:
        - 403
      description: Код ошибки 403, доступ запрещен (http-код, который также возвращается в заголовках)
    Qst403Response:
      type: object
      required:
        - code
        - message
        - status
      properties:
        code:
          $ref: '#/components/schemas/Qst403Code'
        message:
          description: Причина, по которой доступ запрещен.
          enum:
            - Marketplace package is not allowed
            - Qst API is not allowed
          type: string
          example: Qst API is not allowed
        status:
          description: Описание статуса ответа.
          x-description-lang:
            en: A text representing the status of the response.
          enum:
            - FORBIDDEN
          type: string
    QstCompletedStatusResponse:
      description: Статус анкеты
      type: string
      enum:
        - filled
        - returned
        - declined
        - approved
        - printed
        - completed
      example: completed
    QstStatus200Response:
      type: object
      required:
        - id
        - status
        - seller
      properties:
        id:
          $ref: '#/components/schemas/QstIdResponse'
        status:
          $ref: '#/components/schemas/QstCompletedStatusResponse'
        seller:
          description: Информация о продавце
          type: object
          required:
            - name
            - type
            - inn
          properties:
            name:
              description: Наименование продавца
              type: string
              example: ООО Ромашка
            type:
              description: Тип продавца (организация / ИП)
              type: string
              enum:
                - org
                - ip
              example: org
            inn:
              description: ИНН продавца
              type: string
              example: 1234567890
        accounts:
          description: Аккаунты, созданные по этой анкете
          type: array
          items:
            type: object
            required:
              - merchantCode
              - secretKey
            properties:
              merchantCode:
                description: Код мерчанта
                type: string
                example: romash11
              secretKey:
                description: Секретный ключ мерчанта
                type: string
                example: SECRET_KEY
    QstStatus400Response:
      type: object
      required:
        - code
        - message
        - status
      properties:
        code:
          $ref: '#/components/schemas/400ResponseCode'
        message:
          description: Причина, по которой запрос не выполнен.
          x-description-lang:
            en: Reason why request failed.
          enum:
            - Invalid qst id
          type: string
          example: Invalid qst id
        status:
          description: Описание статуса ответа.
          x-description-lang:
            en: A text representing the status of the response.
          enum:
            - INVALID_QST_ID
          type: string
          example: INVALID_QST_ID
    QstStatus404Response:
      type: object
      required:
        - code
        - message
        - status
      properties:
        code:
          type: number
          enum:
            - 404
          example: 404
          description: Код ошибки 404, неправильный запрос (http-код, который также возвращается в заголовках)
          x-description-lang:
            en: A bad request code (http code that is also returned in headers)
        message:
          description: Причина, по которой запрос не выполнен.
          x-description-lang:
            en: Reason why request failed.
          enum:
            - Qst not found
          type: string
          example: Qst not found
        status:
          description: Описание статуса ответа.
          x-description-lang:
            en: A text representing the status of the response.
          enum:
            - NOT_FOUND
          type: string
          example: NOT_FOUND
    QstPrint403Response:
      type: object
      required:
        - code
        - message
        - status
      properties:
        code:
          $ref: '#/components/schemas/Qst403Code'
        message:
          description: Причина, по которой доступ запрещен.
          enum:
            - Marketplace package is not allowed
            - Qst API is not allowed
            - Unavailable action for current status
          type: string
          example: Qst API is not allowed
        status:
          description: Описание статуса ответа.
          x-description-lang:
            en: A text representing the status of the response.
          enum:
            - FORBIDDEN
            - INVALID_QST_ACTION
          type: string
    UsersApiPrivilege200Response:
      type: object
      required:
        - code
        - privilege
      properties:
        code:
          $ref: '#/components/schemas/200ResponseCode'
        privilege:
          description: Перечень групп с привилегиями входящими в группу.
          x-description-lang:
            en: List of groups with privileges included in the group.
          type: object
          properties:
            groupName:
              description: Наименование группы привилегий (имя атрибута соответствует наименованию группы).
              x-description-lang:
                en: The name of the privilege group (the attribute name corresponds to the name of the group).
              type: object
              properties:
                privilegeName:
                  description: Наименование привилегии (имя атрибута соответствует наименованию привилегии).
                  x-description-lang:
                    en: The name of the privilege (the attribute name corresponds to the name of the privilege)
                  type: string
                  example: Account access
    UsersApi400Response:
      type: object
      required:
        - code
        - message
      properties:
        code:
          $ref: '#/components/schemas/400ResponseCode'
        message:
          description: Причины ошибок.
          x-description-lang:
            en: Reason for errors.
          type: string
          example: Информация об ошибке; Информация об ошибке; Информация об ошибке
    UsersApi401UnauthorizedResponse:
      type: object
      properties:
        code:
          $ref: '#/components/schemas/401ResponseCode'
        message:
          $ref: '#/components/schemas/ErrorMessage'
        status:
          $ref: '#/components/schemas/UnauthorizedRequestStatus'
    UsersApiPrivilege:
      type: object
      properties:
        groupName:
          description: Наименование группы привилегий (имя атрибута соответствует наименованию группы).
          x-description-lang:
            en: The name of the privilege group (the attribute name corresponds to the name of the group).
          type: object
          properties:
            privilegeName:
              description: Наименование привилегии (имя атрибута соответствует наименованию привилегии).
              x-description-lang:
                en: The name of the privilege (the attribute name corresponds to the name of the privilege).
              type: boolean
              example: true
    UsersApiRole200Response:
      type: object
      required:
        - code
        - roles
      properties:
        code:
          $ref: '#/components/schemas/200ResponseCode'
        roles:
          description: Перечень ролей назначенных мерчантам.
          x-description-lang:
            en: A list of roles assigned to merchants.
          type: array
          items:
            type: object
            required:
              - merchant
              - roleName
              - roleDescription
              - roleID
              - privilege
            properties:
              merchant:
                description: Код мерчанта.
                x-description-lang:
                  en: Merchant code.
                type: string
                example: PAYU_2
              roleName:
                description: Кодовое имя роли.
                x-description-lang:
                  en: The code name of the role.
                type: string
                example: role_name
              roleDescription:
                description: Описание роли.
                x-description-lang:
                  en: Description of the role.
                type: string
                example: Role Description
              roleID:
                description: Идентификатор роли.
                x-description-lang:
                  en: Role ID.
                type: integer
                example: 1
              privilege:
                $ref: '#/components/schemas/UsersApiPrivilege'
    UsersApiRoleUpdate:
      type: object
      required:
        - roleName
        - roleDescription
        - merchant
        - roleID
        - privilege
      properties:
        roleName:
          description: Кодовое имя роли.
          x-description-lang:
            en: The code name of the role.
          type: string
          example: role_name
        roleDescription:
          description: Описание роли.
          x-description-lang:
            en: Description of the role.
          type: string
          example: Role Description
        merchant:
          description: Код мерчанта.
          x-description-lang:
            en: Merchant code.
          type: string
          example: PAYU_2
        privilege:
          $ref: '#/components/schemas/UsersApiPrivilege'
    UsersApiRoleCreate:
      type: object
      required:
        - roleName
        - roleDescription
        - privilege
      properties:
        roleName:
          description: Кодовое имя роли.
          x-description-lang:
            en: The code name of the role.
          type: string
          example: role_name
        roleDescription:
          description: Описание роли.
          x-description-lang:
            en: Description of the role.
          type: string
          example: Role Description
        merchant:
          description: Код мерчанта.
          x-description-lang:
            en: Merchant code.
          type: string
          example: PAYU_2
        privilege:
          $ref: '#/components/schemas/UsersApiPrivilege'
    UsersApiRole:
      type: object
      required:
        - merchantCode
        - roleID
      properties:
        merchantCode:
          description: Код мерчанта.
          x-description-lang:
            en: Merchant code.
          type: string
          example: CLIENT_CODE
        roleID:
          description: Идентификатор роли.
          x-description-lang:
            en: Role ID.
          type: string
          example: roleID1
    UsersApiUser200Response:
      type: object
      required:
        - code
        - users
      properties:
        code:
          $ref: '#/components/schemas/200ResponseCode'
        users:
          description: Перечень пользователей с активными ролями у мерчантов.
          x-description-lang:
            en: List of users with active merchant roles.
          type: array
          items:
            type: object
            required:
              - firstName
              - lastName
              - emailUser
              - userID
              - type
              - status
              - role
            properties:
              firstName:
                description: Имя пользователя.
                x-description-lang:
                  en: Username.
                type: string
                example: First Name
              lastName:
                description: Фамилия пользователя.
                x-description-lang:
                  en: The user's last name.
                type: string
                example: Last Name
              emailUser:
                description: Адрес электронной почты.
                x-description-lang:
                  en: The email address.
                type: string
                example: user@email.tst
              userID:
                description: Идентификатор пользователя.
                x-description-lang:
                  en: The user ID.
                type: string
                example: '1'
              type:
                description: Тип пользователя.
                x-description-lang:
                  en: The type of user.
                type: string
                example: REGULAR
              status:
                description: Статус пользователя.
                x-description-lang:
                  en: The user's status.
                type: string
                example: Enabled
              role:
                type: array
                items:
                  $ref: '#/components/schemas/UsersApiRole'
    UsersApiUserUpdate:
      type: object
      required:
        - userID
        - status
      properties:
        firstName:
          description: Имя пользователя.
          x-description-lang:
            en: Username.
          type: string
          example: First Name
        lastName:
          description: Фамилия пользователя.
          x-description-lang:
            en: The user's last name.
          type: string
          example: Last Name
        emailUser:
          description: Адрес электронной почты.
          x-description-lang:
            en: The email address.
          type: string
          example: user@email.tst
        password:
          description: Пароль пользователя.
          x-description-lang:
            en: The user password.
          type: string
          example: $Erty#ghhh678%~4
        userID:
          description: Идентификатор пользователя.
          x-description-lang:
            en: The user ID.
          type: string
          example: '1'
        status:
          description: Статус пользователя.
          x-description-lang:
            en: The user's status.
          type: string
          example: Enabled
        roles:
          type: array
          items:
            $ref: '#/components/schemas/UsersApiRole'
    UsersApiUserCreate:
      type: object
      required:
        - firstName
        - lastName
        - emailUser
        - status
        - password
      properties:
        firstName:
          description: Имя пользователя.
          x-description-lang:
            en: Username.
          type: string
          example: First Name
        lastName:
          description: Фамилия пользователя.
          x-description-lang:
            en: The user's last name.
          type: string
          example: Last Name
        emailUser:
          description: Адрес электронной почты.
          x-description-lang:
            en: The email address.
          type: string
          example: user@email.tst
        status:
          description: Статус пользователя.
          x-description-lang:
            en: The user's status.
          type: string
          example: Enabled
        password:
          description: Пароль пользователя.
          x-description-lang:
            en: The user password.
          type: string
          example: $Erty#ghhh678%~4
        roles:
          type: array
          items:
            $ref: '#/components/schemas/UsersApiRole'
  parameters:
    X-Header-Signature:
      name: X-Header-Signature
      in: header
      description: Подпись запроса
      x-description-lang:
        en: Signature of the message
      required: true
      example: 0b9b07bd4b81375d189bbe0fe23a7c4b939b112715c2ac090829ed2182752c1c
      schema:
        type: string
    X-Header-Merchant:
      name: X-Header-Merchant
      in: header
      description: Идентификатор продавца в системе Your Payments
      x-description-lang:
        en: Merchant identifier in YPMN system
      required: true
      example:
        - MERCHANT_CODE
        - GLB_MKPT
      schema:
        type: string
    X-Header-Date:
      name: X-Header-Date
      in: header
      description: Дата запроса в формате [ISO_8601, "Y-m-d\TH:i:sP"](https://en.wikipedia.org/wiki/ISO_8601)
      example: '2032-01-01T11:22:33+03:00'
      x-description-lang:
        en: Date of the request in [ISO_8601 Y-m-d\TH:i:sP format](https://en.wikipedia.org/wiki/ISO_8601)
      required: true
      schema:
        format: ISO_8601
    X-Header-Idempotency-Key:
      name: X-Header-Idempotency-Key
      in: header
      description: Ключ идемпотентности
      x-description-lang:
        en: An idempotency key is a unique value generated by the client which the server uses to recognize subsequent retries of the same request.
      schema:
        type: string
      example: 60ibwxptqpsw7czp0u4zzwjj3fhmnfozmw08
    ReturnUrlRequestBody:
      name: body
      in: query
      schema:
        $ref: '#/components/schemas/ReturnUrlRequestBody'
    ReturnUrlRequestSignature:
      name: signature
      in: query
      schema:
        $ref: '#/components/schemas/ReturnUrlRequestSignature'
    ReturnUrlRequestMerchant:
      name: merchant
      in: query
      schema:
        $ref: '#/components/schemas/ReturnUrlRequestMerchant'
    ReturnUrlRequestDate:
      name: date
      in: query
      schema:
        $ref: '#/components/schemas/ReturnUrlRequestDate'
    merchantPaymentReference:
      name: merchantPaymentReference
      in: path
      description: Номер заказа в системе ТСП
      x-description-lang:
        en: The Merchant payment reference
      required: true
      schema:
        maxLength: 100
        type: string
    reportsOrdersStartDate:
      name: startDate
      in: query
      required: true
      description: Дата начала отчета в ISO 8601
      x-description-lang:
        en: Report start date in ISO 8601
      schema:
        example: '2024-05-01T00:00:00+03:00'
        type: string
    reportsOrdersEndDate:
      name: endDate
      in: query
      required: true
      description: Дата окончания отчета в ISO 8601
      x-description-lang:
        en: Report end date in ISO 8601
      schema:
        example: '2024-05-14T00:23:00+03:00'
        type: string
    reportsOrdersByConfirmation:
      name: byConfirmation
      in: query
      required: false
      description: признак выбора даты фильтрации `YES` - по дате завершения заказа, `NO` или отсутствует в запросе - по дате заказа
      x-description-lang:
        en: indicator for selecting a filtering date `YES` - by order completion date, `NO` or not in the request - by order date
      schema:
        enum:
          - 'YES'
          - 'NO'
        type: string
    reportsOrdersStatuses:
      name: statuses
      in: query
      required: false
      description: Набор статусов транзакций включенных в выборку
      x-description-lang:
        en: A set of transaction statuses included in the selection
      schema:
        type: object
        properties:
          statuses[pending]:
            $ref: '#/components/schemas/ReportStatusesValues'
          statuses[authorized]:
            $ref: '#/components/schemas/ReportStatusesValues'
          statuses[completed]:
            $ref: '#/components/schemas/ReportStatusesValues'
          statuses[refunded]:
            $ref: '#/components/schemas/ReportStatusesValues'
          statuses[reversed]:
            $ref: '#/components/schemas/ReportStatusesValues'
          statuses[cancelled]:
            $ref: '#/components/schemas/ReportStatusesValues'
  responses:
    TooManyRequestResponse:
      description: Слишком много запросов
      x-description-lang:
        en: Too many request. See API Limits.
      headers:
        X-Rate-Limit-Limit:
          $ref: '#/components/headers/X-Rate-Limit-Limit'
        X-Rate-Limit-Reset:
          $ref: '#/components/headers/X-Rate-Limit-Reset'
        X-Rate-Limit-Remaining:
          schema:
            description: Содержит значение 0 (ноль), поскольку ни один запрос не доступен до прохождения X-Rate-Limit-Reset
            x-description-lang:
              en: Contains value 0 (zero) because no request are available until X-Rate-Limit-Reset pass
            type: integer
            example: 0
      content:
        application/json:
          schema:
            type: object
            properties:
              code:
                description: Неверный код запроса (http-код, который также возвращается в заголовках)
                x-description-lang:
                  en: '429'
                type: integer
                example: 429
              message:
                description: Достигнут лимит вызовов API. (0/0)
                x-description-lang:
                  en: API calls limit reached. (0/0)
                type: string
                example: API calls limit reached. (0/0)
              status:
                description: Текст, представляющий статус ответа
                x-description-lang:
                  en: A text representing the status of the response
                type: string
                enum:
                  - LIMIT_CALLS_EXCEEDED
                  - INVALID_REQUEST
    4xxResponse:
      description: Запрос не выполнен из-за недопустимого параметра
      x-description-lang:
        en: Request failed due to some invalid parameter.
      headers:
        X-Rate-Limit-Limit:
          $ref: '#/components/headers/X-Rate-Limit-Limit'
        X-Rate-Limit-Reset:
          $ref: '#/components/headers/X-Rate-Limit-Reset'
        X-Rate-Limit-Remaining:
          $ref: '#/components/headers/X-Rate-Limit-Remaining'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/BasicClientErrorsResponse'
    5xxResponse:
      description: Внутренняя ошибка сервера
      x-description-lang:
        en: Request failed due to some internal errors. Please retry later.
      headers:
        X-Rate-Limit-Limit:
          $ref: '#/components/headers/X-Rate-Limit-Limit'
        X-Rate-Limit-Reset:
          $ref: '#/components/headers/X-Rate-Limit-Reset'
        X-Rate-Limit-Remaining:
          $ref: '#/components/headers/X-Rate-Limit-Remaining'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ServerErrorsResponse'
