---
metadata:
  - name: generator
    content: Diplodoc Platform v5.52.0
alternate:
  - https://pay.yandex.ru/docs/ru/payments/basic.md
  - href: ru/payments/basic.md
    type: text/markdown
    title: Markdown version
  - href: ../llms.txt
    type: text/markdown
    title: llms.txt
title: "Базовые платежи Яндекс\_Пэй\_— стандартная схема оплаты | Документация"
description: "Основная механика приема платежей. Простая интеграция для быстрого старта с Яндекс\_Пэй."
---
> **Documentation Index:** Fetch the complete configuration index at https://pay.yandex.ru/docs/ru/llms.txt


# Базовая механика

Базовая механика — это минимальный набор методов API Яндекс Пэй, с которыми можно принимать оплату в онлайн-магазине. Механика не рассматривает методы, с которыми можно настроить платежи по подписке, холдирование средств или привязать карту к аккаунту, но дает основополагающее представление о том, как работает сервис под капотом.

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


Изучите эту страницу прежде, чем переходить к подключению [других механик](https://pay.yandex.ru/docs/ru/payments/index.md).

{% note info %}
  
Данная механика поддерживает все способы оплаты: **полная оплата** (банковской картой или СБП с кешбэком), в **Сплит**.

{% endnote %}


## Как это работает? {#how-it-works}

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

{% cut "Схема проведения оплаты" %}

![Схема проведения оплаты: формирование корзины, создание заказа, оплата, списание средств](../custom/_assets/button-scheme.png)

{% endcut %}

<!-- source: ru/_includes/postman-link.md -->
{% note tip %}

Для знакомства с платежными механиками [API Яндекс Пэй](https://pay.yandex.ru/docs/ru/custom/backend/yandex-pay-api/index.md) используйте готовую Postman-коллекцию.

<a class="custom-g-button custom-g-button_view_normal custom-g-button_size_l" href="https://doc-static.yandex.net/src/support/yandex_pay/postman/yandex-pay-api_postman-collection_v5_22-12-2025.zip" target="_blank" download>
  <span class="g-button__text">
    Скачать коллекцию
  </span>
</a>

{% endnote %}
<!-- endsource: ru/_includes/postman-link.md -->

### Этап 1. Формирование корзины {#cart}

1. Покупатель формирует корзину товаров на сайте продавца и нажимает кнопку оплаты Яндекс Пэй.
1. События после нажатия кнопки:

   1\. Yandex Pay SDK вызывает callback на фронтенде магазина.

   2\. Фронтенд магазина создает заказ на бэкенде магазина.

   3\. Бэкенд магазина передает заказ в бэкенд Яндекс Пэй методом [/orders](https://pay.yandex.ru/docs/ru/custom/backend/yandex-pay-api/order/merchant_v1_orders-post.md).

   {% note info %}

   Если используется касса АТОЛ Онлайн или CloudKassir и в личном кабинете Яндекс Пэй подключена [фискализация](https://pay.yandex.ru/docs/ru/fiscalization.md#fiscal-receipts), в методе [/orders](https://pay.yandex.ru/docs/ru/custom/backend/yandex-pay-api/order/merchant_v1_orders-post.md) должны передаваться обязательные для фискализации [поля](https://pay.yandex.ru/docs/ru/custom/backend/yandex-pay-api/order/merchant_v1_orders-post.md#fiscalization).

   {% endnote %} 

   4\. В ответ бэкенд Яндекс Пэй возвращает ссылку для перенаправления покупателя на фронтенд проведения оплаты в Яндекс Пэй.

   5\. Фронтенд магазина получает ссылку на заказ Пэй, которую транслирует в Yandex Pay SDK.

1. Yandex Pay SDK загружает с бэкенда Яндекс Пэй информацию о корзине товаров, которую необходимо оплатить покупателю.
1. Yandex Pay SDK отображает покупателю форму оплаты с информацией о корзине товаров.

    - В случае Web SDK: происходит перенаправление на полученную ссылку для оплаты.
    - В случае Mobile SDK: открывается форма для оплаты.

   {% note warning %}

   Запрещено встраивать Яндекс Пэй в WebView при подключении в мобильных приложениях. Это небезопасно.

   {% endnote %}

### Этап 2. Авторизация покупателя и оплата {#auth-payment}

1. Покупатель авторизуется со своим [Яндекс ID](https://yandex.ru/dev/id/doc/ru/), если не был авторизован.
1. Покупатель выбирает способ оплаты покупки (Пэй или Сплит) и нажимает **Оплатить**.
    - <!-- source: ru/_includes/pay-type.md -->
      При оплате сразу с кешбэком пользователь выбирает сохраненную в Яндексе банковскую карту или СБП-привязку к счету.
      <!-- endsource: ru/_includes/pay-type.md -->
    - Если выбран Сплит, то покупатель выбирает количество платежей и совершает первый платеж со своих привязанных карт либо привязывает новую.
1. Яндекс Пэй проводит платеж, списывая денежные средства с выбранной карты покупателя.
1. Яндекс Пэй уведомляет продавца о статусе платежа через вызов [/webhook](../custom/backend/merchant-api/webhook), если был настроен [Callback URL](https://pay.yandex.ru/docs/ru/console/settings-pay-split.md#callback-settings). Также бэкенд магазина может самостоятельно получить статус заказа через запрос [/orders/\{order_id\}](../custom/backend/yandex-pay-api/order/merchant_v1_order-get).

1. Яндекс Пэй перенаправляет покупателя на полученные в методе [/orders](../custom/backend/yandex-pay-api/order/merchant_v1_orders-post) ссылки для успешных или неуспешных оплат.

1. Деньги за покупку поступят продавцу на следующие сутки.

## Возврат оплаты {#refund}

Провести возврат можно двумя способами:

- в личном кабинете в разделе [Платежи](https://pay.yandex.ru/docs/ru/custom/refund-payments.md#payment-refund);
- при помощи запросов к [API](https://pay.yandex.ru/docs/ru/custom/refund-payments.md#api-refund).

Минимальная сумма возврата — 1 рубль.

## Статусы, которые мы высылаем в интеграции {#statuses}

{% note info %}

Статусы `AUTHORIZED`, `VOIDED`, `CONFIRMED` и `RECURRING` в текущей интеграции не используются.

{% endnote %}

Статусы при проведении оплаты:

<!-- source: ru/_includes/payments.md -->
 #|
|| `PENDING`   | Оплата еще в процессе, нужно запросить статус платежа позже. Не отправляется в нотификации. ||
|| `FAILED`    | Оплата завершилась неудачно. Терминальный неуспешный статус. ||
|| `CAPTURED`  | Оплата совершена. Терминальный успешный статус. ||
|#
<!-- endsource: ru/_includes/payments.md -->

Статусы при проведении возврата:

<!-- source: ru/_includes/payments.md -->
 #|
|| `FAILED`    | Процедура возврата неуспешна. Терминальный неуспешный статус. ||
|| `REFUNDED`  | Возврат совершен. Терминальный успешный статус. ||
|| `PARTIALLY_REFUNDED` | Частичный возврат совершен. Терминальный успешный статус. ||
|#
<!-- endsource: ru/_includes/payments.md -->

## Сценарии тестирования механики {#test-cases}

<!-- source: ru/_includes/testing.md -->
Для качественной работы сервиса [протестируйте](https://pay.yandex.ru/docs/ru/testing.md#pay-split) его в тестовой и боевой среде перед приемом платежей пользователей.

Если вы настроили интеграцию по [API Яндекс Пэй](https://pay.yandex.ru/docs/ru/custom/back-index.yaml), в ходе тестирования рекомендуем использовать тестовые сценарии:
<!-- endsource: ru/_includes/testing.md -->

 #|
||
**Сценарий**
|
**Действия**
|
**Ожидаемый результат**
|
**Среда**
||
||
Успешная оплата. Callback URL задан в ЛК
|
{% include notitle [testing](../_includes/testing.md#common-1) %}
|
{% include notitle [testing](../_includes/testing.md#common-2) %}
|
Test, Prod
||
||
Успешная оплата. Callback URL не задан в ЛК
|
{% include notitle [testing](../_includes/testing.md#common-3) %}
|
{% include notitle [testing](../_includes/testing.md#common-4) %}
|
Test, Prod
||
||
Частичный возврат любого способа оплаты через API
|
1. Проведите оплату через сервис Пэй/Сплит.
1. {% include notitle [testing](../_includes/testing.md#common-20) %}
|
{% include notitle [testing](../_includes/testing.md#common-5) %}
|
Test, Prod
||
||
Полный возврат любого способа оплаты через API
|
1. Проведите оплату через сервис Пэй/Сплит.
1. {% include notitle [testing](../_includes/testing.md#common-19) %}
|
{% include notitle [testing](../_includes/testing.md#common-6) %}
|
Test, Prod
||
||
Успешная оплата банковской картой
|
{% include notitle [testing](../_includes/testing.md#common-7) %}
|
{% include notitle [testing](../_includes/testing.md#common-8) %}
|
Prod
||
||
Частичный возврат любого способа оплаты через ЛК
|
{% include notitle [testing](../_includes/testing.md#common-9) %}
|
Частичный возврат осуществлен и получен статус заказа `PARTIALLY_REFUNDED` в webhook.
|
Prod
||
||
Полный возврат любого способа оплаты через ЛК
|
{% include notitle [testing](../_includes/testing.md#common-10) %}
|
Полный возврат осуществлен и получен статус заказа `REFUNDED` в webhook или на метод [orders/{order_id}](https://pay.yandex.ru/docs/ru/custom/backend/yandex-pay-api/order/merchant_v1_order-get.md).
|
Prod
||
||
Успешная оплата Сплит
|
1. Проведите оплату через сервис Пэй/Сплит с использованием Сплита.
1. Проверьте изменение статуса в CRM на успешный на основании опроса статуса.
|
1. {% include notitle [testing](../_includes/testing.md#common-24) %}
1. {% include notitle [testing](../_includes/testing.md#common-23) %}
|
Prod
||
||
Успешная оплата СБП
|
{% include notitle [testing](../_includes/testing.md#common-11) %}
|
{% include notitle [testing](../_includes/testing.md#common-12) %}
|
Prod
||
||
Проверка ежедневного отчета о продажах
|
{% include notitle [testing](../_includes/testing.md#common-13) %}
|
{% include notitle [testing](../_includes/testing.md#common-14) %}
|
Prod
||
|#



{% included (../_includes/testing.md) %}
# Тестирование

## sandbox {#sandbox}

{% note alert %}

Тестирование проводится в тестовом окружении (Sandbox). В данном случае запросы к API сервиса Яндекс Пэй отправляются на `https://sandbox.pay.yandex.ru`.

{% endnote %}

## Примечание {#note}

{% note info %}

Для авторизации используется реальный аккаунт, но банковская карта для оплаты будет предложена из списка тестовых карт.

Убедитесь, что платеж тестовый: в адресе ссылки на оплату будет префикс `sandbox`. Например: `https://sandbox.pay.ya.ru/o/nxPUqR`.

{% endnote %}

## Эквайринг {#acquiring}

{% note info %}

На данном этапе в боевых условиях происходит эквайринг в банке выбранной карты. В тестовой среде эквайринг имитируется программным способом.

{% endnote %}

## Включение тестовой среды {#testing-test}

1. В личном кабинете выберите в [селекторе](https://pay.yandex.ru/docs/ru/console/management.md#selector) ваш магазин.
1. Перейдите в раздел [Настройки](https://console.pay.yandex.ru/settings) и правом верхнем углу включите опцию **Тестовые данные**, чтобы посмотреть параметры интеграции для тестовой среды.
1. [Заполните](https://pay.yandex.ru/docs/ru/console/settings-pay-split.md#callback-settings) поле **Callback URL** `Тестовый`, если хотите, чтобы Яндекс Пэй присылал [уведомления](https://pay.yandex.ru/docs/ru/custom/backend/merchant-api/webhook.md) по Merchant API.
1. [Настройте](https://pay.yandex.ru/docs/ru/custom/backend/merchant-api/index.md) декодирование сообщений.
1. Проведите [тестирование](https://pay.yandex.ru/docs/ru/testing.md#pay-split).

## Включение боевой среды {#testing-prod}

1. В разделе **Настройки** отключите опцию **Тестовые данные**, чтобы посмотреть параметры интеграции для боевой среды.
1. Заполните поле **Callback URL**.
1. Выпустите [API-ключ](https://pay.yandex.ru/docs/ru/console/settings-pay-split.md#merchant-api-keys).
1. Проведите тестирование в боевой среде.

## Тестовые сценарии

### {#common-0}

Для качественной работы сервиса [протестируйте](https://pay.yandex.ru/docs/ru/testing.md#pay-split) его в тестовой и боевой среде перед приемом платежей пользователей.

Если вы настроили интеграцию по [API Яндекс Пэй](https://pay.yandex.ru/docs/ru/custom/back-index.yaml), в ходе тестирования рекомендуем использовать тестовые сценарии:

### {#common-1}

1. Задайте Callback URL в ЛК.
1. Проведите оплату через сервис Пэй/Сплит.
1. Проверьте изменение статуса в CRM на успешный на основании webhook.

### {#common-1-1}

1. Задайте Callback URL в ЛК.
1. Проведите оплату через сервис Пэй.
1. Проверьте изменение статуса в CRM на успешный на основании webhook.

### {#common-2}

1. Получен webhook с статусом заказа `CAPTURED`.
1. На основании полученного из Яндекс статуса на стороне продавца сформирован чек продажи и передан клиенту и в ФНС.

### {#common-3}

1. Не задавайте Callback URL в ЛК.
1. Проведите оплату через сервис Пэй/Сплит.
1. Проверьте изменение статуса в CRM на успешный на основании опроса статуса.

### {#common-3-1}

1. Не задавайте Callback URL в ЛК.
1. Проведите оплату через сервис Пэй.
1. Проверьте изменение статуса в CRM на успешный на основании опроса статуса.

### {#common-4}

1. В методе [/orders/{order_id}](../custom/backend/yandex-pay-api/order/merchant_v1_order-get) получен статус заказа `CAPTURED`. Webhook не отправляется.
1. На основании полученного из Яндекс статуса на стороне продавца сформирован чек продажи и передан клиенту и в ФНС.

### {#common-5}

1. Частичный возврат осуществлен и получен статус заказа `PARTIALLY_REFUNDED` в webhook или на метод [/orders/{order_id}](../custom/backend/yandex-pay-api/order/merchant_v1_order-get).
1. На основании полученного из Яндекс статуса на стороне продавца сформирован чек возврата и передан клиенту и в ФНС.

### {#common-6}

1. Полный возврат осуществлен и получен статус заказа `REFUNDED` в webhook или на метод [/orders/{order_id}](../custom/backend/yandex-pay-api/order/merchant_v1_order-get).
1. На основании полученного из Яндекс статуса на стороне продавца сформирован чек возврата и передан клиенту и в ФНС.

### {#common-7}

1. Проведите оплату через сервис Пэй/Сплит с использованием банковской карты.
1. Проверьте изменение статуса в CRM на успешный на основании опроса статуса.

### {#common-7-1}

1. Проведите оплату через сервис Пэй с использованием банковской карты.
1. Проверьте изменение статуса в CRM на успешный на основании опроса статуса.

### {#common-8}

1. По факту оплаты от Яндекс пришел webhook или на опрос статуса [/orders/{order_id}](../custom/backend/yandex-pay-api/order/merchant_v1_order-get) получен статус `CAPTURED`.
1. На основании полученного из Яндекс статуса на стороне продавца сформирован чек продажи и передан клиенту и в ФНС.

### {#common-9}

1. Проведите оплату через сервис Пэй/Сплит.
1. В ЛК Яндекс Пэй найдите платеж и сделайте частичный возврат товаров.

### {#common-9-1}

1. Проведите оплату через сервис Пэй.
1. В ЛК Яндекс Пэй найдите платеж и сделайте частичный возврат товаров.

### {#common-10}

1. Проведите оплату через сервис Пэй/Сплит.
1. В ЛК Яндекс Пэй найдите платеж и сделайте полный возврат товаров.

### {#common-10-1}

1. Проведите оплату через сервис Пэй.
1. В ЛК Яндекс Пэй найдите платеж и сделайте полный возврат товаров.

### {#common-11}

1. Проведите оплату через сервис Пэй/Сплит с использованием СБП.
1. Проверьте изменение статуса в CRM на успешный на основании опроса статуса.

### {#common-11-1}

1. Проведите оплату через сервис Пэй с использованием СБП.
1. Проверьте изменение статуса в CRM на успешный на основании опроса статуса.

### {#common-12}

1. По факту оплаты от Яндекс пришел webhook или на опрос статуса [/orders/{order_id}](../custom/backend/yandex-pay-api/order/merchant_v1_order-get) получен статус `CAPTURED`.
1. На основании полученного из Яндекс статуса на стороне продавца сформирован чек продажи и передан клиенту и в ФНС.

### {#common-13}

Оставьте без возврата успешные продажи на сумму не менее 500 рублей.

### {#common-14}

На следующий день после тестов получен ежедневный отчет с операциями.
Проверьте начисленную комиссию за успешную оплату.

### {#common-15}

1. В методе [/orders/{order_id}](../custom/backend/yandex-pay-api/order/merchant_v1_order-get) или в webhook получен статус заказа `CAPTURED`.
1. На основании полученного из Яндекс статуса на стороне продавца сформирован чек продажи и передан клиенту и в ФНС.

### {#common-16}

1. В методе [/orders/{order_id}](../custom/backend/yandex-pay-api/order/merchant_v1_order-get) или в webhook получен статус заказа `FAILED`.
1. В поле `reason` отражен комментарий, что недостаточно денежных средств.

### {#common-17}

Инициируйте оплату методом [subscriptions/recur](../custom/backend/yandex-pay-api/subscriptions/merchant_v1_subscriptions_recur-post) с передачей заказа, в котором привязана карта.

### {#common-18}

В Яндекс вызовите метод [/v2/orders/{order_id}/refund](../custom/backend/yandex-pay-api/order/merchant_v2_refund-post).

### {#common-19}

В кассовом ПО или CRM выберите весь чек к возврату и осуществите его.

### {#common-20}

В кассовом ПО или CRM выберите несколько товаров к возврату и осуществите его.

### {#common-21}

Создайте заявку на оплату методом [/orders](../custom/backend/yandex-pay-api/order/merchant_v1_orders-post) и откройте ссылку на оплату клиенту.

### {#common-22}

По факту оплаты от Яндекс пришел webhook или на опрос статуса [/orders/{order_id}](../custom/backend/yandex-pay-api/order/merchant_v1_order-get) получен статус `AUTHORIZED`.

### {#common-23}

На основании полученного из Яндекс статуса на стороне продавца сформирован чек продажи и передан клиенту и в ФНС.

### {#common-24}

По факту оплаты от Яндекс пришел webhook или на опрос статуса [/orders/{order_id}](../custom/backend/yandex-pay-api/order/merchant_v1_order-get) получен статус `CAPTURED`.

### {#common-25}

По факту клира средств от Яндекс пришел webhook или на опрос статуса [/orders/{order_id}](../custom/backend/yandex-pay-api/order/merchant_v1_order-get) получен статус `CAPTURED`.

### {#common-26}

По факту аннулирования заказа от Яндекс пришел webhook или на опрос статуса [/orders/{order_id}](../custom/backend/yandex-pay-api/order/merchant_v1_order-get) получен статус `FAILED`.

### {#common-27}

По факту оплаты от Яндекс пришел webhook или на опрос статуса [/orders/{order_id}](../custom/backend/yandex-pay-api/order/merchant_v1_order-get) получен статус `CONFIRMED`.

### {#common-28}

Создайте заявку на оплату методом /orders с `isPrepayment = true` и откройте ссылку на оплату клиенту.

### {#common-29}

Проведите и оставьте без возврата успешные продажи на сумму не менее 500 рублей.

### {#common-30}

1. На следующий день после тестов получен ежедневный отчет с операциями, где за аннулирование оплат до клира нет комиссии.
1. В отчете указана начисленная комиссию за успешную оплату.

### {#common-31}

Полный возврат осуществлен и получен статус заказа `REFUNDED` в webhook или в метод [/orders/{order_id}](../custom/backend/yandex-pay-api/order/merchant_v1_order-get).

### {#common-32}

Выберите все товары к возврату и осуществите возврат методом [/v2/orders/{order_id}/refund](../custom/backend/yandex-pay-api/order/merchant_v2_refund-post) с последующей проверкой статуса возврата.

### {#testing-qr}

{% list tabs %}

- В кассовом ПО

  {% note warning %}

  Протестировать прием платежей в кассовом ПО можно, если вы подключили QR‑код от Яндекс Пэй в настройках кассового ПО.

  {% endnote %}
  1. Создайте заказ в вашем кассовом ПО и выберите способ оплаты с помощью QR‑кода от Яндекс Пэй.
  1. Отсканируйте QR-табличку камерой смартфона и подтвердите оплату с помощью СБП.
  1. Проверьте, что оплата прошла успешно.
  1. Если у вас подключена оплата в Сплит, создайте заказ и аналогично шагам выше оплатите заказ в Сплит.
  1. Проверьте, что оплата прошла успешно.
  1. Выполните возврат средств в вашем кассовом ПО.

     {% note info %}

     Если кассовое ПО не поддерживает возвраты, оформите возврат в разделе [Платежи](https://console.pay.yandex.ru/payments) личного кабинета Яндекс Пэй. Как оформить возврат см. подробнее в разделе [Возврат платежей](https://pay.yandex.ru/docs/ru/custom/refund-payments.md).

     {% endnote %}

- В личном кабинете Яндекс Пэй

  {% note warning %}

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

  {% endnote %}

  1. Перейдите в раздел [Платежи](https://console.pay.yandex.ru/payments) личного кабинета Яндекс Пэй и примите оплату по инструкции в разделе [Прием платежа](https://pay.yandex.ru/docs/ru/console/create-link.md#qr).
  1. Выполните возврат средств по инструкции в разделе [Возврат платежей](https://pay.yandex.ru/docs/ru/custom/refund-payments.md).

- В Cash Register API

  {% note tip %}

  Подробный процесс работы с заказом см. в разделе [Самостоятельная интеграция](https://pay.yandex.ru/docs/ru/qr-code/api.md#how-to).

  {% endnote %}
  
  <!-- source: ru/_includes/testing-qr-api.md -->
  Для тестирования Cash Register API доступна sandbox-среда, которая позволяет проверить интеграцию без реальных платежей. В ней все методы API работают так же, как в боевой среде.

  **Особенности sandbox:**

  - Тестовые ключи отличаются от боевых.
  - Базовый URL: `https://sandbox.pay.yandex.ru/api/merchant/cash-register`.
  - Включена автоматическая оплата — после создания заказа оплата происходит автоматически, переходить по `paymentUrl` не требуется.

  #### Настройка тестовой среды в личном кабинете {#sandbox-settings}

  1.  В [личном кабинете](https://console.pay.yandex.ru/settings) откройте раздел **Настройки**.

  1.  Включите опцию **Тестовая среда**.

      ![Настройки sandbox](../_assets/test-qr-settings.png){.c-screenshot width=400}

  1.  В разделе **Тестирование в Sandbox** скопируйте тестовые ключи и используйте их для [аутентификации запросов](https://pay.yandex.ru/docs/ru/qr-code/api.md#auth):
      - **YandexPayApiKey** — в заголовке `Authorization: Api-Key <ключ>`;
      - **SoftwareAuthorization** — в заголовке `Software-Authorization: <ключ>`.

  1.  Настройте [Callback URL](https://pay.yandex.ru/docs/ru/qr-code/api.md#callback-settings) для получения [нотификаций](https://pay.yandex.ru/docs/ru/qr-code/api.md#webhook) о статусе заказа и операций.

  1.  Вы также можете посмотреть тестовые платежи в личном кабинете. Подробнее см. в разделе [Просмотр тестовых платежей](https://pay.yandex.ru/docs/ru/testing.md#test-payments).

  #### Оформление заказа с помощью статического QR-кода {#test-static-qr}

  1.  Получите `qrcId` методом [/accounts](https://pay.yandex.ru/docs/ru/custom/backend/cash-register/QR-tablichki/getAccounts.md).

  1.  Создайте заказ методом [/orders](https://pay.yandex.ru/docs/ru/custom/backend/cash-register/Zakazy/createOrder.md) с одной из тестовых сумм для эмуляции результатов оплаты.

      {% cut "Тестовые суммы" %}

      #|
      || **Сумма** | **Результат** ||
      || 10 000 | Успешная оплата через СБП, карту или в Сплит.

      Статус платежа: `paymentStatus: "CAPTURED"`.

      Статус операции: `operationType: "AUTHORIZE"`, `status: "SUCCESS"`. ||

      || 10 001 | Техническая ошибка.

      Статус платежа: `paymentStatus: "FAILED"`, `reason: "WRONG_ENVIRONMENT"`.

      Статус операции: `operationType: "AUTHORIZE"`, `status: "FAIL"`. ||
      || 10 002 | Недостаточно средств.

      Статус платежа: `paymentStatus: "FAILED"`, `reason: "NOT_ENOUGH_FUNDS"`.

      Статус операции: `operationType: "AUTHORIZE"`, `status: "FAIL"`. ||
      || 10 004 | Вечный статус `PENDING`. Используйте для проверки поллинга и деактивации статического QR-кода.

      Статус платежа: `paymentStatus: "PENDING"` — заказ остается в этом статусе до деактивации.

      Статус операции: `operationType: "AUTHORIZE"`, `status: "PENDING"`. ||
      |#

      {% endcut %}

      Для отображения Сплита в способах оплаты передайте `availablePaymentMethods: ["CARD", "SPLIT"]`.

  1.  Яндекс Пэй вернет поле `paymentUrl` с уникальной ссылкой на оплату.

      В sandbox оплата произойдет автоматически — переходить по ссылке не требуется.

      В боевой среде перейдите по ссылке и оплатите заказ через СБП, карту или в Сплит.

  1.  Проверьте статус заказа одним из способов:

      - Нотификации (рекомендуется) — дождитесь нотификации [/webhook](https://pay.yandex.ru/docs/ru/custom/backend/merchant-api/webhook.md) с событием `ORDER_STATUS_UPDATED`.

      - Поллинг — опрашивайте статус методом [/orders/{orderId}](https://pay.yandex.ru/docs/ru/custom/backend/cash-register/Zakazy/getOrder.md). Первый запрос через 5–10 секунд после создания заказа, далее не чаще раза в секунду.

      Ожидаемый результат см. в столбце **Результат** в таблице тестовых сумм.

  #### Оформление заказа с помощью динамического QR-кода {#test-dynamic-qr}

  1.  Создайте заказ методом [/orders/dynamic](https://pay.yandex.ru/docs/ru/custom/backend/cash-register/Zakazy/createDynamicOrder.md) с одной из тестовых сумм для эмуляции результатов оплаты. Получать `qrcId` не требуется — QR-код генерируется автоматически.

      {% cut "Тестовые суммы" %}

      #|
      || **Сумма** | **Результат** ||
      || 10 000 | Успешная оплата через СБП, карту или в Сплит.

      Статус платежа: `paymentStatus: "CAPTURED"`.

      Статус операции: `operationType: "AUTHORIZE"`, `status: "SUCCESS"`. ||

      || 10 001 | Техническая ошибка.

      Статус платежа: `paymentStatus: "FAILED"`, `reason: "WRONG_ENVIRONMENT"`.

      Статус операции: `operationType: "AUTHORIZE"`, `status: "FAIL"`. ||
      || 10 002 | Недостаточно средств.

      Статус платежа: `paymentStatus: "FAILED"`, `reason: "NOT_ENOUGH_FUNDS"`.

      Статус операции: `operationType: "AUTHORIZE"`, `status: "FAIL"`. ||
      || 10 004 | Вечный статус `PENDING`. Используйте для проверки поллинга и деактивации статического QR-кода.

      Статус платежа: `paymentStatus: "PENDING"` — заказ остается в этом статусе до деактивации.

      Статус операции: `operationType: "AUTHORIZE"`, `status: "PENDING"`. ||
      |#

      {% endcut %}

      Для отображения Сплита в способах оплаты передайте `availablePaymentMethods: ["CARD", "SPLIT"]`.

  1.  Яндекс Пэй вернет поле `paymentUrl` с уникальной ссылкой на оплату.

      В sandbox оплата произойдет автоматически — переходить по ссылке не требуется.

      В боевой среде перейдите по ссылке и оплатите заказ через СБП, карту или в Сплит.

  1.  Проверьте статус заказа одним из способов:

      - Нотификации (рекомендуется) — дождитесь нотификации [/webhook](https://pay.yandex.ru/docs/ru/custom/backend/merchant-api/webhook.md) с событием `ORDER_STATUS_UPDATED`.

      - Поллинг — опрашивайте статус методом [/orders/{orderId}](https://pay.yandex.ru/docs/ru/custom/backend/cash-register/Zakazy/getOrder.md). Первый запрос через 5–10 секунд после создания заказа, далее не чаще раза в секунду.

      Ожидаемый результат см. в столбце **Результат** в таблице тестовых сумм.

  #### Поллинг и деактивация (прерывание оплаты) {#test-polling-deactivate}

  Деактивация доступна только для статических QR-кодов.

  1. Получите `qrcId` методом [/accounts](https://pay.yandex.ru/docs/ru/custom/backend/cash-register/QR-tablichki/getAccounts.md).

  1. Создайте заказ методом [/orders](https://pay.yandex.ru/docs/ru/custom/backend/cash-register/Zakazy/createOrder.md) на сумму **10 004 рубля**.

  1. Деактивация доступна только для заказов в статусе `paymentStatus: "PENDING"`.

     Проверьте статус заказа методом [/orders/{orderId}](https://pay.yandex.ru/docs/ru/custom/backend/cash-register/Zakazy/getOrder.md).

  1. Настройте поллинг:
     - Первый запрос — через 5–10 секунд после создания заказа.

     - Последующие запросы — не чаще одного раза в секунду.

  1. Убедитесь, что заказ остается в статусе `paymentStatus: "PENDING"` и деактивируйте его методом [/orders/{orderId}/deactivate](https://pay.yandex.ru/docs/ru/custom/backend/cash-register/Zakazy/deactivateOrder.md).

  1. Проверьте статусы:
     - операции: `operationType: "AUTHORIZE"`, `status: "FAIL"`;
     - заказа: `paymentStatus: "FAILED"`, `reason: "Payment rolled back by merchant"`.

  #### Полный возврат {#test-full-refund}

  1. Создайте и оплатите заказ на сумму **10 000 рублей** с помощью [статического](#test-static-qr) или [динамического QR-кода](#test-dynamic-qr).

  1. Возврат доступен только для заказов в статусе `paymentStatus: "CAPTURED"` или `paymentStatus: "PARTIALLY_REFUNDED"`.

     Проверьте статус заказа методом [/orders/{orderId}](https://pay.yandex.ru/docs/ru/custom/backend/cash-register/Zakazy/getOrder.md).

  1. Выполните полный возврат методом [/orders/{orderId}/refund](https://pay.yandex.ru/docs/ru/custom/backend/cash-register/Zakazy/refundOrder.md) с параметрами:
     - `externalOperationId` — уникальный идентификатор операции на стороне продавца. По нему можно узнать статус операции и он служит токеном идемпотентности.
     - `refundAmount` — сумма к возврату. Для полного возврата укажите сумму заказа (**10 000 рублей**).
     - `refundCart` — корзина возвращаемых позиций. Для полного возврата можно не указывать.

  1. Проверьте статус операции возврата одним из способов:

     - Нотификации (рекомендуется) — дождитесь нотификации [/webhook](https://pay.yandex.ru/docs/ru/custom/backend/merchant-api/webhook.md) с событием `OPERATION_STATUS_UPDATED`.

     - Поллинг — опрашивайте статус методом [/orders/{orderId}](https://pay.yandex.ru/docs/ru/custom/backend/cash-register/Zakazy/getOrder.md). Первый запрос через 5–10 секунд после создания заказа, далее не чаще раза в секунду. Находите нужную операцию по `externalOperationId`, который вы передали в [/orders/{orderId}/refund](https://pay.yandex.ru/docs/ru/custom/backend/cash-register/Zakazy/refundOrder.md).

     Ожидаемый результат: `operationType: "REFUND"`, `status: "SUCCESS"`.

  1. Проверьте статус заказа одним из способов:

     - Нотификации (рекомендуется) — дождитесь нотификации [/webhook](https://pay.yandex.ru/docs/ru/custom/backend/merchant-api/webhook.md) с событием `ORDER_STATUS_UPDATED`.

     - Поллинг — опрашивайте статус методом [/orders/{orderId}](https://pay.yandex.ru/docs/ru/custom/backend/cash-register/Zakazy/getOrder.md). Первый запрос через 5–10 секунд после создания заказа, далее не чаще раза в секунду.

     Ожидаемый результат: `paymentStatus: "REFUNDED"`.

  #### Частичный возврат {#test-partial-refund}

  1. Создайте и оплатите заказ с несколькими позициями на сумму **10 000 рублей** с помощью [статического](#test-static-qr) или [динамического QR-кода](#test-dynamic-qr).

     При формировании корзины используйте [одну из логик](https://pay.yandex.ru/docs/ru/qr-code/api.md#refund-logics): **базовую** без цены за единицу товара `CartItem.unitPrice` или **расширенную** — с `CartItem.unitPrice`.

     От корзины при создании заказа зависит будущая логика возврата.

  1. Возврат доступен только для заказов в статусе `paymentStatus: "CAPTURED"` или `paymentStatus: "PARTIALLY_REFUNDED"`.

     Проверьте статус заказа методом [/orders/{orderId}](https://pay.yandex.ru/docs/ru/custom/backend/cash-register/Zakazy/getOrder.md).

  1. Выполните частичный возврат методом [/orders/{orderId}/refund](https://pay.yandex.ru/docs/ru/custom/backend/cash-register/Zakazy/refundOrder.md) с параметрами:
     - `externalOperationId` — уникальный идентификатор операции на стороне продавца. По нему можно узнать статус операции и он служит токеном идемпотентности.
     - `refundAmount` — сумма к возврату.
     - `refundCart` — корзина возвращаемых позиций. Обязательна для частичного возврата.

       Формат `refundCart` зависит от логики возвратов. Подробнее см. в разделах [Две логики возвратов](https://pay.yandex.ru/docs/ru/qr-code/api.md#refund-logics) и [Примеры возвратов](https://pay.yandex.ru/docs/ru/custom/backend/cash-register/Zakazy/refundOrder.md#refund-examples).

  1. Проверьте статус операции возврата одним из способов:

     - Нотификации (рекомендуется) — дождитесь нотификации [/webhook](https://pay.yandex.ru/docs/ru/custom/backend/merchant-api/webhook.md) с событием `OPERATION_STATUS_UPDATED`.

     - Поллинг — опрашивайте статус методом [/orders/{orderId}](https://pay.yandex.ru/docs/ru/custom/backend/cash-register/Zakazy/getOrder.md). Первый запрос через 5–10 секунд после создания заказа, далее не чаще раза в секунду. Находите нужную операцию по `externalOperationId`, который вы передали в [/orders/{orderId}/refund](https://pay.yandex.ru/docs/ru/custom/backend/cash-register/Zakazy/refundOrder.md).

     Ожидаемый результат: `operationType: "REFUND"`, `status: "SUCCESS"`.

  1. Проверьте статус заказа одним из способов:

     - Нотификации (рекомендуется) — дождитесь нотификации [/webhook](https://pay.yandex.ru/docs/ru/custom/backend/merchant-api/webhook.md) с событием `ORDER_STATUS_UPDATED`.

     - Поллинг — опрашивайте статус методом [/orders/{orderId}](https://pay.yandex.ru/docs/ru/custom/backend/cash-register/Zakazy/getOrder.md). Первый запрос через 5–10 секунд после создания заказа, далее не чаще раза в секунду.

     Ожидаемый результат: `paymentStatus: "PARTIALLY_REFUNDED"`.
  <!-- endsource: ru/_includes/testing-qr-api.md -->

{% endlist %}

{% endincluded %}
{% included (../_includes/testing.md:./testing-qr-api.md) %}
# Тестирование Cash Register API

Для тестирования Cash Register API доступна sandbox-среда, которая позволяет проверить интеграцию без реальных платежей. В ней все методы API работают так же, как в боевой среде.

**Особенности sandbox:**

- Тестовые ключи отличаются от боевых.
- Базовый URL: `https://sandbox.pay.yandex.ru/api/merchant/cash-register`.
- Включена автоматическая оплата — после создания заказа оплата происходит автоматически, переходить по `paymentUrl` не требуется.

#### Настройка тестовой среды в личном кабинете {#sandbox-settings}

1.  В [личном кабинете](https://console.pay.yandex.ru/settings) откройте раздел **Настройки**.

1.  Включите опцию **Тестовая среда**.

    ![Настройки sandbox](../_assets/test-qr-settings.png){.c-screenshot width=400}

1.  В разделе **Тестирование в Sandbox** скопируйте тестовые ключи и используйте их для [аутентификации запросов](https://pay.yandex.ru/docs/ru/qr-code/api.md#auth):
    - **YandexPayApiKey** — в заголовке `Authorization: Api-Key <ключ>`;
    - **SoftwareAuthorization** — в заголовке `Software-Authorization: <ключ>`.

1.  Настройте [Callback URL](https://pay.yandex.ru/docs/ru/qr-code/api.md#callback-settings) для получения [нотификаций](https://pay.yandex.ru/docs/ru/qr-code/api.md#webhook) о статусе заказа и операций.

1.  Вы также можете посмотреть тестовые платежи в личном кабинете. Подробнее см. в разделе [Просмотр тестовых платежей](https://pay.yandex.ru/docs/ru/testing.md#test-payments).

#### Оформление заказа с помощью статического QR-кода {#test-static-qr}

1.  Получите `qrcId` методом [/accounts](https://pay.yandex.ru/docs/ru/custom/backend/cash-register/QR-tablichki/getAccounts.md).

1.  Создайте заказ методом [/orders](https://pay.yandex.ru/docs/ru/custom/backend/cash-register/Zakazy/createOrder.md) с одной из тестовых сумм для эмуляции результатов оплаты.

    {% cut "Тестовые суммы" %}

    #|
    || **Сумма** | **Результат** ||
    || 10 000 | Успешная оплата через СБП, карту или в Сплит.

    Статус платежа: `paymentStatus: "CAPTURED"`.

    Статус операции: `operationType: "AUTHORIZE"`, `status: "SUCCESS"`. ||

    || 10 001 | Техническая ошибка.

    Статус платежа: `paymentStatus: "FAILED"`, `reason: "WRONG_ENVIRONMENT"`.

    Статус операции: `operationType: "AUTHORIZE"`, `status: "FAIL"`. ||
    || 10 002 | Недостаточно средств.

    Статус платежа: `paymentStatus: "FAILED"`, `reason: "NOT_ENOUGH_FUNDS"`.

    Статус операции: `operationType: "AUTHORIZE"`, `status: "FAIL"`. ||
    || 10 004 | Вечный статус `PENDING`. Используйте для проверки поллинга и деактивации статического QR-кода.

    Статус платежа: `paymentStatus: "PENDING"` — заказ остается в этом статусе до деактивации.

    Статус операции: `operationType: "AUTHORIZE"`, `status: "PENDING"`. ||
    |#

    {% endcut %}

    Для отображения Сплита в способах оплаты передайте `availablePaymentMethods: ["CARD", "SPLIT"]`.

1.  Яндекс Пэй вернет поле `paymentUrl` с уникальной ссылкой на оплату.

    В sandbox оплата произойдет автоматически — переходить по ссылке не требуется.

    В боевой среде перейдите по ссылке и оплатите заказ через СБП, карту или в Сплит.

1.  Проверьте статус заказа одним из способов:

    - Нотификации (рекомендуется) — дождитесь нотификации [/webhook](https://pay.yandex.ru/docs/ru/custom/backend/merchant-api/webhook.md) с событием `ORDER_STATUS_UPDATED`.

    - Поллинг — опрашивайте статус методом [/orders/{orderId}](https://pay.yandex.ru/docs/ru/custom/backend/cash-register/Zakazy/getOrder.md). Первый запрос через 5–10 секунд после создания заказа, далее не чаще раза в секунду.

    Ожидаемый результат см. в столбце **Результат** в таблице тестовых сумм.

#### Оформление заказа с помощью динамического QR-кода {#test-dynamic-qr}

1.  Создайте заказ методом [/orders/dynamic](https://pay.yandex.ru/docs/ru/custom/backend/cash-register/Zakazy/createDynamicOrder.md) с одной из тестовых сумм для эмуляции результатов оплаты. Получать `qrcId` не требуется — QR-код генерируется автоматически.

    {% cut "Тестовые суммы" %}

    #|
    || **Сумма** | **Результат** ||
    || 10 000 | Успешная оплата через СБП, карту или в Сплит.

    Статус платежа: `paymentStatus: "CAPTURED"`.

    Статус операции: `operationType: "AUTHORIZE"`, `status: "SUCCESS"`. ||

    || 10 001 | Техническая ошибка.

    Статус платежа: `paymentStatus: "FAILED"`, `reason: "WRONG_ENVIRONMENT"`.

    Статус операции: `operationType: "AUTHORIZE"`, `status: "FAIL"`. ||
    || 10 002 | Недостаточно средств.

    Статус платежа: `paymentStatus: "FAILED"`, `reason: "NOT_ENOUGH_FUNDS"`.

    Статус операции: `operationType: "AUTHORIZE"`, `status: "FAIL"`. ||
    || 10 004 | Вечный статус `PENDING`. Используйте для проверки поллинга и деактивации статического QR-кода.

    Статус платежа: `paymentStatus: "PENDING"` — заказ остается в этом статусе до деактивации.

    Статус операции: `operationType: "AUTHORIZE"`, `status: "PENDING"`. ||
    |#

    {% endcut %}

    Для отображения Сплита в способах оплаты передайте `availablePaymentMethods: ["CARD", "SPLIT"]`.

1.  Яндекс Пэй вернет поле `paymentUrl` с уникальной ссылкой на оплату.

    В sandbox оплата произойдет автоматически — переходить по ссылке не требуется.

    В боевой среде перейдите по ссылке и оплатите заказ через СБП, карту или в Сплит.

1.  Проверьте статус заказа одним из способов:

    - Нотификации (рекомендуется) — дождитесь нотификации [/webhook](https://pay.yandex.ru/docs/ru/custom/backend/merchant-api/webhook.md) с событием `ORDER_STATUS_UPDATED`.

    - Поллинг — опрашивайте статус методом [/orders/{orderId}](https://pay.yandex.ru/docs/ru/custom/backend/cash-register/Zakazy/getOrder.md). Первый запрос через 5–10 секунд после создания заказа, далее не чаще раза в секунду.

    Ожидаемый результат см. в столбце **Результат** в таблице тестовых сумм.

#### Поллинг и деактивация (прерывание оплаты) {#test-polling-deactivate}

Деактивация доступна только для статических QR-кодов.

1. Получите `qrcId` методом [/accounts](https://pay.yandex.ru/docs/ru/custom/backend/cash-register/QR-tablichki/getAccounts.md).

1. Создайте заказ методом [/orders](https://pay.yandex.ru/docs/ru/custom/backend/cash-register/Zakazy/createOrder.md) на сумму **10 004 рубля**.

1. Деактивация доступна только для заказов в статусе `paymentStatus: "PENDING"`.

   Проверьте статус заказа методом [/orders/{orderId}](https://pay.yandex.ru/docs/ru/custom/backend/cash-register/Zakazy/getOrder.md).

1. Настройте поллинг:
   - Первый запрос — через 5–10 секунд после создания заказа.

   - Последующие запросы — не чаще одного раза в секунду.

1. Убедитесь, что заказ остается в статусе `paymentStatus: "PENDING"` и деактивируйте его методом [/orders/{orderId}/deactivate](https://pay.yandex.ru/docs/ru/custom/backend/cash-register/Zakazy/deactivateOrder.md).

1. Проверьте статусы:
   - операции: `operationType: "AUTHORIZE"`, `status: "FAIL"`;
   - заказа: `paymentStatus: "FAILED"`, `reason: "Payment rolled back by merchant"`.

#### Полный возврат {#test-full-refund}

1. Создайте и оплатите заказ на сумму **10 000 рублей** с помощью [статического](#test-static-qr) или [динамического QR-кода](#test-dynamic-qr).

1. Возврат доступен только для заказов в статусе `paymentStatus: "CAPTURED"` или `paymentStatus: "PARTIALLY_REFUNDED"`.

   Проверьте статус заказа методом [/orders/{orderId}](https://pay.yandex.ru/docs/ru/custom/backend/cash-register/Zakazy/getOrder.md).

1. Выполните полный возврат методом [/orders/{orderId}/refund](https://pay.yandex.ru/docs/ru/custom/backend/cash-register/Zakazy/refundOrder.md) с параметрами:
   - `externalOperationId` — уникальный идентификатор операции на стороне продавца. По нему можно узнать статус операции и он служит токеном идемпотентности.
   - `refundAmount` — сумма к возврату. Для полного возврата укажите сумму заказа (**10 000 рублей**).
   - `refundCart` — корзина возвращаемых позиций. Для полного возврата можно не указывать.

1. Проверьте статус операции возврата одним из способов:

   - Нотификации (рекомендуется) — дождитесь нотификации [/webhook](https://pay.yandex.ru/docs/ru/custom/backend/merchant-api/webhook.md) с событием `OPERATION_STATUS_UPDATED`.

   - Поллинг — опрашивайте статус методом [/orders/{orderId}](https://pay.yandex.ru/docs/ru/custom/backend/cash-register/Zakazy/getOrder.md). Первый запрос через 5–10 секунд после создания заказа, далее не чаще раза в секунду. Находите нужную операцию по `externalOperationId`, который вы передали в [/orders/{orderId}/refund](https://pay.yandex.ru/docs/ru/custom/backend/cash-register/Zakazy/refundOrder.md).

   Ожидаемый результат: `operationType: "REFUND"`, `status: "SUCCESS"`.

1. Проверьте статус заказа одним из способов:

   - Нотификации (рекомендуется) — дождитесь нотификации [/webhook](https://pay.yandex.ru/docs/ru/custom/backend/merchant-api/webhook.md) с событием `ORDER_STATUS_UPDATED`.

   - Поллинг — опрашивайте статус методом [/orders/{orderId}](https://pay.yandex.ru/docs/ru/custom/backend/cash-register/Zakazy/getOrder.md). Первый запрос через 5–10 секунд после создания заказа, далее не чаще раза в секунду.

   Ожидаемый результат: `paymentStatus: "REFUNDED"`.

#### Частичный возврат {#test-partial-refund}

1. Создайте и оплатите заказ с несколькими позициями на сумму **10 000 рублей** с помощью [статического](#test-static-qr) или [динамического QR-кода](#test-dynamic-qr).

   При формировании корзины используйте [одну из логик](https://pay.yandex.ru/docs/ru/qr-code/api.md#refund-logics): **базовую** без цены за единицу товара `CartItem.unitPrice` или **расширенную** — с `CartItem.unitPrice`.

   От корзины при создании заказа зависит будущая логика возврата.

1. Возврат доступен только для заказов в статусе `paymentStatus: "CAPTURED"` или `paymentStatus: "PARTIALLY_REFUNDED"`.

   Проверьте статус заказа методом [/orders/{orderId}](https://pay.yandex.ru/docs/ru/custom/backend/cash-register/Zakazy/getOrder.md).

1. Выполните частичный возврат методом [/orders/{orderId}/refund](https://pay.yandex.ru/docs/ru/custom/backend/cash-register/Zakazy/refundOrder.md) с параметрами:
   - `externalOperationId` — уникальный идентификатор операции на стороне продавца. По нему можно узнать статус операции и он служит токеном идемпотентности.
   - `refundAmount` — сумма к возврату.
   - `refundCart` — корзина возвращаемых позиций. Обязательна для частичного возврата.

     Формат `refundCart` зависит от логики возвратов. Подробнее см. в разделах [Две логики возвратов](https://pay.yandex.ru/docs/ru/qr-code/api.md#refund-logics) и [Примеры возвратов](https://pay.yandex.ru/docs/ru/custom/backend/cash-register/Zakazy/refundOrder.md#refund-examples).

1. Проверьте статус операции возврата одним из способов:

   - Нотификации (рекомендуется) — дождитесь нотификации [/webhook](https://pay.yandex.ru/docs/ru/custom/backend/merchant-api/webhook.md) с событием `OPERATION_STATUS_UPDATED`.

   - Поллинг — опрашивайте статус методом [/orders/{orderId}](https://pay.yandex.ru/docs/ru/custom/backend/cash-register/Zakazy/getOrder.md). Первый запрос через 5–10 секунд после создания заказа, далее не чаще раза в секунду. Находите нужную операцию по `externalOperationId`, который вы передали в [/orders/{orderId}/refund](https://pay.yandex.ru/docs/ru/custom/backend/cash-register/Zakazy/refundOrder.md).

   Ожидаемый результат: `operationType: "REFUND"`, `status: "SUCCESS"`.

1. Проверьте статус заказа одним из способов:

   - Нотификации (рекомендуется) — дождитесь нотификации [/webhook](https://pay.yandex.ru/docs/ru/custom/backend/merchant-api/webhook.md) с событием `ORDER_STATUS_UPDATED`.

   - Поллинг — опрашивайте статус методом [/orders/{orderId}](https://pay.yandex.ru/docs/ru/custom/backend/cash-register/Zakazy/getOrder.md). Первый запрос через 5–10 секунд после создания заказа, далее не чаще раза в секунду.

   Ожидаемый результат: `paymentStatus: "PARTIALLY_REFUNDED"`.

{% endincluded %}