openapi: 3.1.0
info:
  description: "# Основные положения\n\nВебхуки — это оповещения о происходящих в системе событиях. При наступлении \nопределенного события Xsolla отправляет HTTP-запрос к вашему приложению, в \nкотором передаются данные о событии. Чаще всего отправляется POST-запрос в \nJSON-формате.\n\n<strong>Примеры событий:</strong>\n- взаимодействие пользователя с каталогом товаров;\n- оплата или отмена заказа.\n\nКогда происходит настроенное событие, Xsolla через вебхук оповещает вашу \nсистему об этом. В результате вы можете:\n- пополнить баланс пользователя;\n- выполнить возврат платежа;\n- начислить новые предметы пользователю или списать их;\n- начать предоставление подписки;\n- заблокировать пользователя в случае подозрения в мошенничестве.\n\n<b>Пример работы вебхука обработки платежей:</b>\n\n![Вебхук обработки \nплатежей](https://cdn.xsolla.net/developers/current/images/api_docs/webhooks-general.svg)\n\n<div class=\"note\">\n<p><strong>Примечание</strong></p><p>В зависимости от используемого решения и типа интеграции набор вебхуков и последовательность взаимодействия могут отличаться от приведенного примера.</p>\n</div>\n\n<b>Видеоинструкция по интеграции вебхуков Xsolla:</b>\n\n<div style=\"position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; border-radius: 15px; overflow: hidden;\">\n  <iframe src=\"https://player.vimeo.com/video/1034591338\" style=\"position: absolute; top:0; left: 0; width: 100%; height: 100%; border:0; border-radius: 15px;\" allowfullscreen></iframe>\n</div>\n\n\n<b>Настройка вебхуков при работе с продуктами и решениями Xsolla:</b>\n\n<table>\n<thead>\n    <tr>\n        <th>Продукт/ Решение</th>\n        <th>Обязательно/ Опционально</th>\n        <th>Для чего нужны вебхуки</th>\n    </tr>\n</thead>\n<tbody>\n    <tr>\n        <td>Payments</td>\n        <td>Обязательно</td>\n        <td>\n          <ul>\n            <li>Валидация пользователей.</li>\n            <li>Получение информации о деталях транзакции в случаях успешного платежа или возврата платежа.</li>\n            <li>Начисление купленных товаров пользователю и списание товаров в случае отмены заказа.</li>\n          </ul>\n        </td>\n    </tr>\n    <tr>\n        <td>In-Game Store</td>\n        <td>Обязательно</td>\n        <td>\n          <ul>\n            <li>Валидация пользователей.</li>\n            <li>Получение информации о деталях транзакции в случаях успешного платежа или возврата платежа.</li>\n            <li>Начисление купленных товаров пользователю и списание товаров в случае отмены заказа.</li>\n          </ul>\n        </td>\n    </tr>\n    <tr>\n        <td>Game Sales</td>\n        <td>Опционально</td>\n        <td>Для продажи ключей не требуется валидация пользователя и начисление ему товаров. Вы можете подключить вебхуки, если вы хотите получать информацию о событиях, например об оплате или отмене заказа.<br />Если вы подключите вебхуки, важно обрабатывать все поступающие <a href=\"/ru/webhooks/overview/#section/List-of-required-webhooks\">обязательные вебхуки</a>.\n</td>\n    </tr>\n    <tr>\n        <td>Subscriptions</td>\n        <td>Опционально</td>\n        <td>Получение информации о создании, изменении или отмене подписки. Альтернативный вариант — <a href=\"/doc/subscriptions/integration-guide/get-subscription-information/#guides_subscriptions_get_subscription_information_set_up_via_api\">запрос информации с помощью API</a>.\n</td>\n    </tr>\n    <tr>\n        <td>Web Shop</td>\n        <td>Обязательно</td>\n        <td>\n          <ul>\n            <li>Валидация пользователей.</li>\n            <li>Получение информации о деталях транзакции в случаях успешного платежа или возврата платежа.</li>\n            <li>Начисление купленных товаров пользователю и списание товаров в случае отмены заказа.</li>\n            <li>Аутентификация пользователей, если вы используете аутентификацию через ID пользователя. Альтернативный вариант — использование <a href=\"/solutions/web-shop/authentication-and-analytics/set-up-authentication/#web_shop_guide_shop_with_auth_set_up_auth_xsolla_login_how_to_get_it\">аутентификации пользователей через Xsolla Login</a>.</li>\n          </ul>\n        </td>\n    </tr>\n    <tr>\n        <td>Digital Distribution Hub</td>\n        <td>Обязательно</td>\n        <td>\n          <ul>\n            <li>Валидация пользователей.</li>\n            <li>Связывание ID транзакции со стороны Xsolla с ID транзакции в вашей системе.</li>\n            <li>Передача дополнительных параметров транзакции в заказе.</li>\n            <li>Начисление купленных товаров пользователю и списание их в случае отмены заказа.</li>\n          </ul>\n          <p>Подробная информация по настройке вебхуков для Digital Distribution Hub приведена в <a href=\"/solutions/ddh/#integration_guide_ddh_webhook\">инструкции</a>.</p>\n        </td>\n    </tr>\n    <tr>\n        <td>Login</td>\n        <td>Опционально</td>\n        <td>\n          <p>Получение информации о наступлении события:</p>\n          <ul>\n            <li>регистрация/ авторизация пользователей;</li>\n            <li>подтверждение пользователем email-адреса;</li>\n            <li>привязка аккаунта социальной сети пользователя.</li>\n          </ul>\n          <p>Подробная\_информация о настройке вебхуков приведена в <a href=\"/api/login/operation/add-webhook-for-event/\">документации Login</a>.</p>\n        </td>\n    </tr>\n</tbody>\n</table>\n\n# Список обязательных вебхуков\nЕсли вы используете продукты и решения,\_для которых работа с вебхуками \nобязательна, <a href=\"/webhooks/overview/#section/Set-up-webhooks-in-Publisher-\nAccount\">подключите и протестируйте вебхуки в Личном кабинете</a> и <a \nhref=\"/webhooks/overview/#section/Webhook-listener\">настройте их обработку</a>. \nПри наступлении определенных событий вебхуки отправляются последовательно. \nПоэтому, если вы не обработаете какой-то из вебхуков, последующие вебхуки не \nбудут отправлены. Список необходимых вебхуков представлен ниже.\n\n## In-Game Store и Payments\nНа стороне Xsolla настроено 2 варианта отправки вебхуков при покупке и возврате \nтоваров на сайте — информация с данными платежа и транзакции и информация о \nкупленных товарах может приходить отдельно или может быть объединена в один \nвебхук.\n\n<b>Получение информации в объединенных вебхуках:</b>\n\nЕсли вы зарегистрировались в <a href=\"https://publisher.xsolla.com/\">Личном \nкабинете</a> после 22 января 2025 г., вы получаете всю информацию в вебхуках <a \nhref=\"/webhooks/operation/successful-order-payment\">Успешная оплата заказа</a> \n(`order_paid`) и<a href=\"/webhooks/operation/order-cancellation\"> Отмена \nзаказа</a> (`order_canceled`). В этом случае вам не требуется обрабатывать \nвебхуки <a href=\"/webhooks/operation/payment\">Успешный платеж</a> (`payment`) и \n<a href=\"/webhooks/operation/refund\">Возврат платежа</a> (`refund`).\n\n<b>Получение информации в отдельных вебхуках:</b>\n\nЕсли вы зарегистрировались в <a href=\"https://publisher.xsolla.com/\">Личном \nкабинете</a> до 22 января 2025 г. включительно,\_вы получаете вебхуки:\n- <a href=\"/webhooks/operation/payment\">Успешный платеж</a> (`payment`) и <a \n  href=\"/webhooks/operation/refund\">Возврат платежа</a> (`refund`) с информацией \n  о данных платежа и детали транзакции.\n- <a href=\"/webhooks/operation/successful-order-payment-separate\">Успешная оплата \n  заказа </a> (`order_paid`) и <a href=\"/webhooks/operation/order-cancellation-\n  separate\">Отмена заказа</a> (`order_canceled`) с информацией о купленных \n  товарах.\n\nВам необходимо обрабатывать все поступающие вебхуки.\_Для перехода к новому \nварианту с получением объединенных вебхуков обратитесь к персональному \nменеджеру проекта или напишите на <a \nhref=\"mailto:csm@xsolla.com\">csm@xsolla.com</a>.\n\nДля полноценной работы внутриигрового магазина и управления платежами, \nнеобходимо реализовать обработку основных вебхуков:\n\n<b>Если вы получаете объединенные вебхуки</b>:\n\n<table>\n<thead>\n    <tr>\n        <th>Название и тип вебхука</th>\n        <th>Описание</th>\n    </tr>\n</thead>\n<tbody>\n    <tr>\n        <td>Проверка пользователей &gt;\_<a href=\"/webhooks/operation/user-validation/\">Проверка существования пользователя</a> (<code>user_validation</code>)</td>\n        <td>Отправляется на разных этапах оплаты, чтобы удостовериться, что пользователь зарегистрирован в игре.</td>\n    </tr>\n    <tr>\n        <td>Игровые сервисы &gt; Объединенные вебхуки &gt; <a href=\"/webhooks/operation/successful-order-payment\">Успешная оплата заказа</a> (<code>order_paid</code>)</td>\n        <td>Данные платежа, детали транзакции и информация о купленных товарах. Используйте данные вебхука для начисления товаров пользователю.</td>\n    </tr>\n    <tr>\n        <td>Игровые сервисы &gt; Объединенные вебхуки &gt; <a href=\"/webhooks/operation/order-cancellation\">Отмена заказа</a> (<code>order_canceled</code>)</td>\n        <td>Данные отмененного платежа, детали транзакции и информацию о купленных товарах. Используйте данные вебхука для списания купленных товаров у пользователя.</td>\n    </tr>\n</tbody>\n</table>\n\n\n<b>Если вы получаете отдельные вебхуки</b>:\n\n<table>\n<thead>\n    <tr>\n        <th>Название и тип вебхука</th>\n        <th>Описание</th>\n    </tr>\n</thead>\n<tbody>\n    <tr>\n        <td>Проверка пользователей &gt;\_<a href=\"/webhooks/operation/user-validation/\">Проверка существования пользователя</a> (<code>user_validation</code>)</td>\n        <td>Отправляется на разных этапах оплаты, чтобы удостовериться, что пользователь зарегистрирован в игре.</td>\n    </tr>\n    <tr>\n        <td>Платежи &gt; <a href=\"/webhooks/operation/payment\">Успешный платеж</a> (<code>payment</code>)</td>\n        <td>Данные платежа и детали транзакции.</td>\n    </tr>\n    <tr>\n        <td>Игровые сервисы &gt; Отдельные вебхуки &gt; <a href=\"/webhooks/operation/successful-order-payment-separate\">Успешная оплата заказа</a> (<code>order_paid</code>)</td>\n        <td>Информация о купленных товарах.\_Используйте данные вебхука для начисления товаров пользователю.</td>\n    </tr>\n    <tr>\n        <td>Платежи &gt; <a href=\"/webhooks/operation/refund\">Возврат платежа</a> (<code>refund</code>)</td>\n        <td>Данные платежа и детали транзакции.</td>\n    </tr>\n    <tr>\n        <td>Игровые сервисы &gt; Отдельные вебхуки &gt; <a href=\"/webhooks/operation/order-cancellation-separate\">Отмена заказа</a> (<code>order_canceled</code>)</td>\n        <td>Информация о купленных товарах. Используйте данные вебхука для списания купленных товаров у пользователя.</td>\n    </tr>\n</tbody>\n</table>\n\nЕсли вы используете <a href=\"/doc/in-game-\nstore/features/personalization\">персонализацию</a> каталога товаров, \nреализованную на стороне вашего приложения, настройте обработку вебхука <a \nhref=\"/webhooks/operation/personalized-partner-catalog\">Персонализация каталога \nна стороне партнера</a>.\n\n<div class=\"note\">\n<p><strong>Примечание</strong></p>\n<p>Чтобы принимать реальные платежи, достаточно <a href=\"/doc/in-game-store/integration-guide/sign-licensing-agreement/\">подписать лицензионный договор</a> и реализовать обработку вебхуков:</p>\n<p><ul><li><a href=\"/webhooks/operation/payment\">Успешный платеж</a>, <a href=\"/webhooks/operation/successful-order-payment-separate\">Успешная оплата заказа</a> и <a href=\"/webhooks/operation/user-validation/\">Проверка существования пользователя</a>, если вы получаете отдельные вебхуки.</li><li><a href=\"/webhooks/operation/successful-order-payment\">Успешная оплата заказа</a> и <a href=\"/webhooks/operation/user-validation/\">Проверка существования пользователя</a>, если вы получаете объединенные вебхуки.</li></ul></p>\n</div>\n\n## Subscriptions\nДля автоматического управления планами подписок необходимо реализовать \nобработку основных вебхуков:\n- <a href=\"/webhooks/operation/user-validation/\">Проверка существования \n  пользователя</a> (`user_validation`)\_— отправляется на разных этапах оплаты, \n  чтобы удостовериться, что пользователь зарегистрирован в игре.\n- <a href=\"/webhooks/operation/payment\">Успешный платеж</a> (`payment`) — \n  отправляется, когда заказ оплачен, и содержит информацию о данных платежа и \n  детали транзакции.\n- <a href=\"/webhooks/operation/created-subscription/\">Создание подписки</a> \n  (`create_subscription`) — отправляется, когда был получен ответ об успешной \n  обработке вебхука <a href=\"/webhooks/operation/payment\">Успешный платеж</a> или \n  пользователь приобрел подписку с пробным периодом. Содержит детали купленной \n  подписки и данные пользователя. Используйте данные вебхука для добавления \n  подписки пользователю.\n- <a href=\"/webhooks/operation/updated-subscription/\">Изменение подписки</a> \n  (`update_subscription`) — отправляется при продлении или изменении подписки, \n  когда был получен ответ об успешной обработке вебхука <a \n  href=\"https://developers.xsolla.com/ru/webhooks/operation/payment\">Успешный \n  платеж</a>. Содержит детали купленной подписки и данные пользователя. \n  Используйте данные вебхука для продления подписки пользователю или изменения \n  параметров подписки.\n- <a href=\"/webhooks/operation/refund\">Возврат платежа</a> (`refund`) — \n  отправляется, когда заказ был отменен, и содержит информацию о данных \n  отмененного платежа и детали транзакции.\n- <a href=\"/webhooks/operation/canceled-subscription/\">Отмена подписки</a> \n  (`cancel_subscription`) — отправляется, если был получен ответ об успешной \n  обработке вебхука <a href=\"/webhooks/operation/refund\">Возврат платежа</a> или \n  подписка была отменена по другой причине. Содержит информацию о подписке и \n  данные пользователя. Используйте данные вебхука для списания купленных подписок \n  у пользователя. \n\n# Настройка вебхуков в Личном кабинете\n\n## Общие настройки\n\nЧтобы включить получение вебхуков:\n1. В проекте в Личном кабинете перейдите в раздел <a \n   href=\"https://publisher.xsolla.com/0/projects/0/edit/webhooks/\">Настройки \n   проекта &gt; Вебхуки</a>.\n2. В поле <b>Сервер для вебхуков</b> укажите URL-адрес вашего сервера для \n   получения вебхуков в формате `https://example.com`. Вы также можете ввести \n   URL-адрес из инструмента для тестирования вебхуков.\n\n<div class=\"notice\">\n<p><strong>Внимание</strong></p>\n<p>Для передачи данных используется протокол HTTPS, протокол HTTP не поддерживается.</p>\n</div>\n\n<p></p>\n\n3. Секретный ключ проекта для подписи вебхуков генерируется по умолчанию. Если вы \n   хотите изменить его, нажмите значок обновления.\n4. Нажмите <b>Получать вебхуки</b>.\n\n![Настроить \nвебхуки](https://cdn.xsolla.net/developers/current/images/api_docs/enable.png)\n\n<div class=\"note\">\n<p><strong>Примечание</strong></p>\n<p>Для тестирования вебхуков вы можете выбрать любой специализированный сайт, например <a href=\"https://webhook.site/#!/\">webhook.site</a>, или платформу, например <a href=\"https://ngrok.com/\">ngrok</a>.</p>\n</div>\n\n<p></p>\n\n<div class=\"notice\">\n<p><strong>Внимание</strong></p>\n<p>Вы не можете отправлять вебхуки на разные URL-адреса одновременно. Однако вы можете сначала указать в Личном кабинете URL-адрес для тестирования, а затем изменить его на боевой.</p>\n</div>\n\nЧтобы отключить получение вебхуков:\n1. В проекте в Личном кабинете перейдите в раздел <a \n   href=\"https://publisher.xsolla.com/0/projects/0/edit/webhooks/\">Настройки \n   проекта &gt; Вебхуки</a>.\n2. Нажмите <b>Отключить вебхуки</b>.\n\n## Расширенные настройки\n\nДля вебхуков раздела <a href=\"/webhooks/overview/#section/Test-webhooks-in-\nPublisher-Account/Store\">Payments and Store</a> доступны расширенные настройки. \nОни автоматически отобразятся под блоком <a href=\"/webhooks/overview/#section\n/Set-up-webhooks-in-Publisher-Account/General-settings\">Общие настройки</a> \nпосле того, как\_вы нажмете кнопку <b>Получать вебхуки</b>.\n\n<div class=\"note\">\n<p><strong>Примечание</strong></p>\n<p>Если расширенные настройки не отображаются, убедитесь, что получение вебхуков подключено в общих настройках и вы находитесь на вкладке <b>Тестирование &gt; Payments and Store</b>.</p>\n</div>\n\nВ этом разделе вы можете настроить получение дополнительной информации в \nвебхуках. Для этого установите соответствующие переключатели в активное \nположение. В строке каждого разрешения указаны вебхуки, на которые повлияют \nизменение настроек.\n\n<table>\n<thead>\n    <tr>\n        <th>Переключатель</th>\n        <th>Описание</th>\n    </tr>\n</thead>\n<tbody>\n    <tr>\n        <td>Показывать информацию о сохраненном платежном аккаунте</td>\n        <td>Информация о сохраненном способе оплаты передается в кастомном объекте <code>payment_account</code>.</td>\n    </tr>\n    <tr>\n        <td>Показывать информацию о транзакциях сохраненными способами оплаты</td>\n        <td><p>В вебхуке будет передаваться информация в кастомных параметрах:</p><ul><li><code>saved_payment_method</code>:<ul><li><code>0</code> — сохраненный способ оплаты не используется;</li><li><code>1</code> — способ оплаты был сохранен при совершении текущей транзакции;</li><li><code>2</code> — используется ранее сохраненный способ оплаты.</li></ul></li><li><code>payment_type</code>:<ul><li><code>1</code> — единоразовый платеж;</li><li><code>2</code> — рекуррентный платеж.</li></ul></li></ul></td>\n    </tr>\n    <tr>\n        <td>Добавить объект order в вебхук</td>\n        <td>В вебхуке <a href=\"/webhooks/operation/payment/\">Успешный платеж</a> будет передаваться информация о заказе в объекте <code>order</code>.</td>\n    </tr>\n    <tr>\n        <td>Показывать только необходимую информацию о пользователе без чувствительных данных</td>\n        <td><p>В вебхуке о пользователе будет передаваться только следующая информация:</p><ul><li>ID;</li><li>страна.</li></ul></td>\n    </tr>\n    <tr>\n        <td>Передавать кастомные параметры</td>\n        <td>В вебхуке будет передаваться информация о <a href=\"/api/pay-station/operation/create-token/\">кастомных параметрах из токена</a>.</td>\n    </tr>\n    <tr>\n        <td>Показывать БИН карты и последние 4 цифры ее номера</td>\n        <td><p>В вебхуке будет передаваться следующая информация о номере карты:</p><ul><li>первые 6 цифр в параметре <code>card_bin</code>;</li><li>последние 4 цифры в параметре <code>card_suffix</code>.</li></ul></td>\n    </tr>\n    <tr>\n        <td>Показывать бренд карты</td>\n        <td>Бренд карты, с которой была совершена оплата. Например, Mastercard или Visa.</td>\n    </tr>\n</tbody>\n</table>\n\n![Расширенные \nнастройки](https://cdn.xsolla.net/developers/current/images/api_docs/advanced-settings-upd.png)\n\n# Тестирование вебхуков в Личном кабинете\n\nТестирование вебхуков помогает убедиться в корректной настройке проекта как на \nвашей стороне, так и на стороне Xsolla.\n\nЕсли вебхуки <a href=\"/webhooks/overview/#section/Set-up-webhooks-in-Publisher-\nAccount\">настроены</a> успешно, ниже блока настройки вебхуков отобразится блок \nтестирования вебхуков.\n\n![Раздел тестирования \nвебхуков](https://cdn.xsolla.net/developers/current/images/api_docs/testing.png)\n\nСодержание блока зависит от варианта получения вебхуков.\n\n<b>Если вы получаете объединенные вебхуки</b>:\n\n<table>\n<thead>\n    <tr>\n        <th>Название вкладки для тестирования вебхуков</th>\n        <th>Название и тип вебхука</th>\n    </tr>\n</thead>\n<tbody>\n    <tr>\n        <td><b>Payments and Store</b></td>\n        <td>Проверка пользователей &gt;\_<a href=\"/webhooks/operation/user-validation/\">Проверка существования пользователя</a> (<code>user_validation</code>)</td>\n    </tr>\n    <tr>\n        <td></td>\n        <td>Игровые сервисы &gt; Объединенные вебхуки &gt; <a href=\"/webhooks/operation/successful-order-payment\">Успешная оплата заказа</a> (<code>order_paid</code>)</td>\n    </tr>\n    <tr>\n        <td></td>\n        <td>Игровые сервисы &gt; Объединенные вебхуки &gt; <a href=\"/webhooks/operation/order-cancellation\">Отмена заказа</a> (<code>order_canceled</code>)</td>\n    </tr>\n    <tr>\n        <td><b>Subscriptions</b></td>\n        <td>Проверка пользователей &gt;\_<a href=\"/webhooks/operation/user-validation/\">Проверка существования пользователя</a> (<code>user_validation</code>)</td>\n    </tr>\n    <tr>\n        <td></td>\n        <td>Платежи &gt; <a href=\"/webhooks/operation/payment\">Успешный платеж</a> (<code>payment</code>)</td>\n    </tr>\n</tbody>\n</table>\n\n\n<b>Если вы получаете отдельные вебхуки</b>:\n\n<table>\n<thead>\n    <tr>\n        <th>Название вкладки для тестирования вебхуков</th>\n        <th>Название и тип вебхука</th>\n    </tr>\n</thead>\n<tbody>\n    <tr>\n        <td><b>Store</b></td>\n        <td>Игровые сервисы &gt; Отдельные вебхуки &gt; <a href=\"/webhooks/operation/successful-order-payment-separate\">Успешная оплата заказа</a> (<code>order_paid</code>)</td>\n    </tr>\n    <tr>\n        <td></td>\n        <td>Игровые сервисы &gt; Отдельные вебхуки &gt; <a href=\"/webhooks/operation/order-cancellation-separate\">Отмена заказа</a> (<code>order_canceled</code>)</td>\n    </tr>\n    <tr>\n        <td><b>Payments</b></td>\n        <td>Проверка пользователей &gt;\_<a href=\"/webhooks/operation/user-validation/\">Проверка существования пользователя</a> (<code>user_validation</code>)</td>\n    </tr>\n    <tr>\n        <td></td>\n        <td>Платежи &gt; <a href=\"/webhooks/operation/payment\">Успешный платеж</a> (<code>payment</code>)</td>\n    </tr>\n    <tr>\n        <td><b>Subscriptions</b></td>\n        <td>Проверка пользователей &gt;\_<a href=\"/webhooks/operation/user-validation/\">Проверка существования пользователя</a> (<code>user_validation</code>)</td>\n    </tr>\n    <tr>\n        <td></td>\n        <td>Платежи &gt; <a href=\"/webhooks/operation/payment\">Успешный платеж</a> (<code>payment</code>)</td>\n    </tr>\n</tbody>\n</table>\n\n<div class=\"note\">\n<p><strong>Примечание</strong></p>\n<p>Если в блоке тестирования отобразилось предупреждение, что тест не пройден, проверьте настройки ответа на вебхук в вашем <a href=\"/webhooks/overview/#section/Webhook-listener\">обработчике вебхуков</a>. Причины ошибок в тестировании указаны в результатах тестирования.</p>\n<p><b>Пример:</b></p>\n<p>Для тестирования вы используете специализированный сайт <a href=\"https://webhook.site/#!/\">webhook.site</a>.</p>\n<p>В разделе <b>Тестирование ответа на неверную подпись</b> отображается ошибка.</p>\n<p>Это происходит, потому что Xsolla отправляет вебхук с неверной подписью и ожидает, что ваш обработчик ответит <code>4xx</code> HTTP-кодом с указанием кода ошибки <code>INVALID_SIGNATURE</code>.</p>\n<p><a href=\"https://webhook.site/#!/\">webhook.site</a> отправляет <code>200</code> HTTP-код в ответ на все вебхуки, в том числе на вебхук с неверной подписью. Ожидаемый <code>4xx</code> HTTP-код не может быть получен, поэтому в результате тестирования отображается ошибка.</p>\n</div>\n\n![Ошибка тестирования](https://cdn.xsolla.net/developers/current/images/api_docs/test-error.png)\n\nДалее описан процесс тестирования для сценария с объединенными вебхуками.\n\n## Payments and Store\n\nНа вкладке <b>Payments and Store</b> вы можете протестировать работу следующих \nвебхуков:\n- <a href=\"/webhooks/operation/user-validation/\">Проверка пользователей</a> \n  (`user_validation`)\n- <a href=\"/webhooks/operation/successful-order-payment\">Успешная оплата \n  заказа</a> (`order_paid`)\n- <a href=\"/webhooks/operation/order-cancellation\">Отмена заказа</a> \n  (`order_canceled`)\n\nЧтобы протестировать вебхуки:\n1. В блоке тестирования вебхуков перейдите на вкладку <b>Payments and Store</b>.\n2. В раскрывающемся списке выберите тип товара. Если выбранный тип товара еще не \n   настроен в Личном кабинете, нажмите:\n   * <b>Подключить</b> – если модуль с товарами данного типа еще не подключен;\n   * <b>Настроить</b> – если вы ранее уже подключали модуль, но не завершили \n     настройку.<br/>При нажатии кнопки вы будете перенаправлены в раздел Личного \n     кабинета, соответствующий типу выбранного товара. После создания товара \n     вернитесь в раздел тестирования вебхуков и перейти к следующему шагу.\n3. Заполните необходимые поля: <ol type=\"a\"> <li>Выберите артикул товара из \n   раскрывающегося списка и укажите его количество. Вы можете выбрать несколько \n   товаров. Для этого нажмите <b>+</b> и добавьте товары в новой строке.</li> \n   <li><b>ID пользователя</b> — при тестировании вы можете указать любую \n   комбинацию букв и цифр.</li> <li><b>Public user ID</b> — ID, который известен \n   пользователю, например, email или никнейм. Это поле отображается, если public \n   user ID включен в вашем проекте в разделе <b>Pay Station &gt; \n   Настройки</b>.</li> <li>Укажите произвольное значение в поле <b>ID заказа \n   Xsolla</b>.</li> <li><b>ID заявки в Xsolla</b> —\_ID транзакции на стороне \n   Xsolla. При тестировании вы можете указать любое числовое значение.</li> \n   <li><b>Invoice ID</b> — ID транзакции на стороне вашей игры. При тестировании \n   вы можете указать любую комбинацию букв и цифр. Для успешной оплаты это не \n   обязательный параметр, но вы можете передать его, чтобы связать ID транзакции \n   на вашей стороне с ID транзакции на стороне Xsolla.</li> <li><b>Количество</b> \n   — сумма платежа. При тестировании вы можете указать любое числовое \n   значение.</li> <li><b>Валюта</b> — выберите валюту из раскрывающегося \n   списка.</li> </ol>\n\n4. Нажмите\_<b>Проверить вебхук</b>.\n\n\nНа URL-адрес сервера вебхуков придут вебхуки <a href=\"/webhooks/operation/user-\nvalidation/\">Проверка существования пользователя</a>, <a \nhref=\"/webhooks/operation/successful-order-payment\">Успешная оплата заказа</a> \nи <a href=\"/webhooks/operation/order-cancellation\">Отмена заказа</a> с \nуказанными данными. Ниже кнопки\_<b>Проверить вебхук</b> отобразятся результаты \nтестирования каждого типа вебхука.\n\nЕсли в вашем проекте включен public user ID, в результатах тестирования также \nотобразится проверка поиска пользователя.\n\nДля каждого вебхука вам необходимо настроить обработку обоих сценариев: \nуспешного и с ошибкой.\n\n![Раздел тестирования \nплатежей](https://cdn.xsolla.net/developers/current/images/api_docs/payments-tab.png)\n\n## Subscriptions\nНа вкладке <b>Subscriptions</b> вы можете протестировать работу следующих \nвебхуков при управлении подписками:\n- <a href=\"/webhooks/operation/user-validation/\">Проверка пользователей</a> \n  (`user_validation`)\n- <a href=\"/webhooks/operation/payment\">Успешный платеж</a> (`payment`)\n\n<div class=\"note\">\n<p><strong>Примечание</strong></p>\n<p>В Личном кабинете вы можете протестировать только базовые вебхуки Проверка существования пользователей и Успешный платеж. Для тестирования остальных вебхуков перейдите к разделам:</p>\n<p><ul><li><a href=\"/doc/subscriptions/integration-guide/get-subscription-information/#guides_subscriptions_get_subscription_set_up_webhooks_test_payment\">тестирование покупки подписки;</a></li><li><a href=\"/doc/subscriptions/integration-guide/get-subscription-information/#guides_subscriptions_get_subscription_set_up_webhooks_test_renewal\">тестирование продления подписки;</a></li><li><a href=\"/doc/subscriptions/integration-guide/get-subscription-information/#guides_subscriptions_get_subscription_set_up_webhooks_test_cancelation\">тестирование отмены подписки.</a></li></ul></p>\n</div>\n\n<p></p>\n\n<div class=\"note\">\n<p><strong>Примечание</strong></p>\n<p>Для тестирования вебхуков у вас должен быть <a href=\"/doc/subscriptions/integration-guide/set-up-plan/\">создан хотя бы один план подписки</a> в разделе <b>Личный кабинет&gt; Subscriptions &gt; Планы подписки</b>.</p>\n</div>\n\nЧтобы выполнить тестирование: <ol> <li>В блоке тестирования вебхуков перейдите \nна вкладку <b>Subscriptions</b>.</li> <li>Заполните необходимые поля: <ol \ntype=\"a\"> <li><b>ID пользователя</b> — при тестировании вы можете указать любую \nкомбинацию букв и цифр.</li> <li><b>ID заявки в Xsolla</b> — ID транзакции на \nстороне Xsolla. При тестировании вы можете указать любое числовое \nзначение.</li> <li><b>Public user ID</b> — ID, который известен пользователю, \nнапример, email или никнейм. Это поле отображается, если public user ID включен \nв вашем проекте в разделе Pay Station &gt; Settings &gt; Additional settings \nsection.</li> <li><b>Валюта</b> — выберите валюту из раскрывающегося \nсписка.</li> <li><b>ID плана</b> — план подписки. Выберите план из \nраскрывающегося списка.</li> <li><b>Продукт подписки</b>— выберите продукт из \nраскрывающегося списка (опционально).</li> <li><b>Сумма </b> — сумма платежа. \nПри тестировании вы можете указать любое числовое значение.</li> <li><b>Invoice \nID</b>— ID транзакции на стороне вашей игры. При тестировании вы можете указать \nлюбую комбинацию букв и цифр.Для успешной оплаты это не обязательный параметр, \nно вы можете передать его, чтобы связать ID транзакции на вашей стороне с ID \nтранзакции на стороне Xsolla.</li> <li><b>Пробный период</b>. Для тестирования \n<a href=\"/doc/subscriptions/integration-guide/get-subscription-information/#guides_subscriptions_get_subscription_set_up_webhooks_sandbox\">покупки подписки без пробного периода</a> или тестирования <a \nhref=\"/doc/subscriptions/integration-guide/get-subscription-information/#guides_subscriptions_get_subscription_set_up_webhooks_test_renewal\">продления подписки</a>, укажите значение <code>0</code>.</li> </ol> </li> \n<li>Нажмите <b>Тестировать вебхуки</b>.</li> </ol>\n\nНа указанный URL-адрес придут вебхуки с введенными данными. Ниже кнопки \n<b>Тестировать вебхуки</b> отобразятся результаты тестирования каждого вебхука \nкак для успешного сценария, так и для случая возникновения ошибки.\n\n<a id=\"webhook-listener\"></a>\n\n# Обработчик вебхуков\n\nОбработчик вебхуков – это программный код, который позволяет принимать \nпоступающие вебхуки на указанный URL-адрес, <a href=\"/webhooks/overview/#section\n/Webhook-listener/Generation-of-signature\">генерировать подпись</a> и <a \nhref=\"/webhooks/overview/#section/Webhook-listener/Sending-responses-to-\nwebhook\">отправлять ответ</a> на вебхук на сервер Xsolla.\n\n<div class=\"note\">\n<p><strong>Примечание</strong></p>\n<p>Вы можете использовать <a href=\"https://developers.xsolla.com/ru/sdk/php/\">библиотеку Pay Station PHP SDK</a>, которая содержит готовые классы для обработки вебхуков.</p>\n</div>\n\n<!-- IMPORTANT! Changing the list of IP addresses should be coordinated with the administrators. Request for Director of Infrastructure and IT approval in the ticket for changing the IP address list. -->\n\nНа стороне вашего приложения реализуйте прием вебхуков со следующих IP-адресов:\n- `185.30.20.0/24`;\n- `185.30.21.0/24`;\n- `185.30.22.0/24`;\n- `185.30.23.0/24`;\n- `34.102.38.178`;\n- `34.94.43.207`\n- `35.236.73.234`;\n- `34.94.69.44`;\n- `34.102.22.197`.\n\nЕсли у вас подключен продукт <a href=\"/doc/login/\">Login</a>, дополнительно \nдобавьте обработку вебхуков со следующих IP-адресов:\n\n- `34.94.0.85`;\n- `34.94.14.95`;\n- `34.94.25.33`;\n- `34.94.115.185`;\n- `34.94.154.26`;\n- `34.94.173.132`;\n- `34.102.48.30`;\n- `35.235.99.248`;\n- `35.236.32.131`;\n- `35.236.35.100`;\n- `35.236.117.164`.\n\nОграничения:\n- В базе данных вашего приложения не должно быть нескольких успешных транзакций с \n  одинаковым ID.\n- Если обработчик вебхуков получил вебхук с ID, который уже существует в базе, \n  необходимо вернуть результат предыдущей обработки данной транзакции. Не \n  рекомендуется зачислять пользователю повторную покупку и создавать дублирующие \n  записи в базе данных.\n\n## Генерация подписи\n\nЧтобы обеспечить безопасную передачу данных, вам необходимо убедиться, что \nвебхук действительно был отправлен с сервера Xsolla и не был изменен в процессе \nпередачи. Для этого сгенерируйте собственную подпись на основе тела запроса и \nсравните ее с подписью, полученной в заголовке `authorization` этого же \nзапроса. Если подписи совпадают, вебхук является подлинным и его можно \nобрабатывать.\n\nШаги верификации:\n\n1. Получите подпись из заголовка `authorization` входящего запроса вебхука. Формат \n   заголовка: `Signature <signature_value>`.\n2. Получите тело запроса вебхука в формате JSON. <div \n   class=\"notice\"><p><strong>Внимание</strong></p><p>Используйте JSON в полученном \n   виде. Не парсите и не перекодируйте данные, так как это изменит форматирование \n   и приведет к ошибке проверки подписи.</p></div><p></p>\n\n3. Сгенерируйте собственную подпись для сравнения:<ol type=\"a\"> <li>Конкатенируйте \n   JSON из тела запроса и секретный ключ проекта, т. е. объедините две строки, \n   добавив секретный ключ проекта в конец строки.</li> <li>Примените к полученной \n   строке криптографическую хэш-функцию SHA-1. В результате вы получите \n   шестнадцатеричную строку в нижнем регистре.</li> </ol>\n4. Сравните полученную строку с подписью из заголовка `authorization`. Если \n   подписи совпадают, вебхук является подлинным.\n\nНиже вы можете найти примеры реализации генерации подписи для следующих языков: \nC#, C++, Go, PHP и Node.js.\n\n### Пример вебхука (HTTP):\n\n```http\nPOST /your_uri HTTP/1.1\nhost: your.host\naccept: application/json\ncontent-type: application/json\ncontent-length: 165\nauthorization: Signature 52eac2713985e212351610d008e7e14fae46f902\n{\n  \"notification_type\":\"user_validation\",\n  \"user\":{\n      \"ip\":\"127.0.0.1\",\n      \"phone\":\"18777976552\",\n      \"email\":\"email@example.com\",\n      \"id\":1234567,\n      \"name\":\"Xsolla User\",\n      \"country\":\"US\"\n  }\n}\n```\n\n### Пример вебхука (curl):\n\n```bash\ncurl -v 'https://your.hostname/your/uri' \\\n-X POST \\\n-H 'authorization: Signature 52eac2713985e212351610d008e7e14fae46f902' \\\n-d '{\n  \"notification_type\":\n    \"user_validation\",\n    \"user\":\n      {\n        \"ip\": \"127.0.0.1\",\n        \"phone\": \"18777976552\",\n        \"email\": \"email@example.com\",\n        \"id\": 1234567,\n        \"name\": \"Xsolla User\",\n        \"country\": \"US\"\n      }\n    }'\n```\n\n### Пример реализации генерации подписи для C# (универсальный пример):\n\n<div class=\"note\">\n<p><strong>Примечание</strong></p>\n<p>Этот пример кода совместим с .NET Framework 4.0 и выше, а также с .NET Core и другими современными версиями .NET. Для проверки подписи реализовано сравнение с постоянным временем выполнения с помощью метода <code>ConstantTimeEquals</code>, что помогает предотвратить атаки по времени.</p>\n</div>\n\n```csharp\nusing System;\nusing System.Security.Cryptography;\nusing System.Text;\npublic static class XsollaWebhookSignature\n{\n    public static string ComputeSha1(string jsonBody, string secretKey)\n    {\n        // Concatenation of the JSON from the request body and the project's secret key\n        string dataToSign = jsonBody + secretKey;\n        using (SHA1 sha1 = SHA1.Create())\n        {\n            byte[] hashBytes = sha1.ComputeHash(Encoding.UTF8.GetBytes(dataToSign));\n            // Convert hash bytes to lowercase hexadecimal string\n            var hexString = new StringBuilder(hashBytes.Length * 2);\n            foreach (byte b in hashBytes)\n            {\n                hexString.Append(b.ToString(\"x2\"));\n            }\n            return hexString.ToString();\n        }\n    }\n    public static bool VerifySignature(string jsonBody, string secretKey, string receivedSignature)\n    {\n        string computedSignature = ComputeSha1(jsonBody, secretKey);\n        string receivedSignatureLower = receivedSignature.ToLower();\n        // Use constant-time comparison to prevent timing attacks\n        return ConstantTimeEquals(computedSignature, receivedSignatureLower);\n    }\n    private static bool ConstantTimeEquals(string a, string b)\n    {\n        if (a.Length != b.Length)\n        {\n            return false;\n        }\n        int result = 0;\n        for (int i = 0; i < a.Length; i++)\n        {\n            result |= a[i] ^ b[i];\n        }\n        return result == 0;\n    }\n}\n```\n\n### Пример реализации генерации подписи для C# (.NET 5.0 и выше):\n\n<div class=\"note\">\n<p><strong>Примечание</strong></p>\n<p>Чтобы использовать метод <code>Convert.ToHexString</code>, вам необходима версия .NET 5.0 или выше.<p></p>Если у вас версия .NET 7.0 или выше, вы также можете использовать метод <code>CryptographicOperations.FixedTimeEquals</code> вместо <code>ConstantTimeEquals</code>.</p>\n</div>\n\n```csharp\n// For .NET 5.0 and later, you can use the more concise Convert.ToHexString method:\nusing System;\nusing System.Security.Cryptography;\nusing System.Text;\npublic static class XsollaWebhookSignature\n{\n    public static string ComputeSha1(string jsonBody, string secretKey)\n    {\n        string dataToSign = jsonBody + secretKey;\n        using var sha1 = SHA1.Create();\n        byte[] hashBytes = sha1.ComputeHash(Encoding.UTF8.GetBytes(dataToSign));\n        return Convert.ToHexString(hashBytes).ToLower();\n    }\n    public static bool VerifySignature(string jsonBody, string secretKey, string receivedSignature)\n    {\n        string computedSignature = ComputeSha1(jsonBody, secretKey);\n        string receivedSignatureLower = receivedSignature.ToLower();\n        // Use constant-time comparison to prevent timing attacks\n        return ConstantTimeEquals(computedSignature, receivedSignatureLower);\n    }\n    private static bool ConstantTimeEquals(string a, string b)\n    {\n        if (a.Length != b.Length)\n        {\n            return false;\n        }\n        int result = 0;\n        for (int i = 0; i < a.Length; i++)\n        {\n            result |= a[i] ^ b[i];\n        }\n        return result == 0;\n    }\n}\n```\n\n### Пример реализации генерации подписи для C# (.NET 7.0 и выше):\n\n<div class=\"note\">\n<p><strong>Примечание</strong></p>\n<p>Если у вас версия .NET 7.0 или выше, вы можете использовать метод <code>CryptographicOperations.FixedTimeEquals</code>.</p>\n</div>\n\n```csharp\n// For .NET 7.0+, you can use the built-in CryptographicOperations.FixedTimeEquals:\nusing System.Security.Cryptography;\npublic static bool VerifySignature(string jsonBody, string secretKey, string receivedSignature)\n{\n    string computedSignature = ComputeSha1(jsonBody, secretKey);\n    byte[] computedBytes = Encoding.UTF8.GetBytes(computedSignature);\n    byte[] receivedBytes = Encoding.UTF8.GetBytes(receivedSignature.ToLower());\n    return CryptographicOperations.FixedTimeEquals(computedBytes, receivedBytes);\n}\n```\n\n### Пример реализации генерации подписи для C++:\n\n```c++\n#include <string>\n#include <sstream>\n#include <iomanip>\n#include <openssl/sha.h>\nclass XsollaWebhookSignature {\npublic:\n    static std::string computeSha1(const std::string& jsonBody, const std::string& secretKey) {\n        // Concatenation of the JSON from the request body and the project's secret key\n        std::string dataToSign = jsonBody + secretKey;\n        unsigned char digest[SHA_DIGEST_LENGTH];\n        // Create SHA1 hash\n        SHA1(reinterpret_cast<const unsigned char*>(dataToSign.c_str()),\n             dataToSign.length(), digest);\n        // Convert to lowercase hexadecimal string\n        std::ostringstream hexStream;\n        hexStream << std::hex << std::setfill('0');\n        for (int i = 0; i < SHA_DIGEST_LENGTH; ++i) {\n            hexStream << std::setw(2) << static_cast<unsigned int>(digest[i]);\n        }\n        return hexStream.str();\n    }\n    static bool verifySignature(const std::string& jsonBody, const std::string& secretKey, const std::string& receivedSignature) {\n        std::string computedSignature = computeSha1(jsonBody, secretKey);\n        // Timing-safe comparison\n        if (computedSignature.length() != receivedSignature.length()) {\n            return false;\n        }\n        volatile unsigned char result = 0;\n        for (size_t i = 0; i < computedSignature.length(); ++i) {\n            result |= (computedSignature[i] ^ receivedSignature[i]);\n        }\n        return result == 0;\n    }\n};\n```\n\n### Пример реализации генерации подписи для Go:\n\n```go\npackage main\nimport (\n\t\"crypto/sha1\"\n    \"crypto/subtle\"\n\t\"encoding/hex\"\n\t\"strings\"\n)\ntype XsollaWebhookSignature struct{}\nfunc (x *XsollaWebhookSignature) ComputeSha1(jsonBody, secretKey string) string {\n\t// Concatenation of the JSON from the request body and the project's secret key\n\tdataToSign := jsonBody + secretKey\n\t// Create SHA1 hash\n\th := sha1.New()\n\th.Write([]byte(dataToSign))\n\tsignature := h.Sum(nil)\n\t// Convert to lowercase hexadecimal string\n\treturn strings.ToLower(hex.EncodeToString(signature))\n}\nfunc (x *XsollaWebhookSignature) VerifySignature(jsonBody, secretKey, receivedSignature string) bool {\n\tcomputedSignature := x.ComputeSha1(jsonBody, secretKey)\n\treceivedSignatureLower := strings.ToLower(receivedSignature)\n\t// Use constant time comparison to prevent timing attacks\n\treturn subtle.ConstantTimeCompare([]byte(computedSignature), []byte(receivedSignatureLower)) == 1\n}\n```\n\n### Пример реализации генерации подписи для PHP:\n\n```php\n<?php\nclass XsollaWebhookSignature\n{\n    /**\n     * Compute SHA1 signature from webhook JSON body and secret key\n     *\n     * @param string $jsonBody The raw JSON body from webhook\n     * @param string $secretKey The project's secret key\n     * @return string The lowercase SHA1 signature\n     */\n    public static function computeSha1(string $jsonBody, string $secretKey): string\n    {\n        // Concatenation of the JSON from the request body and the project's secret key\n        $dataToSign = $jsonBody . $secretKey;\n        // Generate SHA1 signature\n        $signature = sha1($dataToSign);\n        return strtolower($signature);\n    }\n    /**\n     * Verify webhook signature using timing-safe comparison\n     *\n     * @param string $jsonBody The raw JSON body from webhook\n     * @param string $secretKey The project's secret key  \n     * @param string $receivedSignature The signature from authorization header\n     * @return bool True if signature is valid, false otherwise\n     */\n    public static function verifySignature(string $jsonBody, string $secretKey, string $receivedSignature): bool\n    {\n        $computedSignature = self::computeSha1($jsonBody, $secretKey);\n        // Use hash_equals for timing-safe comparison\n        return hash_equals($computedSignature, strtolower($receivedSignature));\n    }\n}\n?>\n```\n\n### Пример реализации генерации подписи для Node.js:\n\n```js\nconst crypto = require('crypto');\nclass XsollaWebhookSignature {\n    // IMPORTANT: jsonBody must be the raw JSON string exactly as received from Xsolla\n    static computeSha1(jsonBody, secretKey) {\n        // Concatenation of the JSON from the request body and the project's secret key\n        const dataToSign = jsonBody + secretKey;\n        // Create SHA1 hash\n        const hash = crypto.createHash('sha1');\n        hash.update(dataToSign, 'utf8');\n        // Convert to lowercase hexadecimal string\n        return hash.digest('hex').toLowerCase();\n    }\n    static verifySignature(jsonBody, secretKey, receivedSignature) {\n        const computedSignature = this.computeSha1(jsonBody, secretKey);\n        const cleanReceivedSignature = receivedSignature.toLowerCase();\n        // Check if signatures have the same length before using timingSafeEqual\n        if (computedSignature.length !== cleanReceivedSignature.length) {\n            return false;\n        }\n        try {\n            return crypto.timingSafeEqual(\n                Buffer.from(computedSignature, 'hex'),\n                Buffer.from(cleanReceivedSignature, 'hex')\n            );\n        } catch (error) {\n            // Return false if there's any error (e.g., invalid hex characters)\n            return false;\n        }\n    }\n}\n```\n\n## Отправка ответов на вебхук\n\nЧтобы подтвердить получение вебхука, ваш сервер должен вернуть:\n* `200`, `201`, или `204` HTTP-код в случае успешного ответа.\n* `400` HTTP-код с <a href=\"/webhooks/overview/#section/Oshibki\">описанием \n  проблемы</a>, если указанный пользователь не был найден или если передана \n  недействительная подпись. Ваш обработчик вебхуков также может возвращать `5xx` \n  HTTP-код при временных проблемах на вашем сервере.\n\nЕсли на вебхуки <a href=\"/webhooks/operation/successful-order-payment\">Успешная \nоплата заказа</a> и <a href=\"/webhooks/operation/order-cancellation\">Отмена \nзаказа</a> сервер Xsolla не получил ответ или получил ответ с кодом `5xx`, \nосуществляется повторная отправка вебхуков по следующему расписанию:\n* 2 попытки с интервалом 5 минут;\n* 7 попыток с интервалом 15 минут;\n* 10 попыток с интервалом 60 минут.\n\nМаксимально осуществляется 20 попыток отправки вебхуков в течение 12 часов с \nмомента первой попытки.\n\nЛогика повторной отправки вебхуков <a \nhref=\"/webhooks/operation/payment\">Успешный платеж</a> и <a \nhref=\"/webhooks/operation/refund\">Возврат платежа</a> описана на странице \nсоответствующего вебхука.\n\n<div class=\"notice\">\n<p><strong>Внимание</strong></p>\n<p>При одновременном выполнении следующих условий платеж все равно будет возвращен пользователю:<ul><li>Инициатор возврата — Xsolla.</li><li>На вебхук получен ответ с кодом <code>4xx</code>, или после всех повторных попыток ответ не был получен, или был получен код <code>5xx</code>.</li></ul></p>\n</div>\n\nЕсли на вебхук <a href=\"/webhooks/operation/user-validation/\">Проверка \nсуществования пользователя</a> сервер Xsolla не получил ответ или получил ответ \nс `400` или `5xx` HTTP-кодом, повторная отправка вебхука\_<a \nhref=\"/webhooks/operation/user-validation/\">Проверка существования \nпользователя</a>\_не осуществляется. Пользователь увидит ошибку, вебхуки <a \nhref=\"/webhooks/operation/payment\">Успешный платеж</a> и <a \nhref=\"/webhooks/operation/successful-order-payment\">Успешная оплата заказа</a> \nотправлены не будут.\n\n# Ошибки\n\nКоды ошибок для HTTP-кода 400:\n\n<table>\n<thead>\n    <tr>\n        <th>Код</th>\n        <th>Описание</th>\n    </tr>\n</thead>\n<tbody>\n    <tr>\n        <td>INVALID_USER</td>\n        <td>Неверный пользователь</td>\n    </tr>\n    <tr>\n        <td>INVALID_PARAMETER</td>\n        <td>Неверный параметр</td>\n    </tr>\n    <tr>\n        <td>INVALID_SIGNATURE</td>\n        <td>Подпись неверна</td>\n    </tr>\n    <tr>\n        <td>INCORRECT_AMOUNT</td>\n        <td>Некорректная сумма</td>\n    </tr>\n    <tr>\n        <td>INCORRECT_INVOICE</td>\n        <td>Неверный заказ</td>\n    </tr>\n</tbody>\n</table>\n\n```\nHTTP/1.1 400 Bad Request\n{\n    \"error\":{\n        \"code\":\"INVALID_USER\",\n        \"message\":\"Invalid user\"\n    }\n}\n```\n\n# Список вебхуков\n\n<div class=\"note\">\n<p><strong>Примечание</strong></p>\n<p>Тип оповещения передается в параметре <code>notification_type</code>.</p>\n</div>\n\n<table>\n<thead>\n    <tr>\n        <th>Вебхук</th>\n        <th>Тип оповещения</th>\n        <th>Описание</th>\n    </tr>\n</thead>\n<tbody>\n    <tr>\n        <td><a href=\"/webhooks/operation/user-validation/\">Проверка существования пользователя</a></td>\n        <td><code>user_validation</code></td>\n        <td>Проверка существования пользователя в игре.</td>\n    </tr>\n    <tr>\n        <td><a href=\"/webhooks/operation/user-search/\">Поиск пользователя</a></td>\n        <td><code>user_search</code></td>\n        <td>Получение информации о пользователе по публичному ID пользователя.</td>\n    </tr>\n    <tr>\n        <td><a href=\"/webhooks/operation/payment/\">Успешный платеж</a></td>\n        <td><code>payment</code></td>\n        <td>Оповещение об успешном платеже.</td>\n    </tr>\n    <tr>\n        <td><a href=\"/webhooks/operation/refund/\">Возврат платежа</a></td>\n        <td><code>refund</code></td>\n        <td>Оповещение об отмене платежа.</td>\n    </tr>\n    <tr>\n        <td><a href=\"/webhooks/operation/partial-refund/\">Частичный возврат платежа</a></td>\n        <td><code>partial_refund</code></td>\n        <td>Оповещение о частичном возврате платежа.</td>\n    </tr>\n    <tr>\n        <td><a href=\"/webhooks/operation/payment-declined/\">Отмена платежа</a></td>\n        <td><code>ps_declined</code></td>\n        <td>Оповещение об отмене транзакции платежной системой.</td>\n    </tr>\n    <tr>\n        <td><a href=\"https://developers.xsolla.com/ru/webhooks/operation/afs-rejected-transaction/\">Транзакция отклонена при проверке AFS</a></td>\n        <td><code>afs_reject</code></td>\n        <td>Оповещение об отмене транзакции системой расширенного антифрода.</td>\n    </tr>\n    <tr>\n      <td><a href=\"https://developers.xsolla.com/ru/webhooks/operation/afs-rejected-blocklist/\">Обновление черного списка AFS</a></td>\n      <td><code>afs_black_list</code></td>\n      <td>Оповещение об изменении черного списка AFS.</td>\n    </tr>\n    <tr>\n      <td><a href=\"https://developers.xsolla.com/ru/webhooks/operation/created-subscription/\">Создание подписки</a></td>\n      <td><code>create_subscription</code></td>\n      <td>Оповещение о создании подписки.</td>\n    </tr>\n    <tr>\n      <td><a href=\"https://developers.xsolla.com/ru/webhooks/operation/updated-subscription/\">Изменение подписки</a></td>\n      <td><code>update_subscription</code></td>\n      <td>Оповещение о продлении подписки или о смене каких-либо параметров внутри подписки.</td>\n    </tr>\n    <tr>\n      <td><a href=\"https://developers.xsolla.com/ru/webhooks/operation/canceled-subscription/\">Отмена подписки</a></td>\n      <td><code>cancel_subscription</code></td>\n      <td>Оповещение об отмене подписки.</td>\n    </tr>\n    <tr>\n      <td><a href=\"https://developers.xsolla.com/ru/webhooks/operation/nonrenewing-subscription/\">Непродлеваемая подписка</a></td>\n      <td><code>non_renewal_subscription</code></td>\n      <td>Оповещение о смене статуса на непродлеваемый.</td>\n    </tr>\n    <tr>\n      <td><a href=\"https://developers.xsolla.com/ru/webhooks/operation/add-payment-account/\">Добавление платежного аккаунта</a></td>\n      <td><code>payment_account_add</code></td>\n      <td>Оповещение о добавлении или сохранении платежного аккаунта.</td>\n    </tr>\n    <tr>\n      <td><a href=\"https://developers.xsolla.com/ru/webhooks/operation/remove-payment-account/\">Удаление платежного аккаунта</a></td>\n      <td><code>payment_account_remove</code></td>\n      <td>Оповещение об удалении платежного аккаунта.</td>\n    </tr>\n    <tr>\n      <td><a href=\"https://developers.xsolla.com/ru/webhooks/operation/user-validation-in-webshop\">Проверка пользователя в Web Shop</a></td>\n      <td><code>-</code></td>\n      <td>Отправлено из Web Shop для проверки существования пользователя в игре.</td>\n    </tr>\n    <tr>\n      <td><a href=\"https://developers.xsolla.com/ru/webhooks/operation/personalized-partner-catalog\">Персонализация каталога на стороне партнера</a></td>\n      <td><code>partner_side_catalog</code></td>\n      <td>Отправляется, когда пользователь взаимодействует с магазином.</td>\n    </tr>\n    <tr>\n      <td><a href=\"https://developers.xsolla.com/ru/webhooks/operation/successful-order-payment\">Успешная оплата заказа</a></td>\n      <td><code>order_paid</code></td>\n      <td>Отправляется, когда заказ оплачен.</td>\n    </tr>\n    <tr>\n      <td><a href=\"https://developers.xsolla.com/ru/webhooks/operation/order-cancellation\">Отмена заказа</a></td>\n      <td><code>order_canceled</code></td>\n      <td>Отправляется, когда заказ отменен.</td>\n    </tr>\n    <tr>\n      <td><a href=\"https://developers.xsolla.com/ru/webhooks/operation/dispute\">Диспут</a></td>\n      <td><code>dispute</code></td>\n      <td>Оповещение об открытии нового диспута.</td>\n    </tr>\n</tbody>\n</table>\n"
  title: Вебхуки
  version: '1.0'
servers:
  - url: https://api.xsolla.com/merchant/v2
tags:
  - name: user-validation
    x-displayName: Проверка пользователей
  - name: payments
    x-displayName: Payments
  - name: game-services
    x-displayName: Игровые сервисы
  - name: anti-fraud
    x-displayName: Антифрод
  - name: subscriptions
    x-displayName: Subscriptions
  - name: combined-webhooks
    x-displayName: Объединенные вебхуки
  - name: separate-webhooks
    x-displayName: Отдельные вебхуки
  - name: personalization
    x-displayName: Вебхук персонализации
webhooks:
  add-payment-account:
    post:
      description: >-
        Когда пользователь добавляет платежный аккаунт вручную или сохраняет
        платежный аккаунт при совершении покупки, Xsolla отправляет вебхук с
        типом `payment_account_add` на URL-адрес вебхука. Чтобы получать вебхук,
        обратитесь к персональному менеджеру проекта или напишите на <a
        href="mailto:csm@xsolla.com">csm@xsolla.com</a>.
      operationId: add-payment-account
      requestBody:
        content:
          application/json:
            schema:
              properties:
                notification_type:
                  $ref: '#/components/schemas/notification_type'
                payment_account:
                  description: Объект с информацией о платежном аккаунте.
                  properties:
                    country:
                      $ref: '#/components/schemas/payment_account.country'
                    id:
                      $ref: '#/components/schemas/payment_account.id'
                    name:
                      $ref: '#/components/schemas/payment_account.name'
                    payment_method:
                      $ref: '#/components/schemas/payment_account.payment_method'
                    type:
                      $ref: '#/components/schemas/payment_account.type'
                  required:
                    - id
                  type: object
                settings:
                  description: Объект, содержащий настройки проекта.
                  properties:
                    merchant_id:
                      $ref: '#/components/schemas/settings.merchant_id'
                    project_id:
                      $ref: '#/components/schemas/settings.project_id'
                  type: object
                user:
                  description: Объект с информацией о пользователе.
                  properties:
                    country:
                      $ref: '#/components/schemas/user.country'
                    email:
                      $ref: '#/components/schemas/user.email'
                    id:
                      $ref: '#/components/schemas/user.id'
                    ip:
                      $ref: '#/components/schemas/user.ip'
                    name:
                      $ref: '#/components/schemas/user.name'
                    zip:
                      $ref: '#/components/schemas/user.zip'
                  required:
                    - id
                  type: object
              required:
                - notification_type
      responses:
        '204':
          $ref: '#/components/responses/204'
        '400':
          $ref: '#/components/responses/400'
        '500':
          $ref: '#/components/responses/500'
      summary: Добавление платежного аккаунта
      tags:
        - payments
      x-codeSamples:
        - label: CURL
          lang: cURL
          source: >-
            curl -v 'https://your.hostname/your/uri' \

            -X POST \

            -H 'accept: application/json' \

            -H 'content-type: application/json' \

            -H 'authorization: Signature
            d09695066c52c1b8bdae92f2d6eb59f5b5f89843' \

            -d '{
                "notification_type":"payment_account_add",
                "settings": {
                  "project_id": 18404,
                  "merchant_id": 2340
                },
                "user": {
                    "ip": "127.0.0.1",
                    "email": "email@example.com",
                    "id": "1234567",
                    "name": "John Smith",
                    "country": "US",
                    "zip": "12345"
                },
                "payment_account": {
                    "id": "12345678",
                    "name": "email@example.com",
                    "payment_method": "24",
                    "country": "US",
                    "type": "paypal"
                }
            }'
        - label: HTTP
          lang: HTTP
          source: |-
            POST /your/uri HTTP/1.1
            host:           your.hostname
            accept:         application/json
            content-length: 255
            content-type:   application/json
            authorization:  Signature d09695066c52c1b8bdae92f2d6eb59f5b5f89843

            {
                "notification_type": "payment_account_add",
                "settings": {
                  "project_id": 18404,
                  "merchant_id": 2340
                },
                "user": {
                    "ip": "127.0.0.1",
                    "email": "email@example.com",
                    "id": "1234567",
                    "name": "John Smith",
                    "country": "US",
                    "zip": "12345"
                },
                "payment_account": {
                    "id": "12345678",
                    "name": "email@example.com",
                    "payment_method": "24",
                    "country": "US",
                    "type": "paypal"
                }
            }
  afs-rejected-blocklist:
    post:
      description: >-
        При обновлении черного списка системы Anti-fraud (добавление или
        удаление параметра) Xsolla отправляет вебхук с типом `afs_black_list` на
        URL-адрес вебхука. Добавление параметра выполняется автоматически на
        стороне Xsolla или по запросу. Удаление параметра возможно только по
        запросу. Чтобы получать вебхук, добавить или удалить параметр,
        обратитесь к персональному менеджеру проекта или напишите на <a
        href="mailto:csm@xsolla.com">csm@xsolla.com</a>.
      operationId: afs-rejected-blocklist
      requestBody:
        content:
          application/json:
            schema:
              properties:
                event:
                  description: Объект с информацией о событии черного списка AFS.
                  properties:
                    action:
                      description: Тип события.
                      enum:
                        - adding
                        - removing
                      type: string
                    date_of_last_action:
                      description: >-
                        Время последнего события черного списка AFS в формате
                        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601).
                      type: string
                    parameter:
                      description: Название параметра, по которому возникло событие.
                      enum:
                        - nick
                        - email
                        - ps_account
                        - ip_address
                        - card_issuer
                        - phone
                      type: string
                      x-enumDescriptions:
                        card_issuer: банк-эмитент кредитной карты пользователя
                        email: email-адрес пользователя
                        ip_address: IP-адрес пользователя
                        nick: никнейм пользователя
                        phone: номер телефона пользователя
                        ps_account: платежный аккаунт пользователя
                    parameter_value:
                      description: Значение параметра, по которому возникло событие.
                      type: string
                    project_id:
                      $ref: '#/components/schemas/settings.project_id'
                    reason:
                      description: Причина события.
                      enum:
                        - chargeback
                        - fraud_activity
                        - suspicious_activity
                        - ps_reported_fraud
                        - linked_chargeback
                        - partner_request
                        - friendly_fraud
                        - user_reported_fraud
                        - linked_parameter
                        - other_data_in_blacklist
                        - by_afs_filters
                        - wrongly_added
                        - removed_by_cs_review
                        - other_forgiveness_reason
                      type: string
                      x-enumDescriptions:
                        by_afs_filters: Фильтр AFS (добавление)
                        chargeback: chargeback (добавление)
                        fraud_activity: мошенничество (добавление)
                        friendly_fraud: дружеский фрод (добавление)
                        linked_chargeback: связь с chargeback (добавление)
                        linked_parameter: связанный параметр в черном списке (добавление)
                        other_data_in_blacklist: другие параметры в черном списке (добавление)
                        other_forgiveness_reason: другая причина удаления (удаление)
                        partner_request: по запросу (добавление)
                        ps_reported_fraud: оповещение платежной системы о фроде (добавление)
                        removed_by_cs_review: удален после обращения в техническую поддержку Xsolla
                        suspicious_activity: подозрительная активность (добавление)
                        user_reported_fraud: сообщение о фроде от пользователя (добавление)
                        wrongly_added: добавлен по ошибке (удаление)
                    transaction_id:
                      description: >-
                        ID транзакции, связанной с параметром, по которому
                        возникло событие.
                      type: string
                  type: object
                notification_type:
                  $ref: '#/components/schemas/notification_type'
              required:
                - notification_type
                - event
      responses:
        '204':
          $ref: '#/components/responses/204'
        '400':
          $ref: '#/components/responses/400'
        '500':
          $ref: '#/components/responses/500'
      summary: Обновление черного списка системы Anti-fraud
      tags:
        - anti-fraud
      x-codeSamples:
        - label: CURL
          lang: cURL
          source: >-
            curl -v 'https://your.hostname/your/uri' \

            -X POST \

            -H 'authorization: Signature
            32c64a80d2527dc08906ae1891bac4489509b9f6' \

            -d '{
              "event": {
                "action": "adding",
                "date_of_last_action": "2020-11-27T10:09:05+03:00",
                "parameter": "email",
                "parameter_value": "email@example.com",
                "reason": "ps_reported_fraud",
                "transaction_id": "111111111",
                "project_id": "123456"
              },
              "notification_type": "afs_black_list"
            }'
        - label: HTTP
          lang: HTTP
          source: |-
            POST /your_uri HTTP/1.1
            host: your.host
            accept: application/json
            content-type: application/json
            content-length: 233
            authorization: Signature 32c64a80d2527dc08906ae1891bac4489509b9f6

            {
              "event": {
                "action": "adding",
                "date_of_last_action": "2020-11-27T10:09:05+03:00",
                "parameter": "email",
                "parameter_value": "email@example.com",
                "reason": "ps_reported_fraud",
                "transaction_id": "111111111",
                "project_id": "123456"
              },
              "notification_type": "afs_black_list"
            }
  afs-rejected-transaction:
    post:
      description: >
        Если транзакция была отклонена при проверке системой Anti-fraud, Xsolla 

        присылает детали транзакции в вебхуке с типом `afs_reject` URL-адрес
        вебхука. 

        Чтобы получать вебхук, обратитесь к персональному менеджеру проекта или 

        напишите на <a href="mailto:csm@xsolla.com">csm@xsolla.com</a>.


        После сохранения URL-адреса вебхука в Личном кабинете вы можете
        настроить 

        получение дополнительной информации в вебхуке. Для этого в разделе <a 

        href="https://publisher.xsolla.com/0/projects/0/edit/webhooks/store">Настройки 

        проекта &gt; Вебхуки &gt; Расширенные настройки</a> установите
        следующий 

        переключатель в активное положение.


        <div class="note">

        <p><strong>Примечание</strong></p>

        <p>Если вы зарегистрировались в Личном кабинете до 22 января 2025 г.
        (включительно), переключатели располагаются в разделе <a
        href="https://publisher.xsolla.com/0/projects/0/edit/webhooks/payments">Настройки
        проекта &gt; Вебхуки &gt; Тестирование &gt; Payments &gt; Расширенные
        настройки</a>.</p>

        </div>


        <table>

        <thead>
            <tr>
                <th>Переключатель</th>
                <th>Описание</th>
            </tr>
        </thead>

        <tbody>
            <tr>
                <td>Показывать информацию о транзакциях сохраненными способами оплаты</td>
                <td><p>В вебхуке будет передаваться информация в кастомных параметрах:</p><ul><li><code>saved_payment_method</code>:<ul><li><code>0</code> — сохраненный способ оплаты не используется;</li><li><code>1</code> — способ оплаты был сохранен при совершении текущей транзакции;</li><li><code>2</code> — используется ранее сохраненный способ оплаты.</li></ul></li><li><code>payment_type</code>:<ul><li><code>1</code> — единоразовый платеж;</li><li><code>2</code> — рекуррентный платеж.</li></ul></li></ul></td>
            </tr>
        </tbody>

        </table>
      operationId: afs-rejected-transaction
      requestBody:
        content:
          application/json:
            schema:
              properties:
                notification_type:
                  $ref: '#/components/schemas/notification_type'
                refund_details:
                  description: Объект с финансовыми данными рефанда.
                  properties:
                    author:
                      description: Автор рефанда.
                      type: string
                    code:
                      description: ID кода.
                      type: integer
                    reason:
                      description: Причина отмены.
                      type: string
                  type: object
                settings:
                  description: Объект, содержащий настройки проекта.
                  properties:
                    merchant_id:
                      $ref: '#/components/schemas/settings.merchant_id'
                    project_id:
                      $ref: '#/components/schemas/settings.project_id'
                  type: object
                transaction:
                  description: >-
                    Объект с информацией о транзакции, связанной с этой
                    операцией.
                  properties:
                    agreement:
                      description: ID соглашения.
                      type: integer
                    dry_run:
                      description: >-
                        Признак тестовой транзакции. Значение параметра равно 1
                        для тестового платежа, для реального платежа параметр не
                        передается.
                      type: integer
                    external_id:
                      description: Внешний ID транзакции.
                      type: string
                    id:
                      description: ID транзакции.
                      type: integer
                  type: object
                user:
                  description: Объект с информацией о пользователе.
                  properties:
                    country:
                      $ref: '#/components/schemas/user.country'
                    email:
                      $ref: '#/components/schemas/user.email'
                    id:
                      $ref: '#/components/schemas/user.id'
                    ip:
                      $ref: '#/components/schemas/user.ip'
                    name:
                      $ref: '#/components/schemas/user.name'
                    phone:
                      description: Номер телефона пользователя (в международном формате).
                      type: string
                    zip:
                      $ref: '#/components/schemas/user.zip'
                  required:
                    - id
                  type: object
              required:
                - notification_type
                - transaction
      responses:
        '204':
          $ref: '#/components/responses/204'
        '400':
          $ref: '#/components/responses/400'
        '500':
          $ref: '#/components/responses/500'
      summary: Транзакция отклонена при проверке системой Anti-fraud
      tags:
        - anti-fraud
      x-codeSamples:
        - label: CURL
          lang: cURL
          source: |-
            curl -v 'https://your.hostname/your/uri' \
            -X POST \
            -d '{
              "notification_type": "afs_reject",
              "settings": {
                "project_id": 18404,
                "merchant_id": 2340
              },
              "user": {
                "ip": "127.0.0.1",
                "phone": "18777976552",
                "email": "email@example.com",
                "id": "1234567",
                "name": "John Smith",
                "country": "US"
              },
              "transaction": {
                "id": 1,
                "external_id": 1,
                "dry_run": 1,
                "agreement": 1
              },
              "refund_details": {
                "code": 4,
                "reason": "Potential fraud"
              }
            }'
        - label: PHP
          lang: PHP
          source: |-
            <?php

            $request = array(
              'notification_type' => 'afs_reject',
              'settings' => array(
                'project_id' => 18404,
                'merchant_id' => 2340
              ),
              'user' => array(
                'ip' => '127.0.0.1',
                'phone' => '18777976552',
                'email' => 'email@example.com',
                'id' => '1234567',
                'country' => 'US'
              ),
              'transaction' => array(
                'id' => 87654321,
                'payment_method' => 1380,
                'dry_run' => 1
              ),
              'refund_details' => array(
                'code' => 4,
                'reason' => 'Potential fraud'
              )
            );
        - label: HTTP
          lang: HTTP
          source: |-
            POST /your_uri HTTP/1.1
            host: your.host
            accept: application/json
            content-type: application/json
            content-length: 1220
            authorization: Signature 31bd5924dd6cbc9cbe99d331c4a086a57291f9d7

            {
              "notification_type": "afs_reject",
              "settings": {
                "project_id": 18404,
                "merchant_id": 2340
              },
              "user": {
                "ip": "127.0.0.1",
                "phone": "18777976552",
                "email": "email@example.com",
                "id": "1234567",
                "name": "John Smith",
                "country": "US"
              },
              "transaction": {
                "id": 1,
                "external_id": 1,
                "dry_run": 1,
                "agreement": 1
              },
              "refund_details": {
                "code": 4,
                "reason": "Potential fraud"
              }
            }
  canceled-subscription:
    post:
      description: >-
        Когда подписка отменяется по каким-либо причинам, Xsolla отправляет
        вебхук с типом `cancel_subscription` на URL-адрес вебхука.
      operationId: canceled-subscription
      requestBody:
        content:
          application/json:
            schema:
              properties:
                notification_type:
                  $ref: '#/components/schemas/notification_type'
                settings:
                  description: Объект, содержащий настройки проекта.
                  properties:
                    merchant_id:
                      $ref: '#/components/schemas/settings.merchant_id'
                    project_id:
                      $ref: '#/components/schemas/settings.project_id'
                  type: object
                subscription:
                  description: Объект с данными о подписке.
                  properties:
                    date_create:
                      $ref: '#/components/schemas/subscription.date_create'
                    date_end:
                      $ref: '#/components/schemas/subscription.date_end'
                    plan_id:
                      $ref: '#/components/schemas/subscription.plan_id'
                    product_id:
                      $ref: '#/components/schemas/subscription.product_id'
                    subscription_id:
                      $ref: '#/components/schemas/subscription.subscription_id'
                    tags:
                      $ref: '#/components/schemas/subscription.tags'
                  type: object
                user:
                  description: Объект с информацией о пользователе.
                  properties:
                    id:
                      $ref: '#/components/schemas/user.id'
                    name:
                      $ref: '#/components/schemas/user.name'
                  required:
                    - id
                  type: object
              required:
                - notification_type
      responses:
        '204':
          $ref: '#/components/responses/204'
        '400':
          $ref: '#/components/responses/400'
        '500':
          $ref: '#/components/responses/500'
      summary: Отмена подписки
      tags:
        - subscriptions
      x-codeSamples:
        - label: CURL
          lang: cURL
          source: >-
            curl -v 'https://your.hostname/your/uri' \

            -X POST \

            -H 'accept: application/json' \

            -H 'content-type: application/json' \

            -H 'authorization: Signature
            13342703ccaca5064ad33ba451d800c5e823db8f' \

            -d '{
                    "notification_type": "cancel_subscription",
                    "settings": {
                      "project_id": 18404,
                      "merchant_id": 2340
                    },
                    "user": {
                        "id": "1234567",
                        "name": "John Smith"
                    },
                    "subscription": {
                        "plan_id": "b5dac9c8",
                        "subscription_id": "10",
                        "product_id": "Demo Product",
                        "date_create": "2014-09-22T19:25:25+04:00",
                        "date_end": "2015-01-22T19:25:25+04:00"
                    }
                }'
        - label: PHP
          lang: PHP
          source: |-
            <?php

            $request = array(
                'notification_type' => 'cancel_subscription',
                'settings' => array(
                  'project_id' => 18404,
                  'merchant_id' => 2340
                ),
                'user' => array(
                    'id' => '1234567',
                    'name' => 'John Smith'
                ),
                'subscription' => array(
                    'plan_id' => 'b5dac9c8',
                    'subscription_id' => '10',
                    'product_id' => 'Demo Product',
                    'date_create' => '2014-09-22T19:25:25+04:00',
                    'date_end' => '2015-01-22T19:25:25+04:00',
                )
            );
        - label: HTTP
          lang: HTTP
          source: |-
            POST /your/uri HTTP/1.1
            host: your.hostname
            accept: application/json
            content-type: application/json
            content-length: 240
            authorization: Signature 13342703ccaca5064ad33ba451d800c5e823db8f

            {
                "notification_type": "cancel_subscription",
                "settings": {
                  "project_id": 18404,
                  "merchant_id": 2340
                },
                "user":{
                    "id": "1234567",
                    "name": "John Smith"
                },
                "subscription": {
                    "plan_id": "b5dac9c8",
                    "subscription_id": "10",
                    "product_id": "Demo Product",
                    "date_create": "2014-09-22T19:25:25+04:00",
                    "date_end": "2015-01-22T19:25:25+04:00"
                }
            }
  created-subscription:
    post:
      description: >-
        Когда пользователь создает подписку, Xsolla отправляет вебхук с типом
        `create_subscription` на URL-адрес вебхука.
      operationId: created-subscription
      requestBody:
        content:
          application/json:
            schema:
              properties:
                custom_parameters:
                  description: Ваши дополнительные параметры.
                  type: object
                notification_type:
                  $ref: '#/components/schemas/notification_type'
                settings:
                  description: Объект, содержащий настройки проекта.
                  properties:
                    merchant_id:
                      $ref: '#/components/schemas/settings.merchant_id'
                    project_id:
                      $ref: '#/components/schemas/settings.project_id'
                  type: object
                subscription:
                  description: Объект с данными о подписке.
                  properties:
                    date_create:
                      $ref: '#/components/schemas/subscription.date_create'
                    date_next_charge:
                      $ref: '#/components/schemas/subscription.date_next_charge'
                    is_gift:
                      $ref: '#/components/schemas/subscription.is_gift'
                    plan_id:
                      $ref: '#/components/schemas/subscription.plan_id'
                    product_id:
                      $ref: '#/components/schemas/subscription.product_id'
                    subscription_id:
                      $ref: '#/components/schemas/subscription.subscription_id'
                    tags:
                      $ref: '#/components/schemas/subscription.tags'
                    trial:
                      description: Объект с информацией о триальном периоде подписки.
                      properties:
                        type:
                          description: 'Тип триального периода: day.'
                          type: string
                        value:
                          description: Длительность триального периода.
                          type: integer
                      type: object
                  type: object
                user:
                  description: Объект с информацией о пользователе.
                  properties:
                    id:
                      $ref: '#/components/schemas/user.id'
                    name:
                      $ref: '#/components/schemas/user.name'
                  required:
                    - id
                  type: object
              required:
                - notification_type
      responses:
        '204':
          $ref: '#/components/responses/204'
        '400':
          $ref: '#/components/responses/400'
        '500':
          $ref: '#/components/responses/500'
      summary: Создание подписки
      tags:
        - subscriptions
      x-codeSamples:
        - label: CURL
          lang: cURL
          source: >-
            curl -v 'https://your.hostname/your/uri' \

            -X POST \

            -H 'accept: application/json' \

            -H 'content-type: application/json' \

            -H 'authorization: Signature
            13342703ccaca5064ad33ba451d800c5e823db8f' \

            -d '{
                    "notification_type": "create_subscription",
                    "settings": {
                      "project_id": 18404,
                      "merchant_id": 2340
                    },
                    "user": {
                        "id": "1234567",
                        "name": "John Smith"
                    },
                    "subscription": {
                        "plan_id": "b5dac9c8",
                        "subscription_id": "10",
                        "product_id": "Demo Product",
                        "date_create": "2014-09-22T19:25:25+04:00",
                        "date_next_charge": "2015-01-22T19:25:25+04:00",
                        "trial": {
                                "value": 90,
                                "type": "day"
                            },
                        "is_gift": true
                    }
                }'
        - label: PHP
          lang: PHP
          source: |-
            <?php

            $request = array(
                'notification_type' => 'create_subscription',
                'settings' => array(
                  'project_id' => 18404,
                  'merchant_id' => 2340
                ),
                'user' => array(
                    'id' => '1234567',
                    'name' => 'John Smith'
                ),
                'subscription' => array(
                    'plan_id' => 'b5dac9c8',
                    'subscription_id' => '10',
                    'product_id' => 'Demo Product',
                    'date_create' => '2014-09-22T19:25:25+04:00',
                    'date_next_charge' => '2015-01-22T19:25:25+04:00',
                    'trial' =>  array(
                            'value' =>  90,
                            'type' =>  'day'
                        ),
                    'is_gift' => true,
                )
            );
        - label: HTTP
          lang: HTTP
          source: |-
            POST /your/uri HTTP/1.1
            Host: your.hostname
            accept: application/json
            content-type: application/json
            content-length: 240
            authorization: Signature 13342703ccaca5064ad33ba451d800c5e823db8f

            {
                "notification_type": "create_subscription",
                "settings": {
                  "project_id": 18404,
                  "merchant_id": 2340
                },
                "user": {
                    "id": "1234567",
                    "name": "John Smith"
                },
                "subscription": {
                    "plan_id": "b5dac9c8",
                    "subscription_id": "10",
                    "product_id": "Demo Product",
                    "date_create": "2014-09-22T19:25:25+04:00",
                    "date_next_charge": "2015-01-22T19:25:25+04:00",
                    "trial": {
                            "value": 90,
                            "type": "day"
                        },
                    "is_gift": true
                }
            }
  dispute:
    post:
      description: >-
        При открытии нового диспута или изменении статуса диспута Xsolla
        отправляет вебхук с типом `dispute` на URL-адрес вебхука. Чтобы получать
        вебхук, обратитесь к персональному менеджеру проекта или напишите на <a
        href="mailto:csm@xsolla.com">csm@xsolla.com</a>.
      operationId: dispute
      requestBody:
        content:
          application/json:
            schema:
              properties:
                action:
                  description: Тип действия.
                  enum:
                    - adding
                    - updating
                  type: string
                  x-enumDescriptions:
                    adding: Открытие нового диспута.
                    updating: Изменение статуса диспута.
                dispute:
                  description: Объект с информацией о диспуте.
                  properties:
                    incoming_date:
                      $ref: '#/components/schemas/dispute-date'
                    reason:
                      $ref: '#/components/schemas/dispute-reason'
                    status:
                      $ref: '#/components/schemas/dispute-status'
                    type:
                      $ref: '#/components/schemas/dispute-type'
                  required:
                    - incoming_date
                    - reason
                    - type
                    - status
                  type: object
                notification_type:
                  $ref: '#/components/schemas/notification_type'
                settings:
                  description: Объект с информацией о кастомных настройках проекта.
                  properties:
                    merchant_id:
                      $ref: '#/components/schemas/settings.merchant_id'
                    project_id:
                      $ref: '#/components/schemas/settings.project_id'
                  required:
                    - project_id
                    - merchant_id
                  type: object
                transaction:
                  description: Объект с информацией о транзакции.
                  properties:
                    country_code:
                      $ref: '#/components/schemas/user.country'
                    date_create:
                      $ref: '#/components/schemas/date-create'
                    external_id:
                      $ref: '#/components/schemas/external-id'
                    id:
                      $ref: '#/components/schemas/transaction-id'
                    payment_method:
                      $ref: '#/components/schemas/dispute-payment-method'
                    total:
                      description: Объект с информацией о сумме транзакции.
                      properties:
                        amount:
                          $ref: '#/components/schemas/transaction-total-amount'
                        currency:
                          $ref: '#/components/schemas/currency'
                      required:
                        - amount
                        - currency
                      type: object
                  required:
                    - id
                    - date_create
                    - total
                    - payment_method
                    - country_code
                  type: object
                user:
                  description: Объект с информацией о пользователе.
                  properties:
                    email:
                      $ref: '#/components/schemas/user.email'
                    id:
                      $ref: '#/components/schemas/user.id'
                  required:
                    - id
                  type: object
              required:
                - notification_type
                - action
                - transaction
                - settings
                - user
                - dispute
      responses:
        '204':
          $ref: '#/components/responses/204'
        '400':
          $ref: '#/components/responses/400'
        '500':
          $ref: '#/components/responses/500'
      summary: Диспут
      tags:
        - anti-fraud
      x-codeSamples:
        - label: CURL
          lang: cURL
          source: >-
            curl -v 'https://your.hostname/your/uri' \

            -X POST \

            -H 'authorization: Signature
            32c64a80d2527dc08906ae1891bac4489509b9f6' \

            -d '{
              "notification_type": "dispute",
              "action": "adding",
              "transaction": {
                "id": 123456789,
                "date_create": "2023-08-24T10:21:00+04:00",
                "total": {
                  "amount": 1,
                  "currency": "EUR"
                },
                "payment_method": "credit_debit_card"
              },
              "settings": {
                "project_id": 18404,
                "merchant_id": 2340
              },
              "user": {
                "id": "1234567",
                "email": "email@example.com",
                "country_code": "US"
              },
              "dispute": {
                "incoming_date": "2024-01-25T01:02:03+04:00",
                "reason": "not_as_described",
                "type": "retrieval",
                "status": "new"
              }
            }'
        - label: HTTP
          lang: HTTP
          source: |-
            POST /your_uri HTTP/1.1
            host: your.host
            accept: application/json
            content-Type: application/json
            content-Length: 578
            authorization: Signature 31bd5924dd6cbc9cbe99d331c4a086a57291f9d7

            {
              "notification_type": "dispute",
              "action": "adding",
              "transaction": {
                "id": 123456789,
                "date_create": "2023-08-24T10:21:00+04:00",
                "total": {
                  "amount": 1,
                  "currency": "EUR"
                },
                "payment_method": "credit_debit_card"
              },
              "settings": {
                "project_id": 18404,
                "merchant_id": 2340
              },
              "user": {
                "id": "1234567",
                "email": "email@example.com",
                "country_code": "US"
              },
              "dispute": {
                "incoming_date": "2024-01-25T01:02:03+04:00",
                "reason": "not_as_described",
                "type": "retrieval",
                "status": "new"
              }
            }
  nonrenewing-subscription:
    post:
      description: >-
        Если статус подписки меняется на непродлеваемый, Xsolla отправляет
        вебхук с типом `non_renewal_subscription` на URL-адрес вебхука. Чтобы
        получать вебхук, обратитесь к персональному менеджеру проекта или
        напишите на <a href="mailto:csm@xsolla.com">csm@xsolla.com</a>.
      operationId: nonrenewing-subscription
      requestBody:
        content:
          application/json:
            schema:
              properties:
                notification_type:
                  $ref: '#/components/schemas/notification_type'
                settings:
                  description: Объект, содержащий настройки проекта.
                  properties:
                    merchant_id:
                      $ref: '#/components/schemas/settings.merchant_id'
                    project_id:
                      $ref: '#/components/schemas/settings.project_id'
                  required:
                    - project_id
                  type: object
                subscription:
                  description: Объект с данными о подписке.
                  properties:
                    amount:
                      description: Сумма покупки.
                      format: float
                      type: number
                    currency:
                      $ref: '#/components/schemas/currency'
                    date_create:
                      $ref: '#/components/schemas/subscription.date_create'
                    date_next_charge:
                      description: >-
                        Дата следующего списания. Это дата следующего платежа,
                        ожидаемого до того, как статус подписки пользователя был
                        изменен на непродлеваемый. Дата и время согласно
                        стандарту [ISO
                        8601](https://en.wikipedia.org/wiki/ISO_8601).
                      type: string
                    plan_id:
                      $ref: '#/components/schemas/subscription.plan_id'
                    subscription_id:
                      $ref: '#/components/schemas/subscription.subscription_id'
                  type: object
                user:
                  description: Объект с информацией о пользователе.
                  properties:
                    email:
                      $ref: '#/components/schemas/user.email'
                    id:
                      $ref: '#/components/schemas/user.id'
                    name:
                      $ref: '#/components/schemas/user.name'
                  required:
                    - id
                  type: object
              required:
                - notification_type
      responses:
        '204':
          $ref: '#/components/responses/204'
        '400':
          $ref: '#/components/responses/400'
        '500':
          $ref: '#/components/responses/500'
      summary: Непродлеваемая подписка
      tags:
        - subscriptions
      x-codeSamples:
        - label: CURL
          lang: cURL
          source: >-
            curl -v 'https://your.hostname/your/uri' \

            -X POST \

            -H 'accept: application/json' \

            -H 'content-type: application/json' \

            -H 'authorization: Signature
            13342703ccaca5064ad33ba451d800c5e823db8f' \

            -d '{
                    "notification_type": "non_renewal_subscription",
                    "settings": {
                      "project_id": 12345,
                      "merchant_id": 1234
                    },
                    "user": {
                        "id": "1234567",
                        "email": "email@example.com"
                    },
                    "subscription": {
                        "plan_id": "a1bcd2e3",
                        "subscription_id": "10",
                        "date_create": "2014-12-22T15:25:25+04:00",
                        "date_next_charge": "2015-01-22T19:25:25+04:00",
                        "currency": "USD",
                        "amount": 0.03
                    }
                }'
        - label: PHP
          lang: PHP
          source: |-
            <?php

            $request = array(
                'notification_type' => 'non_renewal_subscription',
                'settings' => array(
                  'project_id' => 12345,
                  'merchant_id' => 1234
                ),
                'user' => array(
                    'id' => '1234567',
                    'email' => 'email@example.com'
                ),
                'subscription' => array(
                    'plan_id' => 'a1bcd2e3',
                    'subscription_id' => '10',
                    'date_create' => '2014-12-22T15:25:25+04:00',
                    'date_next_charge' => '2015-01-22T19:25:25+04:00',
                    'currency' => 'USD',
                    'amount' => 0.03
                )
            );
        - label: HTTP
          lang: HTTP
          source: |-
            POST /your/uri HTTP/1.1
            host: your.hostname
            accept: application/json
            content-type: application/json
            content-length: 240
            authorization: Signature 13342703ccaca5064ad33ba451d800c5e823db8f

            {
                "notification_type": "non_renewal_subscription",
                "settings": {
                  "project_id": 12345,
                  "merchant_id": 1234
                },
                "user": {
                    "id": "1234567",
                    "email": "email@example.com"
                },
                "subscription": {
                    "plan_id": "a1bcd2e3",
                    "subscription_id": "10",
                    "date_create": "2014-12-22T15:25:25+04:00",
                    "date_next_charge": "2015-01-22T19:25:25+04:00",
                    "currency": "USD",
                    "amount": 0.03
                }
            }
  order-cancellation:
    post:
      description: >
        Xsolla отправляет вебхук <code>order_canceled</code> на указанный
        URL-адрес, 

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

        содержится информация о возвращенных товарах, платежные данные и детали 

        отмененного заказа.


        Вебхук не отправляется, если оплата не была успешной, например:

        * платежный интерфейс был открыт, но пользователь не оплатил заказ;

        * платежный интерфейс был открыт, но при оплате возникли ошибки.


        Рекомендуемое время обработки вебхука — до 3 секунд.
      operationId: order-cancellation
      requestBody:
        content:
          application/json:
            schema:
              properties:
                billing:
                  description: Детали платежа и транзакции.
                  properties:
                    notification_type:
                      $ref: '#/components/schemas/notification_type'
                    payment_details:
                      description: Объект с финансовыми данными платежа.
                      properties:
                        country_wht:
                          description: >-
                            Объект с данными о налоге с дохода, который
                            удерживается с международных транзакций в некоторых
                            странах.
                          properties:
                            amount:
                              description: Сумма.
                              format: float
                              type: number
                            currency:
                              $ref: '#/components/schemas/currency'
                            percent:
                              description: Ставка налога, %.
                              format: float
                              type: number
                          type: object
                        direct_wht:
                          description: Налог, удерживаемый у источника выплаты.
                          properties:
                            amount:
                              description: Сумма.
                              format: float
                              type: number
                            currency:
                              $ref: '#/components/schemas/currency'
                            percent:
                              description: >-
                                Процент налога, удерживаемого у источника
                                выплаты.
                              format: float
                              type: number
                          type: object
                        payment:
                          description: >-
                            Объект с данными о сумме, которую оплатил
                            пользователь.
                          properties:
                            amount:
                              description: Сумма.
                              format: float
                              type: number
                            currency:
                              $ref: '#/components/schemas/currency'
                          type: object
                        payment_method_fee:
                          description: Размер комиссии платежной системы.
                          properties:
                            amount:
                              description: Сумма.
                              format: float
                              type: number
                            currency:
                              $ref: '#/components/schemas/currency'
                          type: object
                        payment_method_sum:
                          description: >-
                            Объект с данными о сумме, которая была оплачена из
                            платежной системы.
                          properties:
                            amount:
                              description: Сумма.
                              format: float
                              type: number
                            currency:
                              $ref: '#/components/schemas/currency'
                          type: object
                        payout:
                          description: Объект с данными о сумме выплаты.
                          properties:
                            amount:
                              description: Сумма.
                              format: float
                              type: number
                            currency:
                              $ref: '#/components/schemas/currency'
                          type: object
                        payout_currency_rate:
                          description: Курс валюты платежа к валюте выплаты.
                          type: string
                        repatriation_commission:
                          description: >-
                            Объект с информацией о затратах на репатриацию,
                            возлагаемых на Xsolla третьими сторонами.
                          properties:
                            amount:
                              description: Сумма.
                              format: float
                              type: number
                            currency:
                              $ref: '#/components/schemas/currency'
                          type: object
                        sales_tax:
                          description: Размер налога (только для США и Канады).
                          properties:
                            amount:
                              description: Сумма.
                              format: float
                              type: number
                            currency:
                              $ref: '#/components/schemas/currency'
                            percent:
                              description: Процент налога.
                              format: float
                              type: number
                          type: object
                        user_acquisition_fee:
                          description: >-
                            Объект с данными о сумме вознаграждения каналов
                            привлечения трафика (аффилированные сети и
                            инфлюенсеры).
                          properties:
                            amount:
                              description: Сумма.
                              format: float
                              type: number
                            currency:
                              $ref: '#/components/schemas/currency'
                            percent:
                              description: >-
                                Ставка вознаграждения за привлечение
                                пользователей, %.
                              format: float
                              type: number
                          type: object
                        vat:
                          description: Размер VAT (только для Евросоюза).
                          properties:
                            amount:
                              description: Сумма.
                              format: float
                              type: number
                            currency:
                              $ref: '#/components/schemas/currency'
                            percent:
                              description: Процент VAT.
                              format: float
                              type: number
                          type: object
                        xsolla_balance_sum:
                          description: >-
                            Объект с данными о сумме, которая была оплачена с
                            Xsolla-баланса.
                          properties:
                            amount:
                              description: Сумма.
                              format: float
                              type: number
                            currency:
                              $ref: '#/components/schemas/currency'
                          type: object
                        xsolla_fee:
                          description: Размер комиссии Xsolla.
                          properties:
                            amount:
                              description: Сумма.
                              format: float
                              type: number
                            currency:
                              $ref: '#/components/schemas/currency'
                          type: object
                      type: object
                    purchase:
                      description: Объект с информацией о заказе.
                      properties:
                        subscription:
                          description: Объект с данными о подписке.
                          properties:
                            amount:
                              $ref: '#/components/schemas/amount-float'
                            currency:
                              $ref: '#/components/schemas/currency'
                            date_create:
                              $ref: '#/components/schemas/subscription.date_create'
                            plan_id:
                              $ref: '#/components/schemas/subscription.plan_id'
                            subscription_id:
                              $ref: >-
                                #/components/schemas/subscription.subscription_id
                            tags:
                              $ref: '#/components/schemas/subscription.tags'
                          type: object
                        total:
                          description: Объект с данными об общей стоимости покупки.
                          properties:
                            amount:
                              description: Общая сумма покупки.
                              format: float
                              type: number
                            currency:
                              $ref: '#/components/schemas/currency'
                          type: object
                      required:
                        - total
                      type: object
                    refund_details:
                      description: Объект с финансовыми данными рефанда.
                      properties:
                        author:
                          description: >
                            Инициатор возврата платежа. Значение поля передается
                            согласно таблице:


                            <table>
                                <thead>
                                <tr>
                                    <th>Инициатор возврата</th>
                                    <th>Значение поля</th>
                                </tr>
                                </thead>
                                <tbody>
                                <tr>
                                    <td>Игра (через API).</td>
                                    <td>API</td>
                                </tr>
                                <tr>
                                    <td>Пользователь Личного кабинета (автоматический возврат).</td>
                                    <td>Email-адрес пользователя</td>
                                </tr>
                                <tr>
                                    <td>Пользователь Личного кабинета (при участии службы поддержки Xsolla).</td>
                                    <td>support@xsolla.com</td>
                                </tr>
                                <tr>
                                    <td>Xsolla (при участии службы поддержки Xsolla).</td>
                                    <td>support@xsolla.com</td>
                                </tr>
                                </tbody>
                            </table>
                          type: string
                        code:
                          description: ID кода.
                          type: integer
                        reason:
                          description: Причина отмены.
                          type: string
                      type: object
                    settings:
                      description: Объект, содержащий настройки проекта.
                      properties:
                        merchant_id:
                          $ref: '#/components/schemas/settings.merchant_id'
                        project_id:
                          $ref: '#/components/schemas/settings.project_id'
                      type: object
                    transaction:
                      description: >-
                        Объект с информацией о транзакции, связанной с этой
                        операцией.
                      properties:
                        agreement:
                          description: ID соглашения.
                          type: integer
                        dry_run:
                          description: >-
                            Признак тестовой транзакции. Значение параметра
                            равно 1 для тестового платежа, для реального платежа
                            параметр не передается.
                          type: integer
                        external_id:
                          description: Внешний ID транзакции.
                          type: string
                        id:
                          description: ID транзакции.
                          type: integer
                        payment_method_order_id:
                          description: ID платежа в платежной системе.
                          type: string
                      type: object
                  required:
                    - notification_type
                    - transaction
                    - payment_details
                  type: object
                custom_parameters:
                  description: Дополнительная информация.
                  type: object
                items:
                  description: "Список предметов, которые купил пользователь.\n\nНабор передаваемых параметров в массиве зависит от версии вебхука. В версии 2 \nдополнительно передаются параметры `is_free`, `is_bonus` и `is_bundle_content`.\_\nДля переключения версии передайте ее номер в параметре `version` в методе \n[Обновление информации о настройках вебхуков](/ru/api/igs/operation/update-webhook/).\n"
                  items:
                    oneOf:
                      - properties:
                          amount:
                            description: >-
                              Общая стоимость товаров, рассчитанная c учетом их
                              количества.
                            type: string
                          custom_attributes:
                            description: >-
                              JSON-объект, содержащий атрибуты товара и их
                              значения.
                            type: object
                          is_pre_order:
                            description: >-
                              Если передано значение `true`, товар является
                              предзаказом.
                            type: boolean
                          promotions:
                            $ref: '#/components/schemas/items.promotions'
                          quantity:
                            description: Количество товаров.
                            type: integer
                          sku:
                            $ref: '#/components/schemas/items.sku'
                          type:
                            $ref: '#/components/schemas/items.type'
                        required:
                          - sku
                          - type
                          - quantity
                          - amount
                          - promotions
                          - is_pre_order
                        title: version = 1
                        type: object
                      - properties:
                          amount:
                            description: >-
                              Общая стоимость товаров, рассчитанная c учетом их
                              количества.
                            type: string
                          custom_attributes:
                            description: >-
                              JSON-объект, содержащий атрибуты товара и их
                              значения.
                            type: object
                          is_bonus:
                            description: >-
                              Если передано значение `true`, товар является
                              бонусом.
                            type: boolean
                          is_bundle_content:
                            description: >-
                              Если передано значение `true`, товар является
                              частью бандла.
                            type: boolean
                          is_free:
                            description: >-
                              Если передано значение `true`, товар является
                              бесплатным.
                            type: boolean
                          is_pre_order:
                            description: >-
                              Если передано значение `true`, товар является
                              предзаказом.
                            type: boolean
                          promotions:
                            $ref: '#/components/schemas/items.promotions'
                          quantity:
                            description: Количество товаров.
                            type: integer
                          sku:
                            $ref: '#/components/schemas/items.sku'
                          type:
                            $ref: '#/components/schemas/items.type'
                        required:
                          - sku
                          - type
                          - quantity
                          - amount
                          - promotions
                          - is_pre_order
                          - is_free
                          - is_bonus
                          - is_bundle_content
                        title: version = 2
                        type: object
                  type: array
                notification_type:
                  $ref: '#/components/schemas/notification_type'
                order:
                  description: Информация о заказе.
                  properties:
                    amount:
                      description: Стоимость корзины с учетом выбранной валюты.
                      type: string
                    comment:
                      description: Комментарий пользователя к заказу.
                      nullable: true
                      type: string
                    coupons:
                      description: >-
                        Примененные купоны. Если купон не был применен, массив
                        не возвращается.
                      items:
                        properties:
                          code:
                            description: Код примененного купона.
                            type: string
                          external_id:
                            description: Внешний ID.
                            type: string
                        type: object
                      type: array
                    currency:
                      description: >-
                        Валюта заказа. Для виртуальной валюты используется
                        артикул, для реальной валюты используется трехбуквенное
                        обозначение согласно стандарту [ISO
                        4217](https://en.wikipedia.org/wiki/ISO_4217).
                      type: string
                    currency_type:
                      $ref: '#/components/schemas/currency-type'
                    id:
                      description: >-
                        Уникальный идентификатор заказа пользователя на стороне
                        Xsolla.
                      type: integer
                    invoice_id:
                      description: >-
                        ID счета для платежей за реальную валюту. Для платежей
                        за виртуальную валюту или для бесплатных товаров
                        передается значение `null`.
                      nullable: true
                      type: string
                    mode:
                      description: >-
                        Тип платежа. Значение `default` (по умолчанию)
                        используется для реальных платежей. Значение `sandbox`
                        используется для тестовых платежей.
                      enum:
                        - default
                        - sandbox
                      type: string
                    platform:
                      description: >-
                        Платформа платежа. Для платежей через Xsolla
                        используется значение `xsolla`. Для других платежей
                        используется значение, соответствующее названию
                        платформы публикации игры: `playstation_network`,
                        `xbox_live`, `pc_standalone`, `nintendo_shop`,
                        `google_play`, `app_store_ios`, `android_standalone`,
                        `ios_standalone`, `android_other`, `ios_other`,
                        `pc_other`.
                      enum:
                        - xsolla
                        - playstation_network
                        - xbox_live
                        - pc_standalone
                        - nintendo_shop
                        - google_play
                        - app_store_ios
                        - android_standalone
                        - ios_standalone
                        - android_other
                        - ios_other
                        - pc_other
                      nullable: true
                      type: string
                    promocodes:
                      description: >-
                        Примененные промокоды. Если промокод не был применен,
                        массив не возвращается.
                      items:
                        properties:
                          code:
                            description: Код примененного промокода.
                            type: string
                          external_id:
                            description: Внешний ID.
                            type: string
                        type: object
                      type: array
                    promotions:
                      $ref: '#/components/schemas/order.promotions'
                    status:
                      description: Статус заказа.
                      type: string
                  required:
                    - id
                    - mode
                    - currency_type
                    - currency
                    - amount
                    - status
                    - platform
                    - comment
                    - invoice_id
                    - promotions
                  type: object
                user:
                  description: Информация о пользователе.
                  properties:
                    country:
                      $ref: '#/components/schemas/user.country'
                    email:
                      description: Email-адрес пользователя.
                      type: string
                    external_id:
                      description: ID пользователя.
                      type: string
                  required:
                    - external_id
                    - email
                  type: object
              required:
                - notification_type
                - items
                - order
                - user
                - transaction
                - payment_details
      responses:
        '200':
          description: Верните, чтобы сообщить об успешной обработке вехбука.
        '400':
          description: >-
            Верните в случае ошибки в предоставленной информации (например,
            обязательный параметр не передан, или авторизация не прошла).
      summary: Отмена заказа (с деталями платежа и транзакции)
      tags:
        - combined-webhooks
      x-codeSamples:
        - label: CURL
          lang: cURL
          source: >-
            curl -v 'https://your.hostname/your/uri' \

            -X POST \

            -H 'accept: application/json' \

            -H 'content-type: application/json' \

            -H 'authorization: Signature
            d09695066c52c1b8bdae92f2d6eb59f5b5f89843' \

            -d '{
                "notification_type": "order_canceled",
                "items": [
                  {
                    "sku": "com.xsolla.v.item_1",
                    "type": "virtual_good",
                    "is_pre_order": false,
                    "quantity": 3,
                    "amount": "1000",
                    "promotions": [
                      {
                        "amount_without_discount": "6000",
                        "amount_with_discount": "5000",
                        "sequence": 1
                      },
                      {
                        "amount_without_discount": "5000",
                        "amount_with_discount": "4000",
                        "sequence": 2
                      }
                    ],
                    "custom_attributes": {
                        "purchased": 0,
                        "attr": "value"
                      }
                  },
                  {
                    "sku": "com.xsolla.v.item_new_1",
                    "type": "bundle",
                    "is_pre_order": false,
                    "quantity": 1,
                    "amount": "1000",
                    "promotions": []
                  },
                  {
                    "sku": "com.xsolla.gold_1",
                    "type": "virtual_currency",
                    "is_pre_order": false,
                    "quantity": 1500,
                    "amount": null,
                    "promotions": []
                  }
                ],
                "order": {
                  "id": 1,
                  "mode": "default",
                  "currency_type": "virtual",
                  "currency": "sku_currency",
                  "amount": "2000",
                  "status": "paid",
                  "platform": "xsolla",
                  "comment": null,
                  "invoice_id": "1",
                  "promotions": [
                    {
                      "amount_without_discount": "4000",
                      "amount_with_discount": "2000",
                      "sequence": 1
                    }
                  ],
                  "promocodes": [
                    {
                      "code": "promocode_some_code",
                      "external_id": "promocode_sku"
                    }
                  ],
                  "coupons": [
                    {
                      "code": "WINTER2021",
                      "external_id": "coupon_sku"
                    }
                  ]
                },
                "user": {
                  "external_id": "id_xsolla_login_1",
                  "email": "email@example.com",
                  "country": "US"
                },
                "billing": {
                  "notification_type": "refund",
                  "settings": {
                    "project_id": 18404,
                    "merchant_id": 2340
                  },
                  "purchase": {
                          "subscription": {
                              "plan_id": "b5dac9c8",
                              "subscription_id": "10",
                              "date_create": "2014-09-22T19:25:25+04:00",
                              "currency": "USD",
                              "amount": 9.99
                          },
                          "total":{
                              "currency": "USD",
                              "amount": 200
                          }
                      },
                  "transaction": {
                          "id": 1,
                          "external_id": 1,
                          "dry_run": 1,
                          "agreement": 1
                      },
                  "refund_details": {
                          "code": 4,
                          "reason": "Potential fraud"
                      },
                  "payment_details": {
                          "sales_tax": {
                              "currency": "USD",
                              "amount": 0
                          },
                          "direct_wht": {
                              "currency": "USD",
                              "amount": 0.70
                          },
                          "xsolla_fee": {
                              "currency": "USD",
                              "amount": "10"
                          },
                          "payout": {
                              "currency": "USD",
                              "amount": "200"
                          },
                          "payment_method_fee": {
                              "currency": "USD",
                              "amount": "20"
                          },
                          "payment": {
                              "currency": "USD",
                              "amount": "230"
                          },
                          "repatriation_commission": {
                              "currency": "USD",
                              "amount": 10
                          }
                      }
                }
            }
        - label: HTTP
          lang: HTTP
          source: |-
            POST /your/uri HTTP/1.1
            host:           your.hostname
            accept:         application/json
            content-length: 258
            content-type:   application/json
            authorization:  Signature d90d319f05df7b0f86d2485f48e7079f0f752523


            {
                "notification_type": "order_canceled",
                "items": [
                  {
                    "sku": "com.xsolla.v.item_1",
                    "type": "virtual_good",
                    "is_pre_order": false,
                    "quantity": 3,
                    "amount": "1000",
                    "promotions": [
                      {
                        "amount_without_discount": "6000",
                        "amount_with_discount": "5000",
                        "sequence": 1
                      },
                      {
                        "amount_without_discount": "5000",
                        "amount_with_discount": "4000",
                        "sequence": 2
                      }
                    ],
                    "custom_attributes": {
                        "purchased": 0,
                        "attr": "value"
                      }
                  },
                  {
                    "sku": "com.xsolla.v.item_new_1",
                    "type": "bundle",
                    "is_pre_order": false,
                    "quantity": 1,
                    "amount": "1000",
                    "promotions": []
                  },
                  {
                    "sku": "com.xsolla.gold_1",
                    "type": "virtual_currency",
                    "is_pre_order": false,
                    "quantity": 1500,
                    "amount": null,
                    "promotions": []
                  }
                ],
                "order": {
                  "id": 1,
                  "mode": "default",
                  "currency_type": "virtual",
                  "currency": "sku_currency",
                  "amount": "2000",
                  "status": "paid",
                  "platform": "xsolla",
                  "comment": null,
                  "invoice_id": "1",
                  "promotions": [
                    {
                      "amount_without_discount": "4000",
                      "amount_with_discount": "2000",
                      "sequence": 1
                    }
                  ],
                  "promocodes": [
                    {
                      "code": "promocode_some_code",
                      "external_id": "promocode_sku"
                    }
                  ],
                  "coupons": [
                    {
                      "code": "WINTER2021",
                      "external_id": "coupon_sku"
                    }
                  ]
                },
                "user": {
                  "external_id": "id_xsolla_login_1",
                  "email": "email@example.com",
                  "country": "US"
                },
                "billing": {
                  "notification_type": "refund",
                  "settings": {
                    "project_id": 18404,
                    "merchant_id": 2340
                  },
                  "purchase": {
                      "subscription": {
                          "plan_id": "b5dac9c8",
                          "subscription_id": "10",
                          "date_create": "2014-09-22T19:25:25+04:00",
                          "currency": "USD",
                          "amount": 9.99
                      },
                      "total": {
                          "currency": "USD",
                          "amount": 200
                      }
                  },
                  "transaction": {
                      "id": 1,
                      "external_id": 1,
                      "dry_run": 1,
                      "agreement": 1
                  },
                  "refund_details": {
                      "code": 4,
                      "reason": "Potential fraud"
                  },
                  "payment_details": {
                      "sales_tax": {
                          "currency": "USD",
                          "amount": 0
                      },
                      "direct_wht": {
                          "currency": "USD",
                          "amount": 0.70
                      },
                      "xsolla_fee": {
                          "currency": "USD",
                          "amount": "10"
                      },
                      "payout": {
                          "currency": "USD",
                          "amount": "200"
                      },
                      "payment_method_fee": {
                          "currency": "USD",
                          "amount": "20"
                      },
                      "payment": {
                          "currency": "USD",
                          "amount": "230"
                      },
                      "repatriation_commission": {
                          "currency": "USD",
                          "amount": 10
                      }
                    }
                  }
                }
  order-cancellation-separate:
    post:
      description: >
        Xsolla отправляет вебхук <code>order_canceled</code> на указанный
        URL-адрес, 

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

        содержится информация о возвращенных товарах и детали отмененного
        заказа.


        Вебхук не отправляется, если оплата не была успешной, например:

        * платежный интерфейс был открыт, но пользователь не оплатил заказ;

        * платежный интерфейс был открыт, но при оплате возникли ошибки.


        Рекомендуемое время обработки вебхука — до 3 секунд.
      operationId: order-cancellation-separate
      requestBody:
        content:
          application/json:
            schema:
              properties:
                custom_parameters:
                  description: Дополнительная информация.
                  type: object
                items:
                  description: "Список предметов, которые купил пользователь.\n\nНабор передаваемых параметров в массиве зависит от версии вебхука. В версии 2 \nдополнительно передаются параметры `is_free`, `is_bonus` и `is_bundle_content`.\_\nДля переключения версии передайте ее номер в параметре `version` в методе \n[Обновление информации о настройках вебхуков](/ru/api/igs/operation/update-webhook/).\n"
                  items:
                    oneOf:
                      - properties:
                          amount:
                            description: >-
                              Общая стоимость товаров, рассчитанная c учетом их
                              количества.
                            type: string
                          custom_attributes:
                            description: >-
                              JSON-объект, содержащий атрибуты товара и их
                              значения.
                            type: object
                          is_pre_order:
                            description: >-
                              Если передано значение `true`, товар является
                              предзаказом.
                            type: boolean
                          promotions:
                            $ref: '#/components/schemas/items.promotions'
                          quantity:
                            description: Количество товаров.
                            type: integer
                          sku:
                            $ref: '#/components/schemas/items.sku'
                          type:
                            $ref: '#/components/schemas/items.type'
                        required:
                          - sku
                          - type
                          - quantity
                          - amount
                          - promotions
                          - is_pre_order
                        title: version = 1
                        type: object
                      - properties:
                          amount:
                            description: >-
                              Общая стоимость товаров, рассчитанная c учетом их
                              количества.
                            type: string
                          custom_attributes:
                            description: >-
                              JSON-объект, содержащий атрибуты товара и их
                              значения.
                            type: object
                          is_bonus:
                            description: >-
                              Если передано значение `true`, товар является
                              бонусом.
                            type: boolean
                          is_bundle_content:
                            description: >-
                              Если передано значение `true`, товар является
                              частью бандла.
                            type: boolean
                          is_free:
                            description: >-
                              Если передано значение `true`, товар является
                              бесплатным.
                            type: boolean
                          is_pre_order:
                            description: >-
                              Если передано значение `true`, товар является
                              предзаказом.
                            type: boolean
                          promotions:
                            description: >-
                              Примененные акции. Если акции не применялись, в
                              параметр передается пустой массив.
                            items:
                              properties:
                                amount_with_discount:
                                  description: Стоимость товаров со скидкой.
                                  type: string
                                amount_without_discount:
                                  description: Стоимость товаров без скидки.
                                  type: string
                                sequence:
                                  description: Порядок применения акций.
                                  type: integer
                              type: object
                            type: array
                          quantity:
                            description: Количество товаров.
                            type: integer
                          sku:
                            $ref: '#/components/schemas/items.sku'
                          type:
                            $ref: '#/components/schemas/items.type'
                        required:
                          - sku
                          - type
                          - quantity
                          - amount
                          - promotions
                          - is_pre_order
                          - is_free
                          - is_bonus
                          - is_bundle_content
                        title: version = 2
                        type: object
                  type: array
                notification_type:
                  $ref: '#/components/schemas/notification_type'
                order:
                  description: Информация о заказе.
                  properties:
                    amount:
                      description: Стоимость корзины с учетом выбранной валюты.
                      type: string
                    comment:
                      description: Комментарий пользователя к заказу.
                      nullable: true
                      type: string
                    coupons:
                      description: >-
                        Примененные купоны. Если купон не был применен, массив
                        не возвращается.
                      items:
                        properties:
                          code:
                            description: Код примененного купона.
                            type: string
                          external_id:
                            description: Внешний ID.
                            type: string
                        type: object
                      type: array
                    currency:
                      description: >-
                        Валюта заказа. Для виртуальной валюты используется
                        артикул, для реальной валюты используется трехбуквенное
                        обозначение согласно стандарту [ISO
                        4217](https://en.wikipedia.org/wiki/ISO_4217).
                      type: string
                    currency_type:
                      $ref: '#/components/schemas/currency-type'
                    id:
                      description: >-
                        Уникальный идентификатор заказа пользователя на стороне
                        Xsolla.
                      type: integer
                    invoice_id:
                      description: >-
                        ID счета для платежей за реальную валюту. Для платежей
                        за виртуальную валюту или для бесплатных товаров
                        передается значение `null`.
                      nullable: true
                      type: string
                    mode:
                      description: >-
                        Тип платежа. Значение `default` (по умолчанию)
                        используется для реальных платежей. Значение `sandbox`
                        используется для тестовых платежей.
                      enum:
                        - default
                        - sandbox
                      type: string
                    platform:
                      description: >-
                        Платформа платежа. Для платежей через Xsolla
                        используется значение `xsolla`. Для других платежей
                        используется значение, соответствующее названию
                        платформы публикации игры: `playstation_network`,
                        `xbox_live`, `pc_standalone`, `nintendo_shop`,
                        `google_play`, `app_store_ios`, `android_standalone`,
                        `ios_standalone`, `android_other`, `ios_other`,
                        `pc_other`.
                      enum:
                        - xsolla
                        - playstation_network
                        - xbox_live
                        - pc_standalone
                        - nintendo_shop
                        - google_play
                        - app_store_ios
                        - android_standalone
                        - ios_standalone
                        - android_other
                        - ios_other
                        - pc_other
                      nullable: true
                      type: string
                    promocodes:
                      description: >-
                        Примененные промокоды. Если промокод не был применен,
                        массив не возвращается.
                      items:
                        properties:
                          code:
                            description: Код примененного промокода.
                            type: string
                          external_id:
                            description: Внешний ID.
                            type: string
                        type: object
                      type: array
                    promotions:
                      $ref: '#/components/schemas/order.promotions'
                    status:
                      description: Статус заказа.
                      type: string
                  required:
                    - id
                    - mode
                    - currency_type
                    - currency
                    - amount
                    - status
                    - platform
                    - comment
                    - invoice_id
                    - promotions
                  type: object
                user:
                  description: Информация о пользователе.
                  properties:
                    country:
                      $ref: '#/components/schemas/user.country'
                    email:
                      description: Email-адрес пользователя.
                      type: string
                    external_id:
                      description: ID пользователя.
                      type: string
                  required:
                    - external_id
                    - email
                  type: object
              required:
                - notification_type
                - items
                - order
                - user
      responses:
        '200':
          description: Верните, чтобы сообщить об успешной обработке вехбука.
        '400':
          description: >-
            Верните в случае ошибки в предоставленной информации (например,
            обязательный параметр не передан, или авторизация не прошла).
      summary: Отмена заказа (без деталей платежа и транзакции)
      tags:
        - separate-webhooks
      x-codeSamples:
        - label: CURL
          lang: cURL
          source: >-
            curl -v 'https://your.hostname/your/uri' \

            -X POST \

            -H 'accept: application/json' \

            -H 'content-type: application/json' \

            -H 'authorization: Signature
            d09695066c52c1b8bdae92f2d6eb59f5b5f89843' \

            -d '{
                "notification_type": "order_canceled",
                "items": [
                  {
                    "sku": "com.xsolla.v.item_1",
                    "type": "virtual_good",
                    "is_pre_order": false,
                    "quantity": 3,
                    "amount": "1000",
                    "promotions": [
                      {
                        "amount_without_discount": "6000",
                        "amount_with_discount": "5000",
                        "sequence": 1
                      },
                      {
                        "amount_without_discount": "5000",
                        "amount_with_discount": "4000",
                        "sequence": 2
                      }
                    ],
                    "custom_attributes": {
                        "purchased": 0,
                        "attr": "value"
                      }
                  },
                  {
                    "sku": "com.xsolla.v.item_new_1",
                    "type": "bundle",
                    "is_pre_order": false,
                    "quantity": 1,
                    "amount": "1000",
                    "promotions": []
                  },
                  {
                    "sku": "com.xsolla.gold_1",
                    "type": "virtual_currency",
                    "is_pre_order": false,
                    "quantity": 1500,
                    "amount": "[null]",
                    "promotions": []
                  }
                ],
                "order": {
                  "id": 1,
                  "mode": "default",
                  "currency_type": "virtual",
                  "currency": "sku_currency",
                  "amount": "2000",
                  "status": "paid",
                  "platform": "xsolla",
                  "comment": null,
                  "invoice_id": "1",
                  "promotions": [
                    {
                      "amount_without_discount": "4000",
                      "amount_with_discount": "2000",
                      "sequence": 1
                    }
                  ],
                  "promocodes": [
                    {
                      "code": "promocode_some_code",
                      "external_id": "promocode_sku"
                    }
                  ],
                  "coupons": [
                    {
                      "code": "WINTER2021",
                      "external_id": "coupon_sku"
                    }
                  ]
                },
                "user": {
                  "external_id": "id_xsolla_login_1",
                  "email": "email@example.com",
                  "country": "US"
                }

            }'
        - label: HTTP
          lang: HTTP
          source: |-
            POST /your/uri HTTP/1.1
            host:           your.hostname
            accept:         application/json
            content-length: 258
            content-type:   application/json
            authorization:  Signature d90d319f05df7b0f86d2485f48e7079f0f752523


            {
                "notification_type": "order_canceled",
                "items": [
                  {
                    "sku": "com.xsolla.v.item_1",
                    "type": "virtual_good",
                    "is_pre_order": false,
                    "quantity": 3,
                    "amount": "1000",
                    "promotions": [
                      {
                        "amount_without_discount": "6000",
                        "amount_with_discount": "5000",
                        "sequence": 1
                      },
                      {
                        "amount_without_discount": "5000",
                        "amount_with_discount": "4000",
                        "sequence": 2
                      }
                    ],
                    "custom_attributes": {
                        "purchased": 0,
                        "attr": "value"
                      }
                  },
                  {
                    "sku": "com.xsolla.v.item_new_1",
                    "type": "bundle",
                    "is_pre_order": false,
                    "quantity": 1,
                    "amount": "1000",
                    "promotions": []
                  },
                  {
                    "sku": "com.xsolla.gold_1",
                    "type": "virtual_currency",
                    "is_pre_order": false,
                    "quantity": 1500,
                    "amount": "[null]",
                    "promotions": []
                  }
                ],
                "order": {
                  "id": 1,
                  "mode": "default",
                  "currency_type": "virtual",
                  "currency": "sku_currency",
                  "amount": "2000",
                  "status": "paid",
                  "platform": "xsolla",
                  "comment": null,
                  "invoice_id": "1",
                  "promotions": [
                    {
                      "amount_without_discount": "4000",
                      "amount_with_discount": "2000",
                      "sequence": 1
                    }
                  ],
                  "promocodes": [
                    {
                      "code": "promocode_some_code",
                      "external_id": "promocode_sku"
                    }
                  ],
                  "coupons": [
                    {
                      "code": "WINTER2021",
                      "external_id": "coupon_sku"
                    }
                  ]
                },
                "user": {
                  "external_id": "id_xsolla_login_1",
                  "email": "email@example.com",
                  "country": "US"
                }
            }
  partial-refund:
    post:
      description: >
        При частичном возврате платежа Xsolla отправляет детали отмененной
        транзакции в 

        вебхуке с типом `partial_refund` на URL-адрес вебхука. Подробная
        информация о 

        процессе частичного возврата платежа приведена в
        [инструкции](/ru/doc/pay-station/features/refund/#pay_station_features_refund_how_it_works_partial_refund_flow).


        После сохранения URL-адреса вебхука в Личном кабинете вы можете
        настроить 

        получение дополнительной информации в вебхуке. Для этого в разделе <a 

        href="https://publisher.xsolla.com/0/projects/0/edit/webhooks/store">Настройки 

        проекта &gt; Вебхуки &gt; Расширенные настройки</a> установите
        следующий 

        переключатель в активное положение.


        <div class="note">

        <p><strong>Примечание</strong></p>

        <p>Если вы зарегистрировались в Личном кабинете до 22 января 2025 г.
        (включительно), переключатели располагаются в разделе <a
        href="https://publisher.xsolla.com/0/projects/0/edit/webhooks/payments">Настройки
        проекта &gt; Вебхуки &gt; Тестирование &gt; Payments &gt; Расширенные
        настройки</a>.</p>

        </div>


        <table>

        <thead>
            <tr>
                <th>Переключатель</th>
                <th>Описание</th>
            </tr>
        </thead>

        <tbody>
            <tr>
                <td>Показывать информацию о транзакциях сохраненными способами оплаты</td>
                <td><p>В вебхуке будет передаваться информация в кастомных параметрах:</p><ul><li><code>saved_payment_method</code>:<ul><li><code>0</code> — сохраненный способ оплаты не используется;</li><li><code>1</code> — способ оплаты был сохранен при совершении текущей транзакции;</li><li><code>2</code> — используется ранее сохраненный способ оплаты.</li></ul></li><li><code>payment_type</code>:<ul><li><code>1</code> — единоразовый платеж;</li><li><code>2</code> — рекуррентный платеж.</li></ul></li></ul></td>
            </tr>
        </tbody>

        </table>


        Коды отмены:


        <table>
            <thead>
            <tr>
                <th>Код</th>
                <th>Причина отмены</th>
                <th>Описание</th>
            </tr>
            </thead>
            <tbody>
            <tr>
                <td>1</td>
                <td>Cancellation by the user request / the game request</td>
                <td>Используется, если отмена произошла из Личного кабинета.</td>
            </tr>
            <tr>
                <td>3</td>
                <td>Integration error</td>
                <td>Используется в случае проблем с интеграцией между Xsolla и игрой.<br /><b>В этом случае мы не рекомендуем заносить пользователя в черный список.</b></td>
            </tr>
            <tr>
                <td>5</td>
                <td>Test payment</td>
                <td>Используется в случае совершения тестового платежа с последующей отменой.<br /><b>В этом случае мы не рекомендуем заносить пользователя в черный список.</b></td>
            </tr>
            <tr>
                <td>7</td>
                <td>Fraud notification from PS</td>
                <td>Используется, если платежная система не произвела выплату по транзакции из-за потенциального фрода.<br /><b>В этом случае мы рекомендуем добавить пользователя в черный список.</b></td>
            </tr>
            <tr>
                <td>9</td>
                <td>Cancellation by the user request</td>
                <td>Используется, если игра или заказ не удовлетворяют требованиям пользователя по каким-либо причинам.<br /><b>В этом случае мы не рекомендуем заносить пользователя в черный список.</b></td>
            </tr>
            <tr>
                <td>10</td>
                <td>Cancellation by the game request</td>
                <td>Используется, когда игра просит отменить транзакцию.<br /><b>В этом случае мы не рекомендуем заносить пользователя в черный список.</b></td>
            </tr>
            </tbody>
        </table>
      operationId: partial-refund
      requestBody:
        content:
          application/json:
            schema:
              properties:
                custom_parameters:
                  description: Ваши дополнительные параметры.
                  type: object
                notification_type:
                  $ref: '#/components/schemas/notification_type'
                payment_details:
                  description: Объект с финансовыми данными платежа.
                  properties:
                    direct_wht:
                      description: Налог, удерживаемый у источника выплаты.
                      properties:
                        amount:
                          description: Сумма.
                          format: float
                          type: number
                        currency:
                          $ref: '#/components/schemas/currency'
                        percent:
                          description: Процент налога, удерживаемого у источника выплаты.
                          format: float
                          type: number
                      type: object
                    payment:
                      description: Объект с данными о сумме, которую оплатил пользователь.
                      properties:
                        amount:
                          description: Сумма.
                          format: float
                          type: number
                        currency:
                          $ref: '#/components/schemas/currency'
                      type: object
                    payment_method_fee:
                      description: Размер комиссии платежной системы.
                      properties:
                        amount:
                          description: Сумма.
                          format: float
                          type: number
                        currency:
                          $ref: '#/components/schemas/currency'
                      type: object
                    payment_method_sum:
                      description: >-
                        Объект с данными о сумме, которая была оплачена из
                        платежной системы.
                      properties:
                        amount:
                          description: Сумма.
                          format: float
                          type: number
                        currency:
                          $ref: '#/components/schemas/currency'
                      type: object
                    payout:
                      description: Объект с данными о сумме выплаты.
                      properties:
                        amount:
                          description: Сумма.
                          format: float
                          type: number
                        currency:
                          $ref: '#/components/schemas/currency'
                      type: object
                    payout_currency_rate:
                      description: Курс валюты платежа к валюте выплаты.
                      type: string
                    repatriation_commission:
                      description: >-
                        Объект с информацией о затратах на репатриацию,
                        возлагаемых на Xsolla третьими сторонами.
                      properties:
                        amount:
                          description: Сумма.
                          format: float
                          type: number
                        currency:
                          $ref: '#/components/schemas/currency'
                      type: object
                    sales_tax:
                      description: Размер налога (только для США и Канады).
                      properties:
                        amount:
                          description: Сумма.
                          format: float
                          type: number
                        currency:
                          $ref: '#/components/schemas/currency'
                        percent:
                          description: Процент налога.
                          format: float
                          type: number
                      type: object
                    vat:
                      description: Размер VAT (только для Евросоюза).
                      properties:
                        amount:
                          description: Сумма.
                          format: float
                          type: number
                        currency:
                          $ref: '#/components/schemas/currency'
                        percent:
                          description: Процент VAT.
                          format: float
                          type: number
                      type: object
                    xsolla_balance_sum:
                      description: >-
                        Объект с данными о сумме, которая была оплачена с
                        Xsolla-баланса.
                      properties:
                        amount:
                          description: Сумма.
                          format: float
                          type: number
                        currency:
                          $ref: '#/components/schemas/currency'
                      type: object
                    xsolla_fee:
                      description: Размер комиссии Xsolla.
                      properties:
                        amount:
                          description: Сумма.
                          format: float
                          type: number
                        currency:
                          $ref: '#/components/schemas/currency'
                      type: object
                  type: object
                purchase:
                  description: Объект с информацией о заказе.
                  properties:
                    checkout:
                      description: Объект с информацией о заказе.
                      properties:
                        amount:
                          description: Сумма заказа.
                          format: float
                          type: number
                        currency:
                          $ref: '#/components/schemas/currency'
                      type: object
                    total:
                      description: Объект с данными об общей стоимости покупки.
                      properties:
                        amount:
                          description: Сумма частичного возврата платежа.
                          format: float
                          type: number
                        currency:
                          $ref: '#/components/schemas/currency'
                      type: object
                  required:
                    - total
                  type: object
                refund_details:
                  description: Объект с финансовыми данными рефанда.
                  properties:
                    author:
                      description: >
                        Инициатор возврата платежа. Значение поля передается
                        согласно таблице:


                        <table>
                            <thead>
                            <tr>
                                <th>Инициатор возврата</th>
                                <th>Значение поля</th>
                            </tr>
                            </thead>
                            <tbody>
                            <tr>
                                <td>Игра (через API).</td>
                                <td>API</td>
                            </tr>
                            <tr>
                                <td>Пользователь Личного кабинета (автоматический возврат).</td>
                                <td>Email-адрес пользователя</td>
                            </tr>
                            <tr>
                                <td>Пользователь Личного кабинета (при участии службы поддержки Xsolla).</td>
                                <td>support@xsolla.com</td>
                            </tr>
                            <tr>
                                <td>Xsolla (при участии службы поддержки Xsolla).</td>
                                <td>support@xsolla.com</td>
                            </tr>
                            </tbody>
                        </table>
                      type: string
                    code:
                      description: ID кода.
                      type: integer
                    date:
                      description: Дата возврата платежа.
                      type: string
                    reason:
                      description: Причина отмены.
                      type: string
                  type: object
                settings:
                  description: Объект, содержащий настройки проекта.
                  properties:
                    merchant_id:
                      $ref: '#/components/schemas/settings.merchant_id'
                    project_id:
                      $ref: '#/components/schemas/settings.project_id'
                  type: object
                transaction:
                  description: >-
                    Объект с информацией о транзакции, связанной с этой
                    операцией.
                  properties:
                    agreement:
                      description: ID соглашения.
                      type: integer
                    date:
                      description: Дата транзакции.
                      type: string
                    dry_run:
                      description: >-
                        Признак тестовой транзакции. Значение параметра равно 1
                        для тестового платежа, для реального платежа параметр не
                        передается.
                      type: integer
                    external_id:
                      description: Внешний ID транзакции.
                      type: string
                    id:
                      description: ID транзакции.
                      type: integer
                  type: object
                user:
                  description: Объект с информацией о пользователе.
                  properties:
                    country:
                      $ref: '#/components/schemas/user.country'
                    email:
                      $ref: '#/components/schemas/user.email'
                    id:
                      $ref: '#/components/schemas/user.id'
                    ip:
                      $ref: '#/components/schemas/user.ip'
                    name:
                      $ref: '#/components/schemas/user.name'
                    phone:
                      $ref: '#/components/schemas/user.phone'
                    zip:
                      $ref: '#/components/schemas/user.zip'
                  required:
                    - id
                  type: object
              required:
                - notification_type
                - transaction
                - payment_details
      responses:
        '204':
          $ref: '#/components/responses/204'
        '400':
          $ref: '#/components/responses/400'
        '500':
          $ref: '#/components/responses/500'
      summary: Частичный возврат платежа
      tags:
        - payments
      x-codeSamples:
        - label: CURL
          lang: cURL
          source: |-
            curl -v 'https://your.hostname/your/uri' \
            -X POST \
            -d '{
                    "notification_type": "partial_refund",
                    "settings": {
                      "project_id": 18404,
                      "merchant_id": 2340
                    },
                    "purchase": {
                        "checkout": {
                            "currency": "USD",
                            "amount": 50
                        },
                        "total":{
                            "currency": "USD",
                            "amount": 200
                        }
                    },
                    "user": {
                        "ip": "127.0.0.1",
                        "phone": "18777976552",
                        "email": "email@example.com",
                        "id": "1234567",
                        "name": "John Smith",
                        "country": "US"
                    },
                    "transaction": {
                        "id": 1,
                        "external_id": 1,
                        "dry_run": 1,
                        "agreement": 1,
                        "date": "2022-03-01 10:53:15"
                    },
                    "refund_details": {
                        "author": "email@example.com",
                        "date": "2022-03-01 10:56:48"
                    },
                    "payment_details": {
                        "sales_tax": {
                            "currency": "USD",
                            "amount": 0
                        },
                        "direct_wht": {
                            "currency": "USD",
                            "amount": 0.70
                        },
                        "xsolla_fee": {
                            "currency": "USD",
                            "amount": "10"
                        },
                        "payout": {
                            "currency": "USD",
                            "amount": "200"
                        },
                        "payment_method_fee": {
                            "currency": "USD",
                            "amount": "20"
                        },
                        "payment": {
                            "currency": "USD",
                            "amount": "230"
                        },
                        "repatriation_commission": {
                            "currency": "USD",
                            "amount": 10
                        }
                    }
                }
            }'
        - label: PHP
          lang: PHP
          source: |-
            <?php

            $request = array(
                'notification_type' => 'partial_refund',
                'settings' => array(
                  'project_id' => 18404,
                  'merchant_id' => 2340
                ),
                'purchase' => array(
                    'total' => array(
                        'currency' => 'USD',
                        'amount' => 9.99
                    )
                ),
                'user' => array(
                    'ip' => '127.0.0.1',
                    'phone' => '18777976552',
                    'email' => 'email@example.com',
                    'id' => '1234567',
                    'country' => 'US'
                ),
                'transaction' => array(
                    'id' => 87654321,
                    'payment_date' => '2014-09-23T19:25:25+04:00',
                    'payment_method' => 1380,
                    'dry_run' => 1,
                    'date' => '2022-03-31 10:53:15'
                ),
                'refund_details' => array(
                        'author' => 'email@example.com',
                        'date' => '2022-03-01 10:56:48'
                ),
                'payment_details' => array(
                    'payment' => array(
                        'currency' => 'USD',
                        'amount' => 9.99
                    ),
                    'vat' => array(
                        'currency' => 'USD',
                        'amount' => 0
                    ),
                    'sales_tax' => array(
                        'currency' => 'USD',
                        'amount' => 0
                    ),
                    'direct_wht' => array(
                        'currency' => 'USD',
                        'amount' => 70
                    ),
                    'payout_currency_rate' => 1,
                    'payout' => array(
                        'currency' => 'USD',
                        'amount' => 9.49
                    ),
                    'xsolla_fee' => array(
                        'currency' => 'USD',
                        'amount' => 0.19
                    ),
                    'payment_method_fee' => array(
                        'currency' => 'USD',
                        'amount' => 0.31
                    ),
                    'repatriation_commission' => array(
                        'currency' => 'USD',
                        'amount' => 0.2
                    )
                )
            );
        - label: HTTP
          lang: HTTP
          source: |-
            POST /your_uri HTTP/1.1
            host: your.host
            accept: application/json
            content-type: application/json
            content-length: 1220
            authorization: Signature 31bd5924dd6cbc9cbe99d331c4a086a57291f9d7

            {
                "notification_type": "partial_refund",
                "settings": {
                  "project_id": 18404,
                  "merchant_id": 2340
                },
                "purchase": {
                    "checkout": {
                        "currency": "USD",
                        "amount": 50
                    },
                    "total": {
                        "currency": "USD",
                        "amount": 200
                    }
                },
                "user": {
                    "ip": "127.0.0.1",
                    "phone": "18777976552",
                    "email": "email@example.com",
                    "id": "1234567",
                    "name": "John Smith",
                    "country": "US"
                },
                "transaction": {
                    "id": 1,
                    "external_id": 1,
                    "dry_run": 1,
                    "agreement": 1,
                    "date": "2022-03-31 10:53:15"
                },
                "refund_details": {
                    "author": "email@example.com",
                    "date": "2022-03-31 10:56:48"
                },
                "payment_details": {
                    "sales_tax": {
                        "currency": "USD",
                        "amount": 0
                    },
                    "direct_wht": {
                        "currency": "USD",
                        "amount": 0.70
                    },
                    "xsolla_fee": {
                        "currency": "USD",
                        "amount": "10"
                    },
                    "payout": {
                        "currency": "USD",
                        "amount": "200"
                    },
                    "payment_method_fee": {
                        "currency": "USD",
                        "amount": "20"
                    },
                    "payment": {
                        "currency": "USD",
                        "amount": "230"
                    },
                    "repatriation_commission": {
                        "currency": "USD",
                        "amount": 10
                    }
                }
            }
  payment:
    post:
      description: >
        Когда пользователь успешно совершает оплату, Xsolla отправляет детали
        платежа в 

        вебхуке с типом `payment` на URL-адрес вебхука.


        Ожидаемые коды ответов описаны в разделе <b>Responses</b>, но вы можете 

        использовать и другие коды:


        <table>
            <thead>
            <tr>
                <th>Код ответа</th>
                <th>Описание</th>
            </tr>
            </thead>
            <tbody>
            <tr>
                <td><code>200</code>, <code>201</code>, <code>204</code></td>
                <td>Успешный ответ.</td>
            </tr>
            <tr>
                <td><code>4xx</code></td>
                <td>Возникновение ошибки. Например, если указанный пользователь не был найден или если передана недействительная подпись.</td>
            </tr>
            <tr>
                <td><code>5xx</code></td>
                <td>Временная ошибка на сервере. При получении этого ответа Xsolla отправляет вебхук повторно с увеличенным интервалом, пока ваш обработчик не подтвердит их получение. Максимальное количество попыток — 12 в течение 48 часов.</td>
            </tr>
            </tbody>
        </table>


        После сохранения URL-адреса вебхука в <a 

        href="https://publisher.xsolla.com/0/projects/0/edit/webhooks/store">Личном 

        кабинете</a> вы можете настроить получение дополнительной информации в
        вебхуке.


        <div class="note">

        <p><strong>Примечание</strong></p>

        <p>Если вы зарегистрировались в Личном кабинете до 22 января 2025 года
        (включительно), вы можете найти переключатели в проекте в разделе <a
        href="https://publisher.xsolla.com/0/projects/0/edit/webhooks/payments">Настройки
        &gt; Вебхуки &gt; Тестирование &gt; Payments &gt; Расширенные
        настройки</a>.</p>

        </div>


        <table>

        <thead>
            <tr>
                <th>Переключатель</th>
                <th>Описание</th>
            </tr>
        </thead>

        <tbody>
            <tr>
                <td>Показывать информацию о сохраненном платежном аккаунте</td>
                <td>Информация о сохраненном способе оплаты передается в кастомном объекте <code>payment_account</code>.</td>
            </tr>
            <tr>
                <td>Показывать информацию о транзакциях сохраненными способами оплаты</td>
                <td><p>В вебхуке будет передаваться информация в кастомных параметрах:</p><ul><li><code>saved_payment_method</code>:<ul><li><code>0</code> — сохраненный способ оплаты не используется;</li><li><code>1</code> — способ оплаты был сохранен при совершении текущей транзакции;</li><li><code>2</code> — используется ранее сохраненный способ оплаты.</li></ul></li><li><code>payment_type</code>:<ul><li><code>1</code> — единоразовый платеж;</li><li><code>2</code> — рекуррентный платеж.</li></ul></li></ul></td>
            </tr>
            <tr>
                <td>Добавить объект order в вебхук</td>
                <td>В вебхуке <a href="/ru/webhooks/operation/payment/">Успешный платеж</a> будет передаваться информация о заказе в объекте <code>order</code>.</td>
            </tr>
            <tr>
                <td>Показывать только необходимую информацию о пользователе без чувствительных данных</td>
                <td><p>В вебхуке о пользователе будет передаваться только следующая информация:</p><ul><li>ID;</li><li>страна.</li></ul></td>
            </tr>
            <tr>
                <td>Показывать БИН карты и последние 4 цифры ее номера</td>
                <td><p>В вебхуке будет передаваться следующая информация о номере карты:</p><ul><li>первые 6 цифр в параметре <code>card_bin</code>;</li><li>последние 4 цифры в параметре <code>card_suffix</code>.</li></ul></td>
            </tr>
            <tr>
                <td>Показывать бренд карты</td>
                <td>Бренд карты, с которой была совершена оплата. Например, Mastercard или Visa.</td>
            </tr>
        </tbody>

        </table>


        <div class="notice">

        <p><strong>Внимание</strong></p>

        <p>Набор полей, отправляемых в вебхуке, зависит:<ul><li>от расширенных
        настроек, которые вы установили в Личном кабинете;</li><li>кастомных
        настроек, которые были заданы на стороне Xsolla.</li></ul></p><p>При
        возникновении вопросов обратитесь к персональному менеджеру проекта или
        напишите на <a href="mailto:csm@xsolla.com">csm@xsolla.com</a>.</p>

        </div>
      operationId: payment
      requestBody:
        content:
          application/json:
            schema:
              properties:
                custom_parameters:
                  description: Ваши дополнительные параметры.
                  type: object
                notification_type:
                  $ref: '#/components/schemas/notification_type'
                payment_details:
                  description: Объект с финансовыми данными платежа.
                  properties:
                    country_wht:
                      description: >-
                        Объект с данными о налоге с дохода, который удерживается
                        с международных транзакций в некоторых странах.
                      properties:
                        amount:
                          description: Сумма.
                          format: float
                          type: number
                        currency:
                          $ref: '#/components/schemas/currency'
                        percent:
                          description: Ставка налога, %.
                          format: float
                          type: number
                      type: object
                    direct_wht:
                      description: Налог, удерживаемый у источника выплаты.
                      properties:
                        amount:
                          description: Сумма.
                          format: float
                          type: number
                        currency:
                          $ref: '#/components/schemas/currency'
                        percent:
                          description: Процент налога, удерживаемого у источника выплаты.
                          format: float
                          type: number
                      type: object
                    payment:
                      description: Объект с данными о сумме, которую оплатил пользователь.
                      properties:
                        amount:
                          description: Сумма.
                          format: float
                          type: number
                        currency:
                          $ref: '#/components/schemas/currency'
                      type: object
                    payment_method_fee:
                      description: Размер комиссии платежной системы.
                      properties:
                        amount:
                          description: Сумма.
                          format: float
                          type: number
                        currency:
                          $ref: '#/components/schemas/currency'
                      type: object
                    payment_method_sum:
                      description: >-
                        Объект с данными о сумме, которая была оплачена из
                        платежной системы.
                      properties:
                        amount:
                          description: Сумма.
                          format: float
                          type: number
                        currency:
                          $ref: '#/components/schemas/currency'
                      type: object
                    payout:
                      description: Объект с данными о сумме выплаты.
                      properties:
                        amount:
                          description: Сумма.
                          format: float
                          type: number
                        currency:
                          $ref: '#/components/schemas/currency'
                      type: object
                    payout_currency_rate:
                      description: Курс валюты платежа к валюте выплаты.
                      type: string
                    repatriation_commission:
                      description: >-
                        Объект с информацией о затратах на репатриацию,
                        возлагаемых на Xsolla третьими сторонами.
                      properties:
                        amount:
                          description: Сумма.
                          format: float
                          type: number
                        currency:
                          $ref: '#/components/schemas/currency'
                      type: object
                    sales_tax:
                      description: Размер налога (только для США и Канады).
                      properties:
                        amount:
                          description: Сумма.
                          format: float
                          type: number
                        currency:
                          $ref: '#/components/schemas/currency'
                        percent:
                          description: Процент налога.
                          format: float
                          type: number
                      type: object
                    user_acquisition_fee:
                      description: >-
                        Объект с данными о сумме вознаграждения каналов
                        привлечения трафика (аффилированные сети и инфлюенсеры).
                      properties:
                        amount:
                          description: Сумма.
                          format: float
                          type: number
                        currency:
                          $ref: '#/components/schemas/currency'
                        percent:
                          description: >-
                            Ставка вознаграждения за привлечение пользователей,
                            %.
                          format: float
                          type: number
                      type: object
                    vat:
                      description: Размер VAT (только для Евросоюза).
                      properties:
                        amount:
                          description: Сумма.
                          format: float
                          type: number
                        currency:
                          $ref: '#/components/schemas/currency'
                        percent:
                          description: Процент VAT.
                          format: float
                          type: number
                      type: object
                    xsolla_balance_sum:
                      description: >-
                        Объект с данными о сумме, которая была оплачена с
                        Xsolla-баланса.
                      properties:
                        amount:
                          description: Сумма.
                          format: float
                          type: number
                        currency:
                          $ref: '#/components/schemas/currency'
                      type: object
                    xsolla_fee:
                      description: Размер комиссии Xsolla.
                      properties:
                        amount:
                          description: Сумма.
                          format: float
                          type: number
                        currency:
                          $ref: '#/components/schemas/currency'
                      type: object
                  type: object
                purchase:
                  description: Объект с информацией о заказе.
                  properties:
                    checkout:
                      description: Объект с информацией о заказе.
                      properties:
                        amount:
                          description: Сумма заказа.
                          format: float
                          type: number
                        currency:
                          $ref: '#/components/schemas/currency'
                      type: object
                    coupon:
                      description: >-
                        Объект с информацией о купоне (если при создании
                        подписки был использован купон).
                      properties:
                        campaign_code:
                          description: Код кампании купонов.
                          type: string
                        coupon_code:
                          description: Код купона.
                          type: string
                      type: object
                    gift:
                      description: Объект с информацией о подарке.
                      properties:
                        giver_id:
                          description: ID дарителя.
                          type: string
                        hide_giver_from_receiver:
                          description: Флаг, показывать ли дарителя получателю подарка.
                          type: string
                        message:
                          description: Сообщение от дарителя.
                          type: string
                        receiver_email:
                          description: Email получателя подарка.
                          type: string
                        receiver_id:
                          description: ID получателя подарка.
                          type: string
                      type: object
                    order:
                      $ref: '#/components/schemas/order'
                      properties:
                        id:
                          description: Идентификатор заказа.
                          type: integer
                        lineitems:
                          description: >-
                            Массив с параметрами, которые содержат информацию о
                            товарах.
                          items:
                            properties:
                              price:
                                description: Объект с информацией о цене товара.
                                properties:
                                  amount:
                                    description: Общая стоимость товара в валюте.
                                    format: float
                                    type: number
                                  currency:
                                    description: Валюта, в которой указана цена товара.
                                    type: string
                                type: object
                              quantity:
                                description: Количество этого предмета в заказе.
                                type: integer
                              sku:
                                description: Артикул предмета.
                                type: string
                            type: object
                          type: array
                    promotions:
                      description: >-
                        Массив с данными акций, которые действуют на данную
                        покупку.
                      items:
                        properties:
                          id:
                            description: ID акции.
                            type: integer
                          technical_name:
                            description: Техническое название акции.
                            type: string
                        type: object
                      type: array
                    subscription:
                      description: Объект с данными о подписке.
                      properties:
                        amount:
                          $ref: '#/components/schemas/amount-float'
                        currency:
                          $ref: '#/components/schemas/currency'
                        date_create:
                          $ref: '#/components/schemas/subscription.date_create'
                        date_next_charge:
                          description: >-
                            Дата следующего списания. Дата и время согласно
                            стандарту [ISO
                            8601](https://en.wikipedia.org/wiki/ISO_8601).
                          type: string
                        plan_id:
                          $ref: '#/components/schemas/subscription.plan_id'
                        product_id:
                          description: ID продукта (если был отправлен в токене).
                          type: string
                        subscription_id:
                          $ref: '#/components/schemas/subscription.subscription_id'
                        tags:
                          $ref: '#/components/schemas/subscription.tags'
                      type: object
                    total:
                      description: Объект с данными об общей стоимости покупки.
                      properties:
                        amount:
                          description: Общая сумма покупки.
                          format: float
                          type: number
                        currency:
                          $ref: '#/components/schemas/currency'
                      type: object
                  required:
                    - total
                  type: object
                settings:
                  description: Объект, содержащий настройки проекта.
                  properties:
                    merchant_id:
                      $ref: '#/components/schemas/settings.merchant_id'
                    project_id:
                      $ref: '#/components/schemas/settings.project_id'
                  type: object
                transaction:
                  description: >-
                    Объект с информацией о транзакции, связанной с этой
                    операцией.
                  properties:
                    agreement:
                      description: ID соглашения.
                      type: integer
                    dry_run:
                      description: >-
                        Признак тестовой транзакции. Значение параметра равно 1
                        для тестового платежа, для реального платежа параметр не
                        передается.
                      type: integer
                    external_id:
                      $ref: '#/components/schemas/external-id'
                    id:
                      description: ID транзакции.
                      type: integer
                    payment_date:
                      description: Дата платежа.
                      type: string
                    payment_method:
                      description: ID способа оплаты.
                      type: integer
                    payment_method_name:
                      description: Название способа оплаты.
                      type: string
                    payment_method_order_id:
                      description: ID платежа в платежной системе.
                      type: string
                  type: object
                user:
                  description: Объект с информацией о пользователе.
                  properties:
                    country:
                      $ref: '#/components/schemas/user.country'
                    email:
                      $ref: '#/components/schemas/user.email'
                    id:
                      $ref: '#/components/schemas/user.id'
                    ip:
                      $ref: '#/components/schemas/user.ip'
                    name:
                      $ref: '#/components/schemas/user.name'
                    phone:
                      $ref: '#/components/schemas/user.phone'
                    zip:
                      $ref: '#/components/schemas/user.zip'
                  required:
                    - id
                  type: object
              required:
                - notification_type
                - transaction
                - payment_details
      responses:
        '204':
          $ref: '#/components/responses/204'
        '400':
          $ref: '#/components/responses/400-payment'
        '500':
          $ref: '#/components/responses/500'
      summary: Успешный платеж
      tags:
        - payments
      x-codeSamples:
        - label: CURL
          lang: cURL
          source: |-
            curl -v 'https://your.hostname/your/uri' \
            -X POST \
            -d '{
                "notification_type": "payment",
                "settings": {
                  "project_id": 18404,
                  "merchant_id": 2340
                },
                "purchase": {
                    "subscription": {
                        "plan_id": "b5dac9c8",
                        "subscription_id": "10",
                        "product_id": "Demo Product",
                        "date_create": "2014-09-22T19:25:25+04:00",
                        "date_next_charge": "2014-10-22T19:25:25+04:00",
                        "currency": "USD",
                        "amount": 9.99
                    },
                    "checkout": {
                        "currency": "USD",
                        "amount": 50
                    },
                    "total": {
                        "currency": "USD",
                        "amount": 200
                    },
                    "promotions": [{
                        "technical_name": "Demo Promotion",
                        "id": 853
                    }],
                    "coupon": {
                        "coupon_code": "ICvj45S4FUOyy",
                        "campaign_code": "1507"
                    },
                    "order": {
                      "id": 1234
                      "lineitems": [
                      {
                        "sku": "com.xsolla.item_1",
                        "quantity": 1,
                        "price": {
                          "currency": "EUR",
                          "amount": 6.5
                          }
                      }
                      ]
                      }
                },
                "user": {
                    "ip": "127.0.0.1",
                    "phone": "18777976552",
                    "email": "email@example.com",
                    "id": "1234567",
                    "name": "John Smith",
                    "country": "US"
                },
                "transaction": {
                    "id": 1,
                    "external_id": 1,
                    "payment_date": "2014-09-24T20:38:16+04:00",
                    "payment_method": 1,
                    "payment_method_name": "PayPal",
                    "payment_method_order_id": 1234567890123456789,
                    "dry_run": 1,
                    "agreement": 1
                },
                "payment_details": {
                    "payment": {
                        "currency": "USD",
                        "amount": 230
                    },
                    "vat": {
                        "currency": "USD",
                        "amount": 0,
                        "percent": 20
                    },
                    "sales_tax": {
                        "currency": "USD",
                        "amount": 0,
                        "percent": 0
                    },
                    "direct_wht": {
                        "currency": "USD",
                        "amount": 0,
                        "percent": 0
                    },
                    "payout_currency_rate": "1",
                    "payout": {
                        "currency": "USD",
                        "amount": 200
                    },
                    "country_wht": {
                        "currency": "USD",
                        "amount": 2,
                        "percent": 10
                    },
                    "user_acquisition_fee": {
                        "currency": "USD",
                        "amount": 2,
                        "percent": 1
                    },
                    "xsolla_fee": {
                        "currency": "USD",
                        "amount": 10
                    },
                    "payment_method_fee": {
                        "currency": "USD",
                        "amount": 20
                    },
                    "repatriation_commission": {
                        "currency": "USD",
                        "amount": 10
                    }
                },
                "custom_parameters": {
                    "parameter1": "value1",
                    "parameter2": "value2"
                }
            }'
        - label: PHP
          lang: PHP
          source: |-
            <?php

            $request = array(
                'notification_type' => 'payment',
                'settings' => array(
                  'project_id' => 18404,
                  'merchant_id' => 2340
                ),
                'purchase' => array(
                    'total' => array(
                        'currency' => 'USD',
                        'amount' => 9.99
                    )
                ),
                'user' => array(
                    'ip' => '127.0.0.1',
                    'phone' => '18777976552',
                    'email' => 'email@example.com',
                    'id' => '1234567',
                    'country' => 'US'
                ),
                'transaction' => array(
                    'id' => 87654321,
                    'payment_date' => '2014-09-23T19:25:25+04:00',
                    'payment_method' => 1380,
                    'payment_method_name' => 'PayPal'
                    'payment_method_order_id' => 1234567890123456789,
                    'dry_run' => 1
                ),
                'payment_details' => array(
                    'payment' => array(
                        'currency' => 'USD',
                        'amount' => 9.99
                    ),
                    'vat' => array(
                        'currency' => 'USD',
                        'amount' => 0
                    ),
                    'sales_tax' => array(
                        'currency' => 'USD',
                        'amount' => 0
                    ),
                    'direct_wht' => array(
                        'currency' => 'USD',
                        'amount' => 70
                    ),
                    'payout_currency_rate' => '1',
                    'country_wht ' => array(
                        'currency' => 'USD',
                        'amount' => 2,
                        'percent' => 10
                    ),
                    'user_acquisition_fee' => array(
                        'currency' => 'USD',
                        'amount' => 2,
                        'percent' => 1
                    ),
                    'payout' => array(
                        'currency' => 'USD',
                        'amount' => 9.49
                    ),
                    'xsolla_fee' => array(
                        'currency' => 'USD',
                        'amount' => 0.19
                    ),
                    'payment_method_fee' => array(
                        'currency' => 'USD',
                        'amount' => 0.31
                    ),
                    'repatriation_commission' => array(
                        'currency' => 'USD',
                        'amount' => 0.2
                    )
                )
            );
        - label: HTTP
          lang: HTTP
          source: |-
            POST /your_uri HTTP/1.1
            host: your.host
            accept: application/json
            content-type: application/json
            content-length: 1721
            authorization: Signature 34553d151e656110c656696c919f9a10e05de542

            {
                "notification_type": "payment",
                "settings": {
                  "project_id": 18404,
                  "merchant_id": 2340
                },
                "purchase":{
                    "subscription": {
                        "plan_id": "b5dac9c8",
                        "subscription_id": "10",
                        "product_id": "Demo Product",
                        "date_create": "2014-09-22T19:25:25+04:00",
                        "date_next_charge": "2014-10-22T19:25:25+04:00",
                        "currency": "USD",
                        "amount": 9.99
                    },
                    "checkout": {
                        "currency": "USD",
                        "amount": 50
                    },
                    "total": {
                        "currency": "USD",
                        "amount": 200
                    },
                    "promotions": [{
                        "technical_name": "Demo Promotion",
                        "id": 853
                    }],
                    "coupon": {
                        "coupon_code": "ICvj45S4FUOyy",
                        "campaign_code": "1507"
                    },
                    "order": {
                      "id": 1234
                      "lineitems": [
                      {
                        "sku": "com.xsolla.item_1",
                        "quantity": 1,
                        "price": {
                          "currency": "EUR",
                          "amount": 6.5
                          }
                      }
                      ]
                      }
                },
                "user": {
                    "ip": "127.0.0.1",
                    "phone": "18777976552",
                    "email": "email@example.com",
                    "id": "1234567",
                    "name": "John Smith",
                    "country": "US"
                },
                "transaction": {
                    "id": 1,
                    "external_id": 1,
                    "payment_date": "2014-09-24T20:38:16+04:00",
                    "payment_method": 1,
                    "payment_method_name": "PayPal"
                    "payment_method_order_id": 1234567890123456789,
                    "dry_run": 1,
                    "agreement": 1
                },
                "payment_details": {
                    "payment": {
                        "currency": "USD",
                        "amount": 230
                    },
                    "vat": {
                        "currency": "USD",
                        "amount": 0,
                        "percent": 20
                    },
                    "sales_tax": {
                        "currency": "USD",
                        "amount": 0,
                        "percent": 0
                    },
                    "direct_wht": {
                        "currency": "USD",
                        "amount": 0,
                        "percent": 0
                    },
                    "payout_currency_rate": "1",
                    "country_wht": {
                        "currency": "USD",
                        "amount": 2,
                        "percent": 10
                    },
                    "user_acquisition_fee": {
                        "currency": "USD",
                        "amount": 2,
                        "percent": 1
                    },
                    "payout": {
                        "currency": "USD",
                        "amount": 200
                    },
                    "xsolla_fee": {
                        "currency": "USD",
                        "amount": 10
                    },
                    "payment_method_fee": {
                        "currency": "USD",
                        "amount": 20
                    },
                    "repatriation_commission": {
                        "currency": "USD",
                        "amount": 10
                    }
                },
                "custom_parameters": {
                    "parameter1": "value1",
                    "parameter2": "value2"
                }
            }
  payment-declined:
    post:
      description: "Если транзакция была отклонена платежной системой, Xsolla присылает детали \nтранзакции в вебхуке с типом `ps_declined` на URL-адрес вебхука.\_Вебхук \nотправляется на этапе авторизации или обработки платежа. Вебхук \n[payment](/ru/webhooks/operation/payment/)\\ [order_paid](/ru/webhooks/operation/successful-order-payment/) при этом отправлен не будет.\n\nТипичные причины отклонения транзакции платежной системой:\n\n* Авторизация карты не удалась (пример: платежная система не смогла завершить \n  процесс авторизации из-за технического сбоя или отсутствия ответа от банка) или \n  была отклонена (пример: банк ответил, но отказал в операции из-за недостатка \n  средств или неверных данных карты).\n* Проверка 3-D Secure не удалась, не была завершена или истекло время ожидания \n  подтверждения пользователем.\n* Процессор или банк-эквайер временно недоступен или возвращает жесткий отказ \n  (hard decline) из-за необратимой ошибки: например, закрытого счета или \n  недействительного номера карты. Повторная попытка без устранения причины ошибки \n  не приведет к успешному результату.\n\nСледует отличать:\n\n* От отклонений транзакции со стороны антифрод-системы, информация о которых \n  передается в вебхуке \n  [afs_reject](https://developers.xsolla.com/ru/webhooks/operation/afs-rejected-transaction/).\n* Возврата и частичного возврата платежа после успешной оплаты, информация о \n  котором передается в вебхуках \n  [refund](https://developers.xsolla.com/ru/webhooks/operation/refund/) и \n  [partial_refund](https://developers.xsolla.com/ru/webhooks/operation/partial-refund/).\n\n<div class=\"note\">\n<p><strong>Примечание</strong></p>\n<p>Чтобы получать вебхук <code>ps_declined</code>, обратитесь к персональному менеджеру проекта или напишите на <a href=\"mailto:csm@xsolla.com\">csm@xsolla.com</a>.</p>\n</div>\n"
      operationId: payment-declined
      requestBody:
        content:
          application/json:
            schema:
              properties:
                notification_type:
                  $ref: '#/components/schemas/notification_type'
                refund_details:
                  description: Объект с финансовыми данными рефанда.
                  properties:
                    author:
                      description: >
                        Инициатор возврата платежа. Значение поля передается
                        согласно таблице:


                        <table>
                            <thead>
                            <tr>
                                <th>Инициатор возврата</th>
                                <th>Значение поля</th>
                            </tr>
                            </thead>
                            <tbody>
                            <tr>
                                <td>Игра (через API).</td>
                                <td>API</td>
                            </tr>
                            <tr>
                                <td>Пользователь Личного кабинета (автоматический возврат).</td>
                                <td>Email-адрес пользователя</td>
                            </tr>
                            <tr>
                                <td>Пользователь Личного кабинета (при участии службы поддержки Xsolla).</td>
                                <td>support@xsolla.com</td>
                            </tr>
                            <tr>
                                <td>Xsolla (при участии службы поддержки Xsolla).</td>
                                <td>support@xsolla.com</td>
                            </tr>
                            </tbody>
                        </table>
                      type: string
                    code:
                      description: ID кода.
                      type: integer
                    reason:
                      description: Причина отмены.
                      type: string
                  type: object
                settings:
                  description: Объект, содержащий настройки проекта.
                  properties:
                    merchant_id:
                      $ref: '#/components/schemas/settings.merchant_id'
                    project_id:
                      $ref: '#/components/schemas/settings.project_id'
                  type: object
                transaction:
                  description: >-
                    Объект с информацией о транзакции, связанной с этой
                    операцией.
                  properties:
                    dry_run:
                      description: >-
                        Признак тестовой транзакции. Значение параметра равно 1
                        для тестового платежа, для реального платежа параметр не
                        передается.
                      type: integer
                    external_id:
                      description: Внешний ID транзакции.
                      type: string
                    id:
                      description: ID транзакции.
                      type: integer
                    payment_method:
                      description: ID способа оплаты.
                      type: integer
                  type: object
                user:
                  description: Объект с информацией о пользователе.
                  properties:
                    country:
                      $ref: '#/components/schemas/user.country'
                    email:
                      $ref: '#/components/schemas/user.email'
                    id:
                      $ref: '#/components/schemas/user.id'
                    ip:
                      $ref: '#/components/schemas/user.ip'
                    name:
                      $ref: '#/components/schemas/user.name'
                  required:
                    - id
                  type: object
              required:
                - notification_type
                - transaction
      responses:
        '204':
          $ref: '#/components/responses/204'
        '400':
          $ref: '#/components/responses/400-payment'
        '500':
          $ref: '#/components/responses/500'
      summary: Отмена платежа
      tags:
        - payments
      x-codeSamples:
        - label: CURL
          lang: cURL
          source: >-
            curl -v 'https://your.hostname/your/uri' \

            -X POST \

            -H 'Accept: application/json' \

            -H 'Content-Type: application/json' \

            -H 'Authorization: Signature
            80543ba63e1e50cf05f15150fe75e7245da9a898' \

            -d '{
              "notification_type": "ps_declined",
              "settings": {
                "project_id": "18404",
                "merchant_id": "2340"
              },
              "user": {
                "ip": "127.0.0.1",
                "email": "email@example.com",
                "id": "1234567",
                "country": "US"
              },
              "transaction": {
                "id": "1",
                "dry_run": "1",
                "payment_method": "1"
              },
              "refund_details": {
                "author": "support@xsolla.com",
                "code": "8",
                "reason": "Cancellation by the PS request",
                "reason_detail": "Insufficient funds"
              }
            }'
        - label: PHP
          lang: PHP
          source: |-
            <?php

            $request = array(
              'notification_type' => 'ps_declined',
              'settings' => array(
                'project_id' => '18404',
                'merchant_id' => '2340',
              ),
              'user' => array(
                'ip' => '127.0.0.1',
                'email' => 'email@example.com',
                'id' => '1234567',
                'country' => 'US',
              ),
              'transaction' => array(
                'id' => '1',
                'dry_run' => '1',
                'payment_method' => '1',
              ),
              'refund_details' => array(
                'author' => 'support@xsolla.com',
                'code' => '8',
                'reason' => 'Cancellation by the PS request',
                'reason_detail' => 'Insufficient funds',
              ),
            );
        - label: HTTP
          lang: HTTP
          source: |-
            POST /your_uri HTTP/1.1
            host: your.host
            accept: application/json
            content-type: application/json
            content-length: 338
            authorization: Signature 80543ba63e1e50cf05f15150fe75e7245da9a898

            {
              "notification_type": "ps_declined",
              "settings": {
                "project_id": "18404",
                "merchant_id": "2340"
              },
              "user": {
                "ip": "127.0.0.1",
                "email": "email@example.com",
                "id": "1234567",
                "country": "US"
              },
              "transaction": {
                "id": "1",
                "dry_run": "1",
                "payment_method": "1"
              },
              "refund_details": {
                "author": "support@xsolla.com",
                "code": "8",
                "reason": "Cancellation by the PS request",
                "reason_detail": "Insufficient funds"
              }
            }
  personalized-partner-catalog:
    post:
      description: "Xsolla при взаимодействии пользователя с магазином отправит вебхук \n<code>partner_side_catalog</code>, который содержит параметры пользователя и \nпроекта, на URL-адрес вебхука.\n\nВ ответе вам следует вернуть список <code>item_id</code>\_или артикулов \nпредметов, которые доступны пользователю. При этом вы также можете передать \nинформацию о том, что конкретный пользователь может купить определенный товар \nзаданное количество раз. Эта возможность позволяет регулировать количество и \nвид товаров, которые пользователь может добавить в корзину и купить.\n\nРекомендуется обеспечить время обработки вебхука\_\n<code>partner_side_catalog</code> менее 3 секунд.\n"
      operationId: personalized-partner-catalog
      requestBody:
        content:
          application/json:
            schema:
              properties:
                user:
                  description: Объект с информацией о пользователе.
                  properties:
                    country:
                      $ref: '#/components/schemas/user.country'
                    currency:
                      $ref: '#/components/schemas/currency'
                    locale:
                      $ref: '#/components/schemas/locale'
                    user_id:
                      description: >-
                        ID пользователя. Если пользователь неавторизован,
                        отправляется значение `null`.
                      type: string
                  required:
                    - user_id
                  type: object
              required:
                - user
      responses:
        '200':
          content:
            application/json:
              example:
                - date_from: '2024-08-11T23:59:59+08:00'
                  date_until: '2024-08-12T23:59:59+08:00'
                  quantity: 0
                  sku: com.xsolla.boots_1
                - date_from: '2024-08-11T23:59:59+08:00'
                  date_until: '2024-08-12T23:59:59+08:00'
                  quantity: null
                  sku: com.xsolla.sword_1
                - quantity: 1
                  sku: com.xsolla.helmet_1
                - content:
                    - description: Description of custom content item
                      image_url: https://example.com/content_image.png
                      name: Custom content item
                      quantity: 5
                  description: Custom description
                  image_url: https://example.com/image.png
                  json_attributes:
                    purchased: 0
                    type: lootbox
                  name: Custom name
                  quantity: null
                  sku: com.xsolla.custom_item_1
                - available: 7
                  sku: com.xsolla.limited_item_1
                  total: 10
              schema:
                items:
                  anyOf:
                    - oneOf:
                        - properties:
                            quantity:
                              $ref: '#/components/schemas/quantity'
                          title: quantity
                        - properties:
                            available:
                              $ref: '#/components/schemas/available'
                            total:
                              $ref: '#/components/schemas/total'
                          title: available
                      properties:
                        content:
                          $ref: '#/components/schemas/bundle_content'
                        date_from:
                          $ref: '#/components/schemas/date_from'
                        date_until:
                          $ref: '#/components/schemas/date_until'
                        description:
                          $ref: '#/components/schemas/description'
                        image_url:
                          $ref: '#/components/schemas/image_url'
                        json_attributes:
                          $ref: '#/components/schemas/json_attributes'
                        name:
                          $ref: '#/components/schemas/name'
                        sku:
                          $ref: '#/components/schemas/sku'
                      required:
                        - sku
                      title: sku
                    - oneOf:
                        - properties:
                            quantity:
                              $ref: '#/components/schemas/quantity'
                          title: quantity
                        - properties:
                            available:
                              $ref: '#/components/schemas/available'
                            total:
                              $ref: '#/components/schemas/total'
                          title: available
                      properties:
                        content:
                          $ref: '#/components/schemas/bundle_content'
                        date_from:
                          $ref: '#/components/schemas/date_from'
                        date_until:
                          $ref: '#/components/schemas/date_until'
                        description:
                          $ref: '#/components/schemas/description'
                        image_url:
                          $ref: '#/components/schemas/image_url'
                        item_id:
                          $ref: '#/components/schemas/item_id'
                        json_attributes:
                          $ref: '#/components/schemas/json_attributes'
                        name:
                          $ref: '#/components/schemas/name'
                      required:
                        - item_id
                      title: item_id
                  type: object
                type: array
          description: >-
            Верните список товаров, которые доступны пользователю, а также
            информацию о том, что конкретный пользователь может купить
            определенный товар заданное количество раз.
        '404':
          description: Пользователь не найден.
      summary: Персонализация каталога на стороне партнера
      tags:
        - personalization
      x-codeSamples:
        - label: CURL
          lang: cURL
          source: >-
            curl -v 'https://your.hostname/your/uri' \

            -X POST \

            -H 'accept: application/json' \

            -H 'content-type: application/json' \

            -H 'authorization: Signature
            d90d319f05df7b0f86d2485f48e7079f0f752523' \

            -d '{
                    "notification_type": "partner_side_catalog",
                    "user": {
                        "user_id": "12345",
                        "country": "US"
                    }
                }'
        - label: HTTP
          lang: HTTP
          source: |-
            POST /your/uri HTTP/1.1
            host:           your.hostname
            accept:         application/json
            content-type:   application/json
            authorization:  Signature d90d319f05df7b0f86d2485f48e7079f0f752523

            {
                "notification_type": "partner_side_catalog",
                "user": {
                  "user_id": "12345",
                  "country": "US"
                }
            }
  refund:
    post:
      description: >
        При отмене платежа Xsolla отправляет детали отмененной транзакции в
        вебхуке с 

        типом `refund` на URL-адрес вебхука.


        Механизм повторной отправки вебхуков зависит от инициатора возврата
        платежа:

        * Если возврат был инициирован на вашей стороне, повторная отправка не 
          выполняется. Платеж возвращается пользователю вне зависимости от полученного 
          ответа на вебхук.
        * Если возврат был инициирован третьей стороной, например платежной
        системой или 
          службой поддержки Xsolla, и на вебхук был получен ответ с кодом `5xx`, вебхуки 
          отправляются повторно. Максимально выполняется 12 попыток с увеличивающимся 
          интервалом в течение 48 часов с момента первой попытки.

        Подробная информация о процессе возврата платежа приведена в
        [инструкции](/ru/doc/pay-station/features/refund/).


        <div class="notice">

        <p><strong>Внимание</strong></p>

        <p>При одновременном выполнении следующих условий платеж все равно будет
        возвращен пользователю:<ul><li>Инициатор возврата — Xsolla.</li><li>На
        вебхук получен ответ с кодом <code>4xx</code>, или после всех повторных
        попыток ответ не был получен, или был получен код
        <code>5xx</code>.</li></ul></p>

        </div>


        После сохранения URL-адреса вебхука в <a 

        href="https://publisher.xsolla.com/0/projects/0/edit/webhooks/store">Личном 

        кабинете</a> вы можете настроить получение дополнительной информации в
        вебхуке.


        <div class="note">

        <p><strong>Примечание</strong></p>

        <p>Если вы зарегистрировались в Личном кабинете до 22 января 2025 года
        (включительно), вы можете найти переключатели в проекте в разделе <a
        href="https://publisher.xsolla.com/0/projects/0/edit/webhooks/payments">Настройки
        &gt; Вебхуки &gt; Тестирование &gt; Payments &gt; Расширенные
        настройки</a>.</p>

        </div>


        <table>

        <thead>
            <tr>
                <th>Переключатель</th>
                <th>Описание</th>
            </tr>
        </thead>

        <tbody>
            <tr>
                <td>Показывать информацию о транзакциях сохраненными способами оплаты</td>
                <td><p>В вебхуке будет передаваться информация в кастомных параметрах:</p><ul><li><code>saved_payment_method</code>:<ul><li><code>0</code> — сохраненный способ оплаты не используется;</li><li><code>1</code> — способ оплаты был сохранен при совершении текущей транзакции;</li><li><code>2</code> — используется ранее сохраненный способ оплаты.</li></ul></li><li><code>payment_type</code>:<ul><li><code>1</code> — единоразовый платеж;</li><li><code>2</code> — рекуррентный платеж.</li></ul></li></ul></td>
            </tr>
        </tbody>

        </table>


        Коды отмены:


        <table>
            <thead>
            <tr>
                <th>Код</th>
                <th>Причина отмены</th>
                <th>Описание</th>
            </tr>
            </thead>
            <tbody>
            <tr>
                <td>1</td>
                <td>Cancellation by the user request / the game request</td>
                <td>Используется, если отмена произошла из Личного кабинета.</td>
            </tr>
            <tr>
                <td>2</td>
                <td>Chargeback</td>
                <td>Используется, если по транзакции был chargeback.</td>
            </tr>
            <tr>
                <td>3</td>
                <td>Integration error</td>
                <td>Используется в случае проблем с интеграцией между Xsolla и игрой.<br /><b>В этом случае мы не рекомендуем заносить пользователя в черный список.</b></td>
            </tr>
            <tr>
                <td>4</td>
                <td>Potential fraud</td>
                <td>Используется в случае потенциального фрода.<br /><b>В этом случае мы рекомендуем добавить пользователя в черный список.</b></td>
            </tr>
            <tr>
                <td>5</td>
                <td>Test payment</td>
                <td>Используется в случае совершения тестового платежа с последующей отменой.<br /><b>В этом случае мы не рекомендуем заносить пользователя в черный список.</b></td>
            </tr>
            <tr>
                <td>6</td>
                <td>User invoice expired</td>
                <td>Используется, если был выбран способ оплаты с системой отложенного платежа.</td>
            </tr>
            <tr>
                <td>7</td>
                <td>Fraud notification from PS</td>
                <td>Используется, если платежная система не произвела выплату по транзакции из-за потенциального фрода.<br /><b>В этом случае мы рекомендуем добавить пользователя в черный список.</b></td>
            </tr>
            <tr>
                <td>8</td>
                <td>Cancellation by the PS request</td>
                <td>Используется, когда платежная система запросила отмену транзакции.<br /><b>В этом случае мы не рекомендуем заносить пользователя в черный список.</b></td>
            </tr>
            <tr>
                <td>9</td>
                <td>Cancellation by the user request</td>
                <td>Используется, если игра или заказ не удовлетворяют требованиям пользователя по каким-либо причинам.<br /><b>В этом случае мы не рекомендуем заносить пользователя в черный список.</b></td>
            </tr>
            <tr>
                <td>10</td>
                <td>Cancellation by the game request</td>
                <td>Используется, когда игра просит отменить транзакцию.<br /><b>В этом случае мы не рекомендуем заносить пользователя в черный список.</b></td>
            </tr>
            <tr>
                <td>11</td>
                <td>Account holder called to report fraud</td>
                <td>Используется, когда владелец аккаунта сообщил, что не совершал данный платеж.</td>
            </tr>
            <tr>
                <td>12</td>
                <td>Friendly fraud</td>
                <td>Используется, если нам сообщили о friendly fraud.</td>
            </tr>
            <tr>
                <td>13</td>
                <td>Duplicate</td>
                <td>Используется, если произошла попытка повторной оплаты по счету.</td>
            </tr>
            </tbody>
        </table>
      operationId: refund
      requestBody:
        content:
          application/json:
            schema:
              properties:
                custom_parameters:
                  description: Ваши дополнительные параметры.
                  type: object
                notification_type:
                  $ref: '#/components/schemas/notification_type'
                payment_details:
                  description: Объект с финансовыми данными платежа.
                  properties:
                    country_wht:
                      description: >-
                        Объект с данными о налоге с дохода, который удерживается
                        с международных транзакций в некоторых странах.
                      properties:
                        amount:
                          description: Сумма.
                          format: float
                          type: number
                        currency:
                          $ref: '#/components/schemas/currency'
                        percent:
                          description: Ставка налога, %.
                          format: float
                          type: number
                      type: object
                    direct_wht:
                      description: Налог, удерживаемый у источника выплаты.
                      properties:
                        amount:
                          description: Сумма.
                          format: float
                          type: number
                        currency:
                          $ref: '#/components/schemas/currency'
                        percent:
                          description: Процент налога, удерживаемого у источника выплаты.
                          format: float
                          type: number
                      type: object
                    payment:
                      description: Объект с данными о сумме, которую оплатил пользователь.
                      properties:
                        amount:
                          description: Сумма.
                          format: float
                          type: number
                        currency:
                          $ref: '#/components/schemas/currency'
                      type: object
                    payment_method_fee:
                      description: Размер комиссии платежной системы.
                      properties:
                        amount:
                          description: Сумма.
                          format: float
                          type: number
                        currency:
                          $ref: '#/components/schemas/currency'
                      type: object
                    payment_method_sum:
                      description: >-
                        Объект с данными о сумме, которая была оплачена из
                        платежной системы.
                      properties:
                        amount:
                          description: Сумма.
                          format: float
                          type: number
                        currency:
                          $ref: '#/components/schemas/currency'
                      type: object
                    payout:
                      description: Объект с данными о сумме выплаты.
                      properties:
                        amount:
                          description: Сумма.
                          format: float
                          type: number
                        currency:
                          $ref: '#/components/schemas/currency'
                      type: object
                    payout_currency_rate:
                      description: Курс валюты платежа к валюте выплаты.
                      type: string
                    repatriation_commission:
                      description: >-
                        Объект с информацией о затратах на репатриацию,
                        возлагаемых на Xsolla третьими сторонами.
                      properties:
                        amount:
                          description: Сумма.
                          format: float
                          type: number
                        currency:
                          $ref: '#/components/schemas/currency'
                      type: object
                    sales_tax:
                      description: Размер налога (только для США и Канады).
                      properties:
                        amount:
                          description: Сумма.
                          format: float
                          type: number
                        currency:
                          $ref: '#/components/schemas/currency'
                        percent:
                          description: Процент налога.
                          format: float
                          type: number
                      type: object
                    user_acquisition_fee:
                      description: >-
                        Объект с данными о сумме вознаграждения каналов
                        привлечения трафика (аффилированные сети и инфлюенсеры).
                      properties:
                        amount:
                          description: Сумма.
                          format: float
                          type: number
                        currency:
                          $ref: '#/components/schemas/currency'
                        percent:
                          description: >-
                            Ставка вознаграждения за привлечение пользователей,
                            %.
                          format: float
                          type: number
                      type: object
                    vat:
                      description: Размер VAT (только для Евросоюза).
                      properties:
                        amount:
                          description: Сумма.
                          format: float
                          type: number
                        currency:
                          $ref: '#/components/schemas/currency'
                        percent:
                          description: Процент VAT.
                          format: float
                          type: number
                      type: object
                    xsolla_balance_sum:
                      description: >-
                        Объект с данными о сумме, которая была оплачена с
                        Xsolla-баланса.
                      properties:
                        amount:
                          description: Сумма.
                          format: float
                          type: number
                        currency:
                          $ref: '#/components/schemas/currency'
                      type: object
                    xsolla_fee:
                      description: Размер комиссии Xsolla.
                      properties:
                        amount:
                          description: Сумма.
                          format: float
                          type: number
                        currency:
                          $ref: '#/components/schemas/currency'
                      type: object
                  type: object
                purchase:
                  description: Объект с информацией о заказе.
                  properties:
                    checkout:
                      description: Объект с информацией о заказе.
                      properties:
                        amount:
                          description: Сумма заказа.
                          format: float
                          type: number
                        currency:
                          $ref: '#/components/schemas/currency'
                      type: object
                    subscription:
                      description: Объект с данными о подписке.
                      properties:
                        amount:
                          $ref: '#/components/schemas/amount-float'
                        currency:
                          $ref: '#/components/schemas/currency'
                        date_create:
                          $ref: '#/components/schemas/subscription.date_create'
                        plan_id:
                          $ref: '#/components/schemas/subscription.plan_id'
                        subscription_id:
                          $ref: '#/components/schemas/subscription.subscription_id'
                        tags:
                          $ref: '#/components/schemas/subscription.tags'
                      type: object
                    total:
                      description: Объект с данными об общей стоимости покупки.
                      properties:
                        amount:
                          description: Общая сумма покупки.
                          format: float
                          type: number
                        currency:
                          $ref: '#/components/schemas/currency'
                      type: object
                  required:
                    - total
                  type: object
                refund_details:
                  description: Объект с финансовыми данными рефанда.
                  properties:
                    author:
                      description: >
                        Инициатор возврата платежа. Значение поля передается
                        согласно таблице:


                        <table>
                            <thead>
                            <tr>
                                <th>Инициатор возврата</th>
                                <th>Значение поля</th>
                            </tr>
                            </thead>
                            <tbody>
                            <tr>
                                <td>Игра (через API).</td>
                                <td>API</td>
                            </tr>
                            <tr>
                                <td>Пользователь Личного кабинета (автоматический возврат).</td>
                                <td>Email-адрес пользователя</td>
                            </tr>
                            <tr>
                                <td>Пользователь Личного кабинета (при участии службы поддержки Xsolla).</td>
                                <td>support@xsolla.com</td>
                            </tr>
                            <tr>
                                <td>Xsolla (при участии службы поддержки Xsolla).</td>
                                <td>support@xsolla.com</td>
                            </tr>
                            </tbody>
                        </table>
                      type: string
                    code:
                      description: ID кода.
                      type: integer
                    reason:
                      description: Причина отмены.
                      type: string
                  type: object
                settings:
                  description: Объект, содержащий настройки проекта.
                  properties:
                    merchant_id:
                      $ref: '#/components/schemas/settings.merchant_id'
                    project_id:
                      $ref: '#/components/schemas/settings.project_id'
                  type: object
                transaction:
                  description: >-
                    Объект с информацией о транзакции, связанной с этой
                    операцией.
                  properties:
                    agreement:
                      description: ID соглашения.
                      type: integer
                    dry_run:
                      description: >-
                        Признак тестовой транзакции. Значение параметра равно 1
                        для тестового платежа, для реального платежа параметр не
                        передается.
                      type: integer
                    external_id:
                      description: Внешний ID транзакции.
                      type: string
                    id:
                      description: ID транзакции.
                      type: integer
                    payment_method_order_id:
                      description: ID платежа в платежной системе.
                      type: string
                  type: object
                user:
                  description: Объект с информацией о пользователе.
                  properties:
                    country:
                      $ref: '#/components/schemas/user.country'
                    email:
                      $ref: '#/components/schemas/user.email'
                    id:
                      $ref: '#/components/schemas/user.id'
                    ip:
                      $ref: '#/components/schemas/user.ip'
                    name:
                      $ref: '#/components/schemas/user.name'
                    phone:
                      $ref: '#/components/schemas/user.phone'
                    zip:
                      $ref: '#/components/schemas/user.zip'
                  required:
                    - id
                  type: object
              required:
                - notification_type
                - transaction
                - payment_details
      responses:
        '204':
          $ref: '#/components/responses/204'
        '400':
          $ref: '#/components/responses/400'
        '500':
          $ref: '#/components/responses/500'
      summary: Возврат платежа
      tags:
        - payments
      x-codeSamples:
        - label: CURL
          lang: cURL
          source: |-
            curl -v 'https://your.hostname/your/uri' \
            -X POST \
            -d '{
                    "notification_type": "refund",
                    "settings": {
                      "project_id": 18404,
                      "merchant_id": 2340
                    },
                    "purchase": {
                        "subscription": {
                            "plan_id": "b5dac9c8",
                            "subscription_id": "10",
                            "date_create": "2014-09-22T19:25:25+04:00",
                            "currency": "USD",
                            "amount": 9.99
                        },
                        "checkout": {
                            "currency": "USD",
                            "amount": 50
                        },
                        "total":{
                            "currency": "USD",
                            "amount": 200
                        }
                    },
                    "user": {
                        "ip": "127.0.0.1",
                        "phone": "18777976552",
                        "email": "email@example.com",
                        "id": "1234567",
                        "name": "John Smith",
                        "country": "US"
                    },
                    "transaction": {
                        "id": 1,
                        "external_id": 1,
                        "dry_run": 1,
                        "agreement": 1
                    },
                    "refund_details": {
                        "code": 4,
                        "reason": "Potential fraud"
                    },
                    "payment_details": {
                        "sales_tax": {
                            "currency": "USD",
                            "amount": 0
                        },
                        "direct_wht": {
                            "currency": "USD",
                            "amount": 0.70
                        },
                        "xsolla_fee": {
                            "currency": "USD",
                            "amount": "10"
                        },
                        "payout": {
                            "currency": "USD",
                            "amount": "200"
                        },
                        "payment_method_fee": {
                            "currency": "USD",
                            "amount": "20"
                        },
                        "payment": {
                            "currency": "USD",
                            "amount": "230"
                        },
                        "repatriation_commission": {
                            "currency": "USD",
                            "amount": 10
                        }
                    }
                }
            }'
        - label: PHP
          lang: PHP
          source: |-
            <?php

            $request = array(
                'notification_type' => 'refund',
                'settings' => array(
                  'project_id' => 18404,
                  'merchant_id' => 2340
                ),
                'purchase' => array(
                    'total' => array(
                        'currency' => 'USD',
                        'amount' => 9.99
                    )
                ),
                'user' => array(
                    'ip' => '127.0.0.1',
                    'phone' => '18777976552',
                    'email' => 'email@example.com',
                    'id' => '1234567',
                    'country' => 'US'
                ),
                'transaction' => array(
                    'id' => 87654321,
                    'payment_date' => '2014-09-23T19:25:25+04:00',
                    'payment_method' => 1380,
                    'dry_run' => 1
                ),
                'refund_details' => array(
                        'code' => 4,
                        'reason' => 'Potential fraud'
                ),
                'payment_details' => array(
                    'payment' => array(
                        'currency' => 'USD',
                        'amount' => 9.99
                    ),
                    'vat' => array(
                        'currency' => 'USD',
                        'amount' => 0
                    ),
                    'sales_tax' => array(
                        'currency' => 'USD',
                        'amount' => 0
                    ),
                    'direct_wht' => array(
                        'currency' => 'USD',
                        'amount' => 70
                    ),
                    'payout_currency_rate' => 1,
                    'payout' => array(
                        'currency' => 'USD',
                        'amount' => 9.49
                    ),
                    'xsolla_fee' => array(
                        'currency' => 'USD',
                        'amount' => 0.19
                    ),
                    'payment_method_fee' => array(
                        'currency' => 'USD',
                        'amount' => 0.31
                    ),
                    'repatriation_commission' => array(
                        'currency' => 'USD',
                        'amount' => 0.2
                    )
                )
            );
        - label: HTTP
          lang: HTTP
          source: |-
            POST /your_uri HTTP/1.1
            host: your.host
            accept: application/json
            content-type: application/json
            content-length: 1220
            authorization: Signature 31bd5924dd6cbc9cbe99d331c4a086a57291f9d7

            {
                "notification_type": "refund",
                "settings": {
                  "project_id": 18404,
                  "merchant_id": 2340
                },
                "purchase": {
                    "subscription": {
                        "plan_id": "b5dac9c8",
                        "subscription_id": "10",
                        "date_create": "2014-09-22T19:25:25+04:00",
                        "currency": "USD",
                        "amount": 9.99
                    },
                    "checkout": {
                        "currency": "USD",
                        "amount": 50
                    },
                    "total": {
                        "currency": "USD",
                        "amount": 200
                    }
                },
                "user": {
                    "ip": "127.0.0.1",
                    "phone": "18777976552",
                    "email": "email@example.com",
                    "id": "1234567",
                    "name": "John Smith",
                    "country": "US"
                },
                "transaction": {
                    "id": 1,
                    "external_id": 1,
                    "dry_run": 1,
                    "agreement": 1
                },
                "refund_details": {
                    "code": 4,
                    "reason": "Potential fraud"
                },
                "payment_details": {
                    "sales_tax": {
                        "currency": "USD",
                        "amount": 0
                    },
                    "direct_wht": {
                        "currency": "USD",
                        "amount": 0.70
                    },
                    "xsolla_fee": {
                        "currency": "USD",
                        "amount": "10"
                    },
                    "payout": {
                        "currency": "USD",
                        "amount": "200"
                    },
                    "payment_method_fee": {
                        "currency": "USD",
                        "amount": "20"
                    },
                    "payment": {
                        "currency": "USD",
                        "amount": "230"
                    },
                    "repatriation_commission": {
                        "currency": "USD",
                        "amount": 10
                    }
                }
            }
  remove-payment-account:
    post:
      description: >-
        Когда пользователь удаляет платежный аккаунт из сохраненных, Xsolla
        отправляет вебхук с типом `payment_account_remove` на URL-адрес вебхука.
        Чтобы получать вебхук, обратитесь к персональному менеджеру проекта или
        напишите на <a href="mailto:csm@xsolla.com">csm@xsolla.com</a>.
      operationId: remove-payment-account
      requestBody:
        content:
          application/json:
            schema:
              properties:
                notification_type:
                  $ref: '#/components/schemas/notification_type'
                payment_account:
                  description: Объект с информацией о платежном аккаунте.
                  properties:
                    id:
                      $ref: '#/components/schemas/payment_account.id'
                    name:
                      $ref: '#/components/schemas/payment_account.name'
                    payment_method:
                      $ref: '#/components/schemas/payment_account.payment_method'
                    type:
                      $ref: '#/components/schemas/payment_account.type'
                  required:
                    - id
                  type: object
                settings:
                  description: Объект, содержащий настройки проекта.
                  properties:
                    merchant_id:
                      $ref: '#/components/schemas/settings.merchant_id'
                    project_id:
                      $ref: '#/components/schemas/settings.project_id'
                  type: object
                user:
                  description: Объект с информацией о пользователе.
                  properties:
                    email:
                      $ref: '#/components/schemas/user.email'
                    id:
                      $ref: '#/components/schemas/user.id'
                    name:
                      $ref: '#/components/schemas/user.name'
                  required:
                    - id
                  type: object
              required:
                - notification_type
      responses:
        '204':
          $ref: '#/components/responses/204'
        '400':
          $ref: '#/components/responses/400'
        '500':
          $ref: '#/components/responses/500'
      summary: Удаление платежного аккаунта
      tags:
        - payments
      x-codeSamples:
        - label: CURL
          lang: cURL
          source: >-
            curl -v 'https://your.hostname/your/uri' \

            -X POST \

            -H 'accept: application/json' \

            -H 'content-type: application/json' \

            -H 'authorization: Signature
            d09695066c52c1b8bdae92f2d6eb59f5b5f89843' \

            -d '{
                "notification_type": "payment_account_remove",
                "settings": {
                  "project_id": 18404,
                  "merchant_id": 2340
                },
                "user": {
                    "email": "email@example.com",
                    "id": "1234567",
                    "name": "John Smith"
                },
                "payment_account": {
                    "id": "12345678",
                    "name": "email@example.com",
                    "payment_method": "24",
                    "type": "paypal"
                }
            }'
        - label: HTTP
          lang: HTTP
          source: |-
            POST /your/uri HTTP/1.1
            host:           your.hostname
            accept:         application/json
            content-length: 258
            content-type:   application/json
            authorization:  Signature d90d319f05df7b0f86d2485f48e7079f0f752523


            {
                "notification_type": "payment_account_remove",
                "settings": {
                  "project_id": 18404,
                  "merchant_id": 2340
                },
                "user": {
                    "email": "email@example.com",
                    "id": "1234567",
                    "name": "John Smith"
                },
                "payment_account": {
                    "id": "12345678",
                    "name": "email@example.com",
                    "payment_method": "24",
                    "type": "paypal"
                }
            }
  successful-order-payment:
    post:
      description: "Xsolla отправляет вебхук <code>order_paid</code> на указанный URL-адрес, когда \nпользователь успешно оплатил заказ.\n\nВ вебхуке <code>order_paid</code> содержится информация о купленных товарах, \nданные платежа и детали транзакции.\n\nВебхук <code>order_paid</code> не отправляется, если оплата неуспешна, например:\n* форма оплаты была открыта, но пользователь не оплатил заказ;\n* форма оплаты была открыта, но при оплате возникли ошибки.\n\nРекомендуется обеспечить время обработки вебхука\_<code>order_paid</code> менее \n3 секунд.\n\n<div class=\"notice\">\n<p><strong>Внимание</strong></p>\n<p>Набор полей, отправляемых в вебхуке, зависит от настроек, которые:<ul><li>вы установили в Личном кабинете в разделе <a href=\"https://publisher.xsolla.com/0/projects/0/edit/webhooks/store\">Настройки проекта &gt; Вебхуки &gt; Расширенные настройки</a>;</li><li>были заданы на стороне Xsolla.</li></ul></p><p>При возникновении вопросов обратитесь к персональному менеджеру проекта или напишите на <a href=\"mailto:csm@xsolla.com\">csm@xsolla.com</a>.</p>\n</div>\n\nОжидаемые коды ответов описаны в разделе <b>Responses</b>. Вы можете \nиспользовать другие коды ответов. В зависимости от кода ответа и подключения \nфункциональности автоматического возврата платежа логика обработки вебхука на \nстороне Xsolla следующая:\n\n<table>\n    <thead>\n    <tr>\n        <th>Код ответа</th>\n        <th>Автоматический возврат платежа не включен (по умолчанию)</th>\n        <th>Автоматический возврат платежа включен</th>\n    </tr>\n    </thead>\n    <tbody>\n    <tr>\n        <td><code>400</code>, <code>401</code>, <code>402</code>, <code>403</code>, <code>404</code>, <code>409</code>, <code>422</code>, <code>415</code></td>\n        <td>Нет действий</td>\n        <td>Автоматический возврат средств пользователю.</td>\n    </tr>\n    <tr>\n        <td><code>200</code>, <code>201</code>, <code>204</code></td>\n        <td>Нет действий</td>\n        <td>Нет действий</td>\n    </tr>\n    <tr>\n        <td>Другой код или отсутствие ответа на вебхук</td>\n        <td>Многократная отправка вебхуков через заданный временной промежуток: 2 попытки с шагом 5 минут, 7 попыток с шагом 15 минут, 10 попыток с шагом 60 минут.</td>\n        <td>Многократная отправка вебхуков через заданный временной промежуток: 2 попытки с шагом 5 минут, 7 попыток с шагом 15 минут, 10 попыток с шагом 60 минут. Если все вебхуки отправлены, а успешный ответ не получен, осуществляется автоматический возврат средств пользователю.</td>\n    </tr>\n    </tbody>\n</table>\n\nДля подключения функциональности автоматических возвратов обратитесь к \nперсональному менеджеру проекта или напишите на csm@xsolla.com\n"
      operationId: successful-order-payment
      requestBody:
        content:
          application/json:
            schema:
              properties:
                billing:
                  description: Детали платежа и транзакции.
                  properties:
                    notification_type:
                      $ref: '#/components/schemas/notification_type'
                    payment_details:
                      description: Объект с финансовыми данными платежа.
                      properties:
                        country_wht:
                          description: >-
                            Объект с данными о налоге с дохода, который
                            удерживается с международных транзакций в некоторых
                            странах.
                          properties:
                            amount:
                              description: Сумма.
                              format: float
                              type: number
                            currency:
                              $ref: '#/components/schemas/currency'
                            percent:
                              description: Ставка налога, %.
                              format: float
                              type: number
                          type: object
                        direct_wht:
                          description: Налог, удерживаемый у источника выплаты.
                          properties:
                            amount:
                              description: Сумма.
                              format: float
                              type: number
                            currency:
                              $ref: '#/components/schemas/currency'
                            percent:
                              description: >-
                                Процент налога, удерживаемого у источника
                                выплаты.
                              format: float
                              type: number
                          type: object
                        payment:
                          description: >-
                            Объект с данными о сумме, которую оплатил
                            пользователь.
                          properties:
                            amount:
                              description: Сумма.
                              format: float
                              type: number
                            currency:
                              $ref: '#/components/schemas/currency'
                          type: object
                        payment_method_fee:
                          description: Размер комиссии платежной системы.
                          properties:
                            amount:
                              description: Сумма.
                              format: float
                              type: number
                            currency:
                              $ref: '#/components/schemas/currency'
                          type: object
                        payment_method_sum:
                          description: >-
                            Объект с данными о сумме, которая была оплачена из
                            платежной системы.
                          properties:
                            amount:
                              description: Сумма.
                              format: float
                              type: number
                            currency:
                              $ref: '#/components/schemas/currency'
                          type: object
                        payout:
                          description: Объект с данными о сумме выплаты.
                          properties:
                            amount:
                              description: Сумма.
                              format: float
                              type: number
                            currency:
                              $ref: '#/components/schemas/currency'
                          type: object
                        payout_currency_rate:
                          description: Курс валюты платежа к валюте выплаты.
                          type: string
                        repatriation_commission:
                          description: >-
                            Объект с информацией о затратах на репатриацию,
                            возлагаемых на Xsolla третьими сторонами.
                          properties:
                            amount:
                              description: Сумма.
                              format: float
                              type: number
                            currency:
                              $ref: '#/components/schemas/currency'
                          type: object
                        sales_tax:
                          description: Размер налога (только для США и Канады).
                          properties:
                            amount:
                              description: Сумма.
                              format: float
                              type: number
                            currency:
                              $ref: '#/components/schemas/currency'
                            percent:
                              description: Процент налога.
                              format: float
                              type: number
                          type: object
                        user_acquisition_fee:
                          description: >-
                            Объект с данными о сумме вознаграждения каналов
                            привлечения трафика (аффилированные сети и
                            инфлюенсеры).
                          properties:
                            amount:
                              description: Сумма.
                              format: float
                              type: number
                            currency:
                              $ref: '#/components/schemas/currency'
                            percent:
                              description: >-
                                Ставка вознаграждения за привлечение
                                пользователей, %.
                              format: float
                              type: number
                          type: object
                        vat:
                          description: Размер VAT (только для Евросоюза).
                          properties:
                            amount:
                              description: Сумма.
                              format: float
                              type: number
                            currency:
                              $ref: '#/components/schemas/currency'
                            percent:
                              description: Процент VAT.
                              format: float
                              type: number
                          type: object
                        xsolla_balance_sum:
                          description: >-
                            Объект с данными о сумме, которая была оплачена с
                            Xsolla-баланса.
                          properties:
                            amount:
                              description: Сумма.
                              format: float
                              type: number
                            currency:
                              $ref: '#/components/schemas/currency'
                          type: object
                        xsolla_fee:
                          description: Размер комиссии Xsolla.
                          properties:
                            amount:
                              description: Сумма.
                              format: float
                              type: number
                            currency:
                              $ref: '#/components/schemas/currency'
                          type: object
                      type: object
                    purchase:
                      description: Объект с информацией о заказе.
                      properties:
                        coupon:
                          description: >-
                            Объект с информацией о купоне (если при создании
                            подписки был использован купон).
                          properties:
                            campaign_code:
                              description: Код кампании купонов.
                              type: string
                            coupon_code:
                              description: Код купона.
                              type: string
                          type: object
                        gift:
                          description: Объект с информацией о подарке.
                          properties:
                            giver_id:
                              description: ID дарителя.
                              type: string
                            hide_giver_from_receiver:
                              description: Флаг, показывать ли дарителя получателю подарка.
                              type: string
                            message:
                              description: Сообщение от дарителя.
                              type: string
                            receiver_email:
                              description: Email получателя подарка.
                              type: string
                            receiver_id:
                              description: ID получателя подарка.
                              type: string
                          type: object
                        promotions:
                          description: >-
                            Массив с данными акций, которые действуют на данную
                            покупку.
                          items:
                            properties:
                              id:
                                description: ID акции.
                                type: integer
                              technical_name:
                                description: Техническое название акции.
                                type: string
                            type: object
                          type: array
                        subscription:
                          description: Объект с данными о подписке.
                          properties:
                            amount:
                              $ref: '#/components/schemas/amount-float'
                            currency:
                              $ref: '#/components/schemas/currency'
                            date_create:
                              $ref: '#/components/schemas/subscription.date_create'
                            date_next_charge:
                              description: >-
                                Дата следующего списания. Дата и время согласно
                                стандарту [ISO
                                8601](https://en.wikipedia.org/wiki/ISO_8601).
                              type: string
                            plan_id:
                              $ref: '#/components/schemas/subscription.plan_id'
                            product_id:
                              description: ID продукта (если был отправлен в токене).
                              type: string
                            subscription_id:
                              $ref: >-
                                #/components/schemas/subscription.subscription_id
                            tags:
                              $ref: '#/components/schemas/subscription.tags'
                          type: object
                        total:
                          description: Объект с данными об общей стоимости покупки.
                          properties:
                            amount:
                              description: Общая сумма покупки.
                              format: float
                              type: number
                            currency:
                              $ref: '#/components/schemas/currency'
                          type: object
                      required:
                        - total
                      type: object
                    settings:
                      description: Объект, содержащий настройки проекта.
                      properties:
                        merchant_id:
                          $ref: '#/components/schemas/settings.merchant_id'
                        project_id:
                          $ref: '#/components/schemas/settings.project_id'
                      type: object
                    transaction:
                      description: >-
                        Объект с информацией о транзакции, связанной с этой
                        операцией.
                      properties:
                        agreement:
                          description: ID соглашения.
                          type: integer
                        dry_run:
                          description: >-
                            Признак тестовой транзакции. Значение параметра
                            равно 1 для тестового платежа, для реального платежа
                            параметр не передается.
                          type: integer
                        external_id:
                          $ref: '#/components/schemas/external-id'
                        id:
                          description: ID транзакции.
                          type: integer
                        payment_date:
                          description: Дата платежа.
                          type: string
                        payment_method:
                          description: ID способа оплаты.
                          type: integer
                        payment_method_name:
                          description: Название способа оплаты.
                          type: string
                        payment_method_order_id:
                          description: ID платежа в платежной системе.
                          type: string
                      type: object
                  required:
                    - notification_type
                    - transaction
                    - payment_details
                  type: object
                custom_parameters:
                  description: Дополнительная информация.
                  type: object
                items:
                  description: "Список предметов, которые купил пользователь.\n\nНабор передаваемых параметров в массиве зависит от версии вебхука. В версии 2 \nдополнительно передаются параметры `is_free`, `is_bonus` и `is_bundle_content`.\_\nДля переключения версии передайте ее номер в параметре `version` в методе \n[Обновление информации о настройках вебхуков](/ru/api/igs/operation/update-webhook/).\n"
                  items:
                    oneOf:
                      - properties:
                          amount:
                            description: >-
                              Общая стоимость товаров, рассчитанная c учетом их
                              количества.
                            type: string
                          custom_attributes:
                            description: >-
                              JSON-объект, содержащий атрибуты товара и их
                              значения.
                            type: object
                          is_pre_order:
                            description: >-
                              Если передано значение `true`, товар является
                              предзаказом.
                            type: boolean
                          promotions:
                            $ref: '#/components/schemas/items.promotions'
                          quantity:
                            description: Количество товаров.
                            type: integer
                          sku:
                            $ref: '#/components/schemas/items.sku'
                          type:
                            $ref: '#/components/schemas/items.type'
                        required:
                          - sku
                          - type
                          - quantity
                          - amount
                          - promotions
                          - is_pre_order
                        title: version = 1
                        type: object
                      - properties:
                          amount:
                            description: >-
                              Общая стоимость товаров, рассчитанная c учетом их
                              количества.
                            type: string
                          custom_attributes:
                            description: >-
                              JSON-объект, содержащий атрибуты товара и их
                              значения.
                            type: object
                          is_bonus:
                            description: >-
                              Если передано значение `true`, товар является
                              бонусом.
                            type: boolean
                          is_bundle_content:
                            description: >-
                              Если передано значение `true`, товар является
                              частью бандла.
                            type: boolean
                          is_free:
                            description: >-
                              Если передано значение `true`, товар является
                              бесплатным.
                            type: boolean
                          is_pre_order:
                            description: >-
                              Если передано значение `true`, товар является
                              предзаказом.
                            type: boolean
                          promotions:
                            $ref: '#/components/schemas/items.promotions'
                          quantity:
                            description: Количество товаров.
                            type: integer
                          sku:
                            $ref: '#/components/schemas/items.sku'
                          type:
                            $ref: '#/components/schemas/items.type'
                        required:
                          - sku
                          - type
                          - quantity
                          - amount
                          - promotions
                          - is_pre_order
                          - is_free
                          - is_bonus
                          - is_bundle_content
                        title: version = 2
                        type: object
                  type: array
                notification_type:
                  $ref: '#/components/schemas/notification_type'
                order:
                  description: Информация о заказе.
                  properties:
                    amount:
                      description: Стоимость корзины с учетом выбранной валюты.
                      type: string
                    comment:
                      description: Комментарий пользователя к заказу.
                      nullable: true
                      type: string
                    coupons:
                      description: >-
                        Примененные купоны. Если купон не был применен, массив
                        не возвращается.
                      items:
                        properties:
                          code:
                            description: Код примененного купона.
                            type: string
                          external_id:
                            description: Внешний ID.
                            type: string
                        type: object
                      type: array
                    currency:
                      description: >-
                        Валюта заказа. Для виртуальной валюты используется
                        артикул, для реальной валюты используется трехбуквенное
                        обозначение согласно стандарту [ISO
                        4217](https://en.wikipedia.org/wiki/ISO_4217).
                      type: string
                    currency_type:
                      $ref: '#/components/schemas/currency-type'
                    id:
                      description: >-
                        Уникальный идентификатор заказа пользователя на стороне
                        Xsolla.
                      type: integer
                    invoice_id:
                      description: >-
                        ID счета для платежей за реальную валюту. Для платежей
                        за виртуальную валюту или для бесплатных товаров
                        передается значение `null`.
                      nullable: true
                      type: string
                    mode:
                      description: >-
                        Тип платежа. Значение `default` (по умолчанию)
                        используется для реальных платежей. Значение `sandbox`
                        используется для тестовых платежей.
                      enum:
                        - default
                        - sandbox
                      type: string
                    platform:
                      description: >-
                        Платформа платежа. Для платежей через Xsolla
                        используется значение `xsolla`. Для других платежей
                        используется значение, соответствующее названию
                        платформы публикации игры.
                      enum:
                        - xsolla
                        - playstation_network
                        - xbox_live
                        - pc_standalone
                        - nintendo_shop
                        - google_play
                        - app_store_ios
                        - android_standalone
                        - ios_standalone
                        - android_other
                        - ios_other
                        - pc_other
                      nullable: true
                      type: string
                    promocodes:
                      description: >-
                        Примененные промокоды. Если промокод не был применен,
                        массив не возвращается.
                      items:
                        properties:
                          code:
                            description: Код примененного промокода.
                            type: string
                          external_id:
                            description: Внешний ID.
                            type: string
                        type: object
                      type: array
                    promotions:
                      $ref: '#/components/schemas/order.promotions'
                    status:
                      description: Статус заказа.
                      type: string
                  required:
                    - id
                    - mode
                    - currency_type
                    - currency
                    - amount
                    - status
                    - platform
                    - comment
                    - invoice_id
                    - promotions
                  type: object
                user:
                  description: Информация о пользователе.
                  properties:
                    country:
                      $ref: '#/components/schemas/user.country'
                    email:
                      description: Email-адрес пользователя.
                      type: string
                    external_id:
                      description: ID пользователя.
                      type: string
                  required:
                    - external_id
                    - email
                  type: object
              required:
                - notification_type
                - items
                - order
                - user
                - transaction
                - payment_details
      responses:
        '200':
          description: Верните, чтобы сообщить об успешной обработке вехбука.
        '400':
          description: >-
            Верните в случае ошибки в предоставленной информации (например,
            обязательный параметр не передан, или авторизация не прошла).
      summary: Успешная оплата заказа (с деталями платежа и транзакции)
      tags:
        - combined-webhooks
      x-codeSamples:
        - label: CURL
          lang: cURL
          source: >-
            curl -v 'https://your.hostname/your/uri' \

            -X POST \

            -H 'accept: application/json' \

            -H 'content-type: application/json' \

            -H 'authorization: Signature
            d09695066c52c1b8bdae92f2d6eb59f5b5f89843' \

            -d '{
                "notification_type": "order_paid",
                "items": [
                  {
                    "sku": "com.xsolla.item_1",
                    "type": "virtual_good",
                    "is_pre_order": false,
                    "quantity": 3,
                    "amount": "1000",
                    "promotions": [
                      {
                        "amount_without_discount": "6000",
                        "amount_with_discount": "5000",
                        "sequence": 1
                      },
                      {
                        "amount_without_discount": "5000",
                        "amount_with_discount": "4000",
                        "sequence": 2
                      }
                    ],
                    "custom_attributes":
                      {
                        "purchased": 0,
                        "attr": "value"
                      }
                  },
                  {
                    "sku": "com.xsolla.item_new_1",
                    "type": "bundle",
                    "is_pre_order": false,
                    "quantity": 1,
                    "amount": "1000",
                    "promotions": []
                  },
                  {
                    "sku": "com.xsolla.gold_1",
                    "type": "virtual_currency",
                    "is_pre_order": false,
                    "quantity": 1500,
                    "amount": null,
                    "promotions": []
                  }
                ],
                "order": {
                  "id": 1,
                  "mode": "default",
                  "currency_type": "virtual",
                  "currency": "sku_currency",
                  "amount": "2000",
                  "status": "paid",
                  "platform": "xsolla",
                  "comment": null,
                  "invoice_id": "1",
                  "promotions": [
                    {
                      "amount_without_discount": "4000",
                      "amount_with_discount": "2000",
                      "sequence": 1
                    }
                  ],
                  "promocodes": [
                    {
                      "code": "promocode_some_code",
                      "external_id": "promocode_sku"
                    }
                  ],
                  "coupons": [
                    {
                      "code": "WINTER2021",
                      "external_id": "coupon_sku"
                    }
                  ]
                },
                "user": {
                  "external_id": "id_xsolla_login_1",
                  "email": "gc_user@xsolla.com",
                  "country": "US"
                },
                "billing": {
                  "notification_type": "payment",
                  "settings": {
                    "project_id": 18404,
                    "merchant_id": 2340
                  },
                  "purchase": {
                      "subscription": {
                          "plan_id": "b5dac9c8",
                          "subscription_id": "10",
                          "product_id": "Demo Product",
                          "date_create": "2014-09-22T19:25:25+04:00",
                          "date_next_charge": "2014-10-22T19:25:25+04:00",
                          "currency": "USD",
                          "amount": 9.99
                      },
                      "total": {
                          "currency": "USD",
                          "amount": 200
                      },
                      "promotions": [{
                          "technical_name": "Demo Promotion",
                          "id": 853
                      }],
                      "coupon": {
                          "coupon_code": "ICvj45S4FUOyy",
                          "campaign_code": "1507"
                      }
                    },
                  "transaction": {
                      "id": 1,
                      "external_id": 1,
                      "payment_date": "2014-09-24T20:38:16+04:00",
                      "payment_method": 1,
                      "payment_method_name": "PayPal",
                      "payment_method_order_id": 1234567890123456789,
                      "dry_run": 1,
                      "agreement": 1
                  },
                  "payment_details": {
                      "payment": {
                          "currency": "USD",
                          "amount": 230
                      },
                      "vat": {
                          "currency": "USD",
                          "amount": 0,
                          "percent": 20
                      },
                      "sales_tax": {
                          "currency": "USD",
                          "amount": 0,
                          "percent": 0
                      },
                      "direct_wht": {
                          "currency": "USD",
                          "amount": 0,
                          "percent": 0
                      },
                      "payout_currency_rate": "1",
                      "payout": {
                          "currency": "USD",
                          "amount": 200
                      },
                      "country_wht": {
                          "currency": "USD",
                          "amount": 2,
                          "percent": 10
                      },
                      "user_acquisition_fee": {
                          "currency": "USD",
                          "amount": 2,
                          "percent": 1
                      },
                      "xsolla_fee": {
                          "currency": "USD",
                          "amount": 10
                      },
                      "payment_method_fee": {
                          "currency": "USD",
                          "amount": 20
                      },
                      "repatriation_commission": {
                          "currency": "USD",
                          "amount": 10
                      }
                  }
                }
             ,
              "custom_parameters": {
                "parameter1": "value1",
                "parameter2": "value2"
              }
            }
        - label: HTTP
          lang: HTTP
          source: |-
            POST /your/uri HTTP/1.1
            host:           your.hostname
            accept:         application/json
            content-length: 258
            content-type:   application/json
            authorization:  Signature d90d319f05df7b0f86d2485f48e7079f0f752523


            {
                "notification_type": "order_paid",
                "items": [
                  {
                    "sku": "com.xsolla.item_1",
                    "type": "virtual_good",
                    "is_pre_order": false,
                    "quantity": 3,
                    "amount": "1000",
                    "promotions": [
                      {
                        "amount_without_discount": "6000",
                        "amount_with_discount": "5000",
                        "sequence": 1
                      },
                      {
                        "amount_without_discount": "5000",
                        "amount_with_discount": "4000",
                        "sequence": 2
                      }
                    ],
                    "custom_attributes":
                      {
                        "purchased": 0,
                        "attr": "value"
                      }
                  },
                  {
                    "sku": "com.xsolla.item_new_1",
                    "type": "bundle",
                    "is_pre_order": false,
                    "quantity": 1,
                    "amount": "1000",
                    "promotions": []
                  },
                  {
                    "sku": "com.xsolla.gold_1",
                    "type": "virtual_currency",
                    "is_pre_order": false,
                    "quantity": 1500,
                    "amount": null,
                    "promotions": []
                  }
                ],
                "order": {
                  "id": 1,
                  "mode": "default",
                  "currency_type": "virtual",
                  "currency": "sku_currency",
                  "amount": "2000",
                  "status": "paid",
                  "platform": "xsolla",
                  "comment": null,
                  "invoice_id": "1",
                  "promotions": [
                    {
                      "amount_without_discount": "4000",
                      "amount_with_discount": "2000",
                      "sequence": 1
                    }
                  ],
                  "promocodes": [
                    {
                      "code": "promocode_some_code",
                      "external_id": "promocode_sku"
                    }
                  ],
                  "coupons": [
                    {
                      "code": "WINTER2021",
                      "external_id": "coupon_sku"
                    }
                  ]
                },
                "user": {
                  "external_id": "id_xsolla_login_1",
                  "email": "gc_user@xsolla.com",
                  "country": "US"
                },
                "billing": {
                  "notification_type": "payment",
                  "settings": {
                    "project_id": 18404,
                    "merchant_id": 2340
                  },
                  "purchase":{
                      "subscription": {
                          "plan_id": "b5dac9c8",
                          "subscription_id": "10",
                          "product_id": "Demo Product",
                          "date_create": "2014-09-22T19:25:25+04:00",
                          "date_next_charge": "2014-10-22T19:25:25+04:00",
                          "currency": "USD",
                          "amount": 9.99
                      },
                      "total": {
                          "currency": "USD",
                          "amount": 200
                      },
                      "promotions": [{
                          "technical_name": "Demo Promotion",
                          "id": 853
                      }],
                      "coupon": {
                          "coupon_code": "ICvj45S4FUOyy",
                          "campaign_code": "1507"
                      }
                  },
                  "transaction": {
                      "id": 1,
                      "external_id": 1,
                      "payment_date": "2014-09-24T20:38:16+04:00",
                      "payment_method": 1,
                      "payment_method_name": "PayPal",
                      "payment_method_order_id": 1234567890123456789,
                      "dry_run": 1,
                      "agreement": 1
                  },
                  "payment_details": {
                      "payment": {
                          "currency": "USD",
                          "amount": 230
                      },
                      "vat": {
                          "currency": "USD",
                          "amount": 0,
                          "percent": 20
                      },
                      "sales_tax": {
                          "currency": "USD",
                          "amount": 0,
                          "percent": 0
                      },
                      "direct_wht": {
                          "currency": "USD",
                          "amount": 0,
                          "percent": 0
                      },
                      "payout_currency_rate": "1",
                      "country_wht": {
                          "currency": "USD",
                          "amount": 2,
                          "percent": 10
                      },
                      "user_acquisition_fee": {
                          "currency": "USD",
                          "amount": 2,
                          "percent": 1
                      },
                      "payout": {
                          "currency": "USD",
                          "amount": 200
                      },
                      "xsolla_fee": {
                          "currency": "USD",
                          "amount": 10
                      },
                      "payment_method_fee": {
                          "currency": "USD",
                          "amount": 20
                      },
                      "repatriation_commission": {
                          "currency": "USD",
                          "amount": 10
                      }
                  }
                },
                "custom_parameters": {
                    "parameter1": "value1",
                    "parameter2": "value2"
                    }
                }
  successful-order-payment-separate:
    post:
      description: "Xsolla отправляет вебхук <code>order_paid</code> на указанный URL-адрес, когда \nвыполнены условия:\n1. Пользователь успешно оплатил заказ.\n2. Xsolla получила ответ об успешной обработке вебхука \n   [payment](/ru/webhooks/operation/payment/).\n\nВ вебхуке <code>order_paid</code> содержится информация о купленных товарах и \nдетали транзакции.\n\nВебхук <code>order_paid</code> не отправляется, если:\n* Оплата не была успешной, например:\n  * форма оплаты была открыта, но пользователь не оплатил заказ;\n  * форма оплаты была открыта, но при оплате возникли ошибки.\n* Ответ об успешной обработке вебхука [payment](/ru/webhooks/operation/payment/) не \n  получен.\n\nРекомендуется обеспечить время обработки вебхука\_<code>order_paid</code> менее \n3 секунд.\n\nОжидаемые коды ответов описаны в разделе <b>Responses</b>. Вы можете \nиспользовать другие коды ответов. В зависимости от кода ответа и подключения \nфункциональности автоматического возврата платежа логика обработки вебхука на \nстороне Xsolla следующая:\n\n<table>\n    <thead>\n    <tr>\n        <th>Код ответа</th>\n        <th>Автоматический возврат платежа не включен (по умолчанию)</th>\n        <th>Автоматический возврат платежа включен</th>\n    </tr>\n    </thead>\n    <tbody>\n    <tr>\n        <td><code>400</code>, <code>401</code>, <code>402</code>, <code>403</code>, <code>404</code>, <code>409</code>, <code>422</code>, <code>415</code></td>\n        <td>Нет действий</td>\n        <td>Автоматический возврат средств пользователю.</td>\n    </tr>\n    <tr>\n        <td><code>200</code>, <code>201</code>, <code>204</code></td>\n        <td>Нет действий</td>\n        <td>Нет действий</td>\n    </tr>\n    <tr>\n        <td>Другой код или отсутствие ответа на вебхук</td>\n        <td>Многократная отправка вебхуков через заданный временной промежуток: 2 попытки с шагом 5 минут, 7 попыток с шагом 15 минут, 10 попыток с шагом 60 минут.</td>\n        <td>Многократная отправка вебхуков через заданный временной промежуток: 2 попытки с шагом 5 минут, 7 попыток с шагом 15 минут, 10 попыток с шагом 60 минут. Если все вебхуки отправлены, а успешный ответ не получен, осуществляется автоматический возврат средств пользователю.</td>\n    </tr>\n    </tbody>\n</table>\n\nДля подключения функциональности автоматических возвратов обратитесь к \nперсональному менеджеру проекта или напишите на csm@xsolla.com\n"
      operationId: successful-order-payment-separate
      requestBody:
        content:
          application/json:
            schema:
              properties:
                custom_parameters:
                  description: Дополнительная информация.
                  type: object
                items:
                  description: "Список предметов, которые купил пользователь.\n\nНабор передаваемых параметров в массиве зависит от версии вебхука. В версии 2 \nдополнительно передаются параметры `is_free`, `is_bonus` и `is_bundle_content`.\_\nДля переключения версии передайте ее номер в параметре `version` в методе \n[Обновление информации о настройках вебхуков](/ru/api/igs/operation/update-webhook/).\n"
                  items:
                    oneOf:
                      - properties:
                          amount:
                            description: >-
                              Общая стоимость товаров, рассчитанная c учетом их
                              количества.
                            type: string
                          custom_attributes:
                            description: >-
                              JSON-объект, содержащий атрибуты товара и их
                              значения.
                            type: object
                          is_pre_order:
                            description: >-
                              Если передано значение `true`, товар является
                              предзаказом.
                            type: boolean
                          promotions:
                            $ref: '#/components/schemas/items.promotions'
                          quantity:
                            description: Количество товаров.
                            type: integer
                          sku:
                            $ref: '#/components/schemas/items.sku'
                          type:
                            $ref: '#/components/schemas/items.type'
                        required:
                          - sku
                          - type
                          - quantity
                          - amount
                          - promotions
                          - is_pre_order
                        title: version = 1
                        type: object
                      - properties:
                          amount:
                            description: >-
                              Общая стоимость товаров, рассчитанная c учетом их
                              количества.
                            type: string
                          custom_attributes:
                            description: >-
                              JSON-объект, содержащий атрибуты товара и их
                              значения.
                            type: object
                          is_bonus:
                            description: >-
                              Если передано значение `true`, товар является
                              бонусом.
                            type: boolean
                          is_bundle_content:
                            description: >-
                              Если передано значение `true`, товар является
                              частью бандла.
                            type: boolean
                          is_free:
                            description: >-
                              Если передано значение `true`, товар является
                              бесплатным.
                            type: boolean
                          is_pre_order:
                            description: >-
                              Если передано значение `true`, товар является
                              предзаказом.
                            type: boolean
                          promotions:
                            $ref: '#/components/schemas/items.promotions'
                          quantity:
                            description: Количество товаров.
                            type: integer
                          sku:
                            $ref: '#/components/schemas/items.sku'
                          type:
                            $ref: '#/components/schemas/items.type'
                        required:
                          - sku
                          - type
                          - quantity
                          - amount
                          - promotions
                          - is_pre_order
                          - is_free
                          - is_bonus
                          - is_bundle_content
                        title: version = 2
                        type: object
                  type: array
                notification_type:
                  $ref: '#/components/schemas/notification_type'
                order:
                  description: Информация о заказе.
                  properties:
                    amount:
                      description: Стоимость корзины с учетом выбранной валюты.
                      type: string
                    comment:
                      description: Комментарий пользователя к заказу.
                      nullable: true
                      type: string
                    coupons:
                      description: >-
                        Примененные купоны. Если купон не был применен, массив
                        не возвращается.
                      items:
                        properties:
                          code:
                            description: Код примененного купона.
                            type: string
                          external_id:
                            description: Внешний ID.
                            type: string
                        type: object
                      type: array
                    currency:
                      description: >-
                        Валюта заказа. Для виртуальной валюты используется
                        артикул, для реальной валюты используется трехбуквенное
                        обозначение согласно стандарту [ISO
                        4217](https://en.wikipedia.org/wiki/ISO_4217).
                      type: string
                    currency_type:
                      $ref: '#/components/schemas/currency-type'
                    id:
                      description: >-
                        Уникальный идентификатор заказа пользователя на стороне
                        Xsolla.
                      type: integer
                    invoice_id:
                      description: >-
                        ID счета для платежей за реальную валюту. Для платежей
                        за виртуальную валюту или для бесплатных товаров
                        передается значение `null`.
                      nullable: true
                      type: string
                    mode:
                      description: >-
                        Тип платежа. Значение `default` (по умолчанию)
                        используется для реальных платежей. Значение `sandbox`
                        используется для тестовых платежей.
                      enum:
                        - default
                        - sandbox
                      type: string
                    platform:
                      description: >-
                        Платформа платежа. Для платежей через Xsolla
                        используется значение `xsolla`. Для других платежей
                        используется значение, соответствующее названию
                        платформы публикации игры.
                      enum:
                        - xsolla
                        - playstation_network
                        - xbox_live
                        - pc_standalone
                        - nintendo_shop
                        - google_play
                        - app_store_ios
                        - android_standalone
                        - ios_standalone
                        - android_other
                        - ios_other
                        - pc_other
                      nullable: true
                      type: string
                    promocodes:
                      description: >-
                        Примененные промокоды. Если промокод не был применен,
                        массив не возвращается.
                      items:
                        properties:
                          code:
                            description: Код примененного промокода.
                            type: string
                          external_id:
                            description: Внешний ID.
                            type: string
                        type: object
                      type: array
                    promotions:
                      $ref: '#/components/schemas/order.promotions'
                    status:
                      description: Статус заказа.
                      type: string
                  required:
                    - id
                    - mode
                    - currency_type
                    - currency
                    - amount
                    - status
                    - platform
                    - comment
                    - invoice_id
                    - promotions
                  type: object
                user:
                  description: Информация о пользователе.
                  properties:
                    country:
                      $ref: '#/components/schemas/user.country'
                    email:
                      description: Email-адрес пользователя.
                      type: string
                    external_id:
                      description: ID пользователя.
                      type: string
                  required:
                    - external_id
                    - email
                  type: object
              required:
                - notification_type
                - items
                - order
                - user
      responses:
        '200':
          description: Верните, чтобы сообщить об успешной обработке вехбука.
        '400':
          description: >-
            Верните в случае ошибки в предоставленной информации (например,
            обязательный параметр не передан, или авторизация не прошла).
      summary: Успешная оплата заказа (без деталей платежа и транзакции)
      tags:
        - separate-webhooks
      x-codeSamples:
        - label: CURL
          lang: cURL
          source: >-
            curl -v 'https://your.hostname/your/uri' \

            -X POST \

            -H 'accept: application/json' \

            -H 'content-type: application/json' \

            -H 'authorization: Signature
            d09695066c52c1b8bdae92f2d6eb59f5b5f89843' \

            -d '{
                "notification_type": "order_paid",
                "items": [
                  {
                    "sku": "com.xsolla.v.item_1",
                    "type": "virtual_good",
                    "is_pre_order": false,
                    "quantity": 3,
                    "amount": "1000",
                    "promotions": [
                      {
                        "amount_without_discount": "6000",
                        "amount_with_discount": "5000",
                        "sequence": 1
                      },
                      {
                        "amount_without_discount": "5000",
                        "amount_with_discount": "4000",
                        "sequence": 2
                      }
                    ],
                    "custom_attributes":
                      {
                        "purchased": 0,
                        "attr": "value"
                      }
                  },
                  {
                    "sku": "com.xsolla.v.item_new_1",
                    "type": "bundle",
                    "is_pre_order": false,
                    "quantity": 1,
                    "amount": "1000",
                    "promotions": []
                  },
                  {
                    "sku": "com.xsolla.gold_1",
                    "type": "virtual_currency",
                    "is_pre_order": false,
                    "quantity": 1500,
                    "amount": "[null]",
                    "promotions": []
                  }
                ],
                "order": {
                  "id": 1,
                  "mode": "default",
                  "currency_type": "virtual",
                  "currency": "sku_currency",
                  "amount": "2000",
                  "status": "paid",
                  "platform": "xsolla",
                  "comment": null,
                  "invoice_id": "1",
                  "promotions": [
                    {
                      "amount_without_discount": "4000",
                      "amount_with_discount": "2000",
                      "sequence": 1
                    }
                  ],
                  "promocodes": [
                    {
                      "code": "promocode_some_code",
                      "external_id": "promocode_sku"
                    }
                  ],
                  "coupons": [
                    {
                      "code": "WINTER2021",
                      "external_id": "coupon_sku"
                    }
                  ]
                },
                "user": {
                  "external_id": "id_xsolla_login_1",
                  "email": "gc_user@xsolla.com",
                  "country": "US"
                }

            }'
        - label: HTTP
          lang: HTTP
          source: |-
            POST /your/uri HTTP/1.1
            host:           your.hostname
            accept:         application/json
            content-length: 258
            content-type:   application/json
            authorization:  Signature d90d319f05df7b0f86d2485f48e7079f0f752523


            {
                "notification_type": "order_paid",
                "items": [
                  {
                    "sku": "com.xsolla.v.item_1",
                    "type": "virtual_good",
                    "is_pre_order": false,
                    "quantity": 3,
                    "amount": "1000",
                    "promotions": [
                      {
                        "amount_without_discount": "6000",
                        "amount_with_discount": "5000",
                        "sequence": 1
                      },
                      {
                        "amount_without_discount": "5000",
                        "amount_with_discount": "4000",
                        "sequence": 2
                      }
                    ],
                    "custom_attributes":
                      {
                        "purchased": 0,
                        "attr": "value"
                      }
                  },
                  {
                    "sku": "com.xsolla.v.item_new_1",
                    "type": "bundle",
                    "is_pre_order": false,
                    "quantity": 1,
                    "amount": "1000",
                    "promotions": []
                  },
                  {
                    "sku": "com.xsolla.gold_1",
                    "type": "virtual_currency",
                    "is_pre_order": false,
                    "quantity": 1500,
                    "amount": "[null]",
                    "promotions": []
                  }
                ],
                "order": {
                  "id": 1,
                  "mode": "default",
                  "currency_type": "virtual",
                  "currency": "sku_currency",
                  "amount": "2000",
                  "status": "paid",
                  "platform": "xsolla",
                  "comment": null,
                  "invoice_id": "1",
                  "promotions": [
                    {
                      "amount_without_discount": "4000",
                      "amount_with_discount": "2000",
                      "sequence": 1
                    }
                  ],
                  "promocodes": [
                    {
                      "code": "promocode_some_code",
                      "external_id": "promocode_sku"
                    }
                  ],
                  "coupons": [
                    {
                      "code": "WINTER2021",
                      "external_id": "coupon_sku"
                    }
                  ]
                },
                "user": {
                  "external_id": "id_xsolla_login_1",
                  "email": "gc_user@xsolla.com",
                  "country": "US"
                }
            }
  updated-subscription:
    post:
      description: >-
        В случае изменения каких-либо параметров (`plan_id`, `date_next_charge`)
        подписки и в случае каждого продления подписки, Xsolla отправляет вебхук
        с типом `update_subscription` на URL-адрес вебхука.
      operationId: updated-subscription
      requestBody:
        content:
          application/json:
            schema:
              properties:
                notification_type:
                  $ref: '#/components/schemas/notification_type'
                settings:
                  description: Объект, содержащий настройки проекта.
                  properties:
                    merchant_id:
                      $ref: '#/components/schemas/settings.merchant_id'
                    project_id:
                      $ref: '#/components/schemas/settings.project_id'
                  type: object
                subscription:
                  description: Объект с данными о подписке.
                  properties:
                    date_next_charge:
                      $ref: '#/components/schemas/subscription.date_next_charge'
                    plan_id:
                      $ref: '#/components/schemas/subscription.plan_id'
                    product_id:
                      $ref: '#/components/schemas/subscription.product_id'
                    subscription_id:
                      $ref: '#/components/schemas/subscription.subscription_id'
                    tags:
                      $ref: '#/components/schemas/subscription.tags'
                  type: object
                user:
                  description: Объект с информацией о пользователе.
                  properties:
                    id:
                      $ref: '#/components/schemas/user.id'
                    name:
                      $ref: '#/components/schemas/user.name'
                  required:
                    - id
                  type: object
              required:
                - notification_type
      responses:
        '204':
          $ref: '#/components/responses/204'
        '400':
          $ref: '#/components/responses/400'
        '500':
          $ref: '#/components/responses/500'
      summary: Изменение подписки
      tags:
        - subscriptions
      x-codeSamples:
        - label: CURL
          lang: cURL
          source: >-
            curl -v 'https://your.hostname/your/uri' \

            -X POST \

            -H 'accept: application/json' \

            -H 'content-type: application/json' \

            -H 'authorization: Signature
            13342703ccaca5064ad33ba451d800c5e823db8f' \

            -d '{
                    "notification_type": "update_subscription",
                    "settings": {
                      "project_id": 18404,
                      "merchant_id": 2340
                    },
                    "user": {
                        "id": "1234567",
                        "name": "John Smith"
                    },
                    "subscription": {
                        "plan_id": "b5dac9c8",
                        "subscription_id": "10",
                        "product_id": "Demo Product",
                        "date_next_charge": "2015-01-22T19:25:25+04:00"
                    }
                }'
        - label: PHP
          lang: PHP
          source: |-
            <?php

            $request = array(
                'notification_type' => 'update_subscription',
                'settings' => array(
                  'project_id' => 18404,
                  'merchant_id' => 2340
                ),
                'user' => array(
                    'id' => '1234567',
                    'name' => 'John Smith'
                ),
                'subscription' => array(
                    'plan_id' => 'b5dac9c8',
                    'subscription_id' => '10',
                    'product_id' => 'Demo Product',
                    'date_next_charge' => '2015-01-22T19:25:25+04:00'
                )
            );
        - label: HTTP
          lang: HTTP
          source: |-
            POST /your/uri HTTP/1.1
            host: your.hostname
            accept: application/json
            content-type: application/json
            content-length: 240
            authorization: Signature 13342703ccaca5064ad33ba451d800c5e823db8f

            {
                "notification_type": "update_subscription",
                "settings": {
                  "project_id": 18404,
                  "merchant_id": 2340
                },
                "user": {
                    "id": "1234567",
                    "name": "John Smith"
                },
                "subscription": {
                    "plan_id": "b5dac9c8",
                    "subscription_id": "10",
                    "product_id": "Demo Product",
                    "date_next_charge": "2015-01-22T19:25:25+04:00"
                }
            }
  user-search:
    post:
      description: >-
        <nt>Public User ID</nt> — параметр, по которому можно однозначно
        идентифицировать пользователя и который хорошо известен пользователю в
        отличие от <nt>User ID</nt> (в качестве <nt>Public User ID</nt> может
        быть email, никнейм и т. д.). Xsolla отправляет вебхук с типом
        `user_search`, когда оплата совершается вне игры (например, при оплате в
        терминале).
      operationId: user-search
      requestBody:
        content:
          application/json:
            schema:
              properties:
                notification_type:
                  $ref: '#/components/schemas/notification_type'
                settings:
                  description: Объект, содержащий настройки проекта.
                  properties:
                    merchant_id:
                      $ref: '#/components/schemas/settings.merchant_id'
                    project_id:
                      $ref: '#/components/schemas/settings.project_id'
                  type: object
                user:
                  description: Объект с информацией о пользователе.
                  properties:
                    id:
                      $ref: '#/components/schemas/user.id'
                    public_id:
                      $ref: '#/components/schemas/user.public_id'
                  required:
                    - id
                  type: object
              required:
                - notification_type
                - user
      responses:
        '204':
          $ref: '#/components/responses/204'
        '400':
          $ref: '#/components/responses/400'
        '500':
          $ref: '#/components/responses/500'
      summary: Поиск пользователя
      tags:
        - user-validation
      x-codeSamples:
        - label: CURL
          lang: cURL
          source: >-
            curl -v 'https://your.hostname/your/uri' \

            -X POST \

            -H 'accept: application/json' \

            -H 'content-type: application/json' \

            -H 'authorization: Signature
            13342703ccaca5064ad33ba451d800c5e823db8f' \

            -d '{
                "notification_type": "user_search",
                "settings": {
                  "project_id": 18404,
                  "merchant_id": 2340
                },
                "user": {
                    "public_id": "email@example.com"
                }
            }'
        - label: PHP
          lang: PHP
          source: |-
            <?php

            $request = array(
                'notification_type' => 'user_search',
                'settings' => array(
                  'project_id' => 18404,
                  'merchant_id' => 2340
                ),
                'user' => array(
                    'public_id' => 'email@example.com'
                )
            );
        - label: HTTP
          lang: HTTP
          source: |-
            POST /your/uri HTTP/1.1
            host: your.hostname
            accept: application/json
            content-type: application/json
            content-length: 240
            authorization: Signature 13342703ccaca5064ad33ba451d800c5e823db8f

            {
                "notification_type": "user_search",
                "settings": {
                  "project_id": 18404,
                  "merchant_id": 2340
                },
                "user": {
                    "public_id": "email@example.com"
                }
            }
  user-validation:
    post:
      description: >
        Xsolla отправляет вебхук с типом `user_validation` на URL-адрес вебхука,
        чтобы 

        удостовериться, что пользователь зарегистрирован в игре. В процессе
        оплаты 

        запрос отправляется несколько раз:


        * при выборе способа оплаты в платежном интерфейсе;

        * вводе данных в форме оплаты, например, при вводе данных банковской
        карты или 
          индекса для оплаты с помощью PayPal;
        * нажатии **Далее** для перехода к оплате;

        * завершении обработки платежа и переходе транзакции в статус `done`.


        Запрос отправляется при оплате любыми способами.


        После сохранения URL-адреса вебхука в Личном кабинете вы можете
        настроить 

        получение дополнительной информации в вебхуке. Для этого в разделе <a 

        href="https://publisher.xsolla.com/0/projects/0/edit/webhooks/store">Настройки 

        проекта &gt; Вебхуки &gt; Расширенные настройки</a> установите
        необходимые 

        переключатели в активное положение.


        <div class="note">

        <p><strong>Примечание</strong></p>

        <p>Если вы зарегистрировались в Личном кабинете до 22 января 2025 г.
        (включительно), переключатели располагаются в разделе <a
        href="https://publisher.xsolla.com/0/projects/0/edit/webhooks/payments">Настройки
        проекта &gt; Вебхуки &gt; Тестирование &gt; Payments &gt; Расширенные
        настройки</a>.</p>

        </div>


        <table>

        <thead>
            <tr>
                <th>Переключатель</th>
                <th>Описание</th>
            </tr>
        </thead>

        <tbody>
            <tr>
                <td>Показывать только необходимую информацию о пользователе без чувствительных данных</td>
                <td><p>В вебхуке о пользователе будет передаваться только следующая информация:</p><ul><li>ID;</li><li>страна.</li></ul></td>
            </tr>
            <tr>
                <td>Передавать кастомные параметры</td>
                <td>В вебхуке будет передаваться информация о <a href="/ru/api/pay-station/operation/create-token/">кастомных параметрах из токена</a>.</td>
            </tr>
        </tbody>

        </table>
      operationId: user-validation
      requestBody:
        content:
          application/json:
            schema:
              properties:
                notification_type:
                  $ref: '#/components/schemas/notification_type'
                settings:
                  description: Объект, содержащий настройки проекта.
                  properties:
                    merchant_id:
                      $ref: '#/components/schemas/settings.merchant_id'
                    project_id:
                      $ref: '#/components/schemas/settings.project_id'
                  type: object
                user:
                  description: Объект с информацией о пользователе.
                  properties:
                    country:
                      $ref: '#/components/schemas/user.country'
                    email:
                      $ref: '#/components/schemas/user.email'
                    id:
                      $ref: '#/components/schemas/user.id'
                    ip:
                      $ref: '#/components/schemas/user.ip'
                    name:
                      $ref: '#/components/schemas/user.name'
                    phone:
                      $ref: '#/components/schemas/user.phone'
                  required:
                    - id
                  type: object
              required:
                - notification_type
      responses:
        '204':
          $ref: '#/components/responses/204'
        '400':
          $ref: '#/components/responses/400'
        '500':
          $ref: '#/components/responses/500'
      summary: Проверка пользователей
      tags:
        - user-validation
      x-codeSamples:
        - label: CURL
          lang: cURL
          source: >-
            curl -v 'https://your.hostname/your/uri' \

            -X POST \

            -H 'accept: application/json' \

            -H 'content-type: application/json' \

            -H 'authorization: Signature
            13342703ccaca5064ad33ba451d800c5e823db8f' \

            -d '{
                "notification_type":"user_validation",
                "settings": {
                  "project_id": 18404,
                  "merchant_id": 2340
                },
                "user": {
                    "ip": "127.0.0.1",
                    "phone": "18777976552",
                    "email": "email@example.com",
                    "id": "1234567",
                    "name": "John Smith",
                    "country": "US"
                }
            }'
        - label: PHP
          lang: PHP
          source: |-
            <?php

            $request = array(
                'notification_type' => 'user_validation',
                'settings' => array(
                  'project_id' => 18404,
                  'merchant_id' => 2340
                ),
                'user' => array(
                    'ip' => '127.0.0.1',
                    'phone' => '18777976552',
                    'email'=> 'email@example.com',
                    'id'=> '1234567',
                    'country' => 'US'
                )
            );
        - label: HTTP
          lang: HTTP
          source: |-
            POST /your/uri HTTP/1.1
            host: your.hostname
            accept: application/json
            content-type: application/json
            content-length: 240
            authorization: Signature 13342703ccaca5064ad33ba451d800c5e823db8f

            {
                "notification_type": "user_validation",
                "settings": {
                  "project_id": 18404,
                  "merchant_id": 2340
                },
                "user": {
                    "ip": "127.0.0.1",
                    "phone": "18777976552",
                    "email": "email@example.com",
                    "id": "1234567",
                    "name": "John Smith",
                    "country": "US"
                }
            }
  user-validation-in-webshop:
    post:
      description: >-
        Xsolla отправляет вебхук с сайта интернет-магазина на URL-адрес вебхука
        для проверки существования пользователя в игре. Вебхук поступает с
        IP-адреса `34.102.38.178`.

        <div class="note"><strong>Примечание</strong> <br><br>Вебхук
        используется только для

        проверки пользователя в Web Shop. Дополнительные сведения о настройке
        вебхука вы можете найти в <a target="_blank"
        href="https://developers.xsolla.com/ru/solutions/web-shop/authentication-and-analytics/set-up-authentication/">инструкции</a>.</div>
      operationId: user-validation-in-webshop
      requestBody:
        content:
          application/json:
            schema:
              properties:
                settings:
                  description: Объект, содержащий настройки проекта.
                  properties:
                    merchant_id:
                      $ref: '#/components/schemas/settings.merchant_id'
                    project_id:
                      $ref: '#/components/schemas/settings.project_id'
                  type: object
                user:
                  description: Объект с информацией о пользователе.
                  properties:
                    country:
                      $ref: '#/components/schemas/user.country'
                    id:
                      $ref: '#/components/schemas/user.id'
                  required:
                    - id
                  type: object
              required:
                - user
      responses:
        '200':
          content:
            application/json:
              example:
                attributes:
                  - key: level
                    value: '2'
                  - key: register_country
                    value: AE
                removingKeys:
                  - company
                user:
                  id: '1234567890'
                  name: test-name
                  picture: https://example.com
              schema:
                properties:
                  attributes:
                    description: >-
                      Атрибуты пользователя, используемые для персонализации.
                      Подробную информацию вы можете найти в <a target="_blank"
                      href="https://developers.xsolla.com/ru/doc/login/features/user-attributes/#login_features_user_attributes">документации</a>.
                    items:
                      properties:
                        key:
                          description: Имя атрибута.
                          type: string
                        value:
                          description: Значение атрибута.
                      required:
                        - key
                        - value
                    type: array
                  removingKeys:
                    description: >-
                      Список атрибутов, которые вы хотите удалить. Если вы
                      укажете тот же атрибут в `attributes`параметре, он не
                      будет удален.
                    items:
                      type: string
                    type: array
                  user:
                    description: Объект с информацией о пользователе.
                    properties:
                      id:
                        description: ID пользователя.
                        type: string
                      name:
                        description: Имя пользователя.
                        type: string
                      picture:
                        description: Ссылка на аватар пользователя.
                        type: string
                    required:
                      - id
                    type: object
                required:
                  - user
                type: object
          description: Возвращает информацию о пользователе.
        '404':
          description: Пользователь не найден.
      summary: Проверка пользователя в Web Shop
      tags:
        - user-validation
      x-codeSamples:
        - label: CURL
          lang: cURL
          source: |-
            curl -v 'https://your.hostname/your/uri' \
            -X POST \
            -H 'accept: application/json' \
            -H 'content-type: application/json' \
            -d '{
                "settings": {
                  "project_id": 18404,
                  "merchant_id": 2340
                },
                "user": {
                    "id": "1234567",
                    "country": "US"
                }
            }'
        - label: HTTP
          lang: HTTP
          source: |-
            POST /your/uri HTTP/1.1
            host: your.hostname
            accept: application/json
            content-type: application/json
            content-length: 240

            {
                "settings": {
                  "project_id": 18404,
                  "merchant_id": 2340
                },
                "user": {
                    "id": "1234567",
                    "country": "US"
                }
            }
components:
  schemas:
    notification_type:
      description: Тип оповещения.
      type: string
    payment_account.country:
      description: >-
        Страна платежного аккаунта. Например, страна выпуска карты или страна,
        указанная при создании аккаунта PayPal. Используется двухбуквенное
        обозначение страны согласно стандарту [ISO 3166-1
        alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).
      type: string
    payment_account.id:
      description: ID платежного аккаунта.
      type: string
    payment_account.name:
      description: >-
        Название платежного аккаунта в платежной системе (например: номер карты,
        email-адрес).
      type: string
    payment_account.payment_method:
      description: ID способа оплаты.
      type: integer
    payment_account.type:
      description: 'Тип платежного аккаунта (например: карта, PayPal).'
      type: string
    settings.merchant_id:
      description: ID продавца.
      type: integer
    settings.project_id:
      description: >-
        ID проекта. Вы можете найти этот параметр в [Личном
        кабинете](https://publisher.xsolla.com/) рядом с названием проекта.
      type: integer
    user.country:
      description: >-
        Страна пользователя. Используется двухбуквенное обозначение страны
        согласно стандарту [ISO 3166-1
        alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).
      type: string
    user.email:
      description: Email пользователя.
      type: string
    user.id:
      description: ID пользователя.
      type: string
    user.ip:
      description: IP адрес пользователя.
      type: string
    user.name:
      description: Имя пользователя.
      type: string
    user.zip:
      description: Почтовый индекс.
      type: string
    subscription.date_create:
      description: >-
        Дата создания подписки. Дата и время согласно стандарту [ISO
        8601](https://en.wikipedia.org/wiki/ISO_8601).
      type: string
    subscription.date_end:
      description: >-
        Дата окончания срока действия подписки. Дата и время согласно стандарту
        [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601).
      type: string
    subscription.plan_id:
      description: ID плана (внешний id, если план был создан через API).
      type: string
    subscription.product_id:
      description: ID продукта (если был отправлен в токене).
      type: string
    subscription.subscription_id:
      description: ID подписки в базе данных Xsolla.
      type: integer
    subscription.tags:
      description: Теги плана.
      items:
        type: string
      type: array
    subscription.date_next_charge:
      description: >-
        Дата следующего списания. Дата и время согласно стандарту [ISO
        8601](https://en.wikipedia.org/wiki/ISO_8601).
      type: string
    subscription.is_gift:
      description: >-
        Была ли подписка подарена. Параметр передается, только если принимает
        значение `true`.
      type: boolean
    dispute-date:
      description: >-
        Дата открытия диспута согласно стандарту [RFC
        3339](https://datatracker.ietf.org/doc/html/rfc3339).
      type: string
    dispute-reason:
      description: >-
        Причина открытия диспута. Описания групп причин приведены в
        [документации](/ru/solutions/payments/anti-fraud/chargeback/#payments_chargeback_reasons).
      enum:
        - non_receipt
        - not_as_described
        - duplicate_processing
        - paid_by_other_means
        - incorrect_amount
        - credit_not_processed
        - general
        - fraud
        - cancelled_recurring
        - cancelled_merchandise
        - late_presentment
        - no_authorization
        - problem_with_remittance
        - other
      type: string
    dispute-status:
      description: Статус диспута.
      enum:
        - new
        - accepted
        - no_actions_required
        - won
        - lost
      type: string
      x-enumDescriptions:
        accepted: <b>Принят</b>
        lost: <b>Проигран</b>
        new: <b>Новый</b>
        no_actions_required: <b>В процессе</b>
        won: <b>Выигран</b>
    dispute-type:
      description: Тип диспута.
      enum:
        - 1st_time_chargeback
        - 2nd_time_chargeback
        - arbitration
        - retrieval
        - representment
        - chargeback_reversal
        - representment_reversal
        - reimbursement
        - dispute
        - chargeback
        - claim
        - reimbursement_reversal
        - inquiry
        - other
      type: string
      x-enumDescriptions:
        1st_time_chargeback: Первичный чарджбэк.
        2nd_time_chargeback: Повторный чарджбэк (pre-arbitration).
        arbitration: >-
          Решение спора между банком-эмитентом и продавцом, когда первичный и
          повторный чарджбэк были отклонены.
        chargeback: Первичный чарджбэк.
        chargeback_reversal: Чарджбэк отозван.
        claim: Спор между покупателем и продавцом в PayPal.
        dispute: Владелец карты запрашивает детали платежа через банк.
        inquiry: Владелец карты запрашивает детали платежа через банк.
        other: >-
          Используется в случае, когда ни один из существующих типов не
          подходит.
        reimbursement: Сделан возврат средств.
        reimbursement_reversal: Чарджбэк отозван.
        representment: >-
          Команда управления чарджбэками отправляет доказательства платежной
          системе.
        representment_reversal: Чарджбэк отозван.
        retrieval: Владелец карты запрашивает детали платежа через банк.
    date-create:
      description: Дата платежа.
      type: string
    external-id:
      description: >-
        Внешний ID транзакции. Изучите подробную информацию в [Частых
        вопросах](/ru/doc/pay-station/references/faq/#faq_payments_q_new_transaction_external_id).
      type: string
    transaction-id:
      description: ID транзакции.
      type: integer
    dispute-payment-method:
      description: Способ оплаты.
      enum:
        - credit_debit_card
        - paypal
      type: string
      x-enumDescriptions:
        credit_debit_card: Кредитная или дебитовая карта
        paypal: PayPal
    transaction-total-amount:
      description: Сумма платежа.
      format: float
      type: number
    currency:
      description: >-
        Валюта. Используется трехбуквенное обозначение валюты согласно стандарту
        [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217).
      type: string
    amount-float:
      description: Сумма покупки.
      format: float
      type: number
    items.promotions:
      description: >-
        Примененные акции для отдельных товаров в заказе.

        Массив возвращается, если:
         - Скидочная акция настроена для отдельного товара.
         - Применяется промокод с настройкой **Скидка на выбранные товары**.

        Если акции на уровне отдельных товаров не применялись, возвращается
        пустой массив.
      items:
        properties:
          amount_with_discount:
            description: Стоимость товаров со скидкой.
            type: string
          amount_without_discount:
            description: Стоимость товаров без скидки.
            type: string
          sequence:
            description: Порядок применения акций.
            type: integer
        type: object
      type: array
    items.sku:
      description: >-
        Уникальный ID предмета. Для предметов с типом `game_key` используется
        значение в формате `sku_drm`.
      type: string
    items.type:
      description: >-
        Тип предмета.

        Для предмета с типом `bundle`, в том числе для пакета виртуальной
        валюты, в массиве `items` будут отображены:

        параметры бандла или пакета виртуальной валюты;

        предметы, которые входят в бандл, или валюты, которые входят в пакет.
          
        Тип `value_point` используется при [операциях с баллами
        лояльности](/ru/solutions/loyalty-as-service/) – их оплате или
        начислении.
      enum:
        - virtual_good
        - virtual_currency
        - game_key
        - bundle
        - value_point
      type: string
    currency-type:
      description: >-
        Тип валюты платежа. Для бесплатного заказа указывается значение
        `unknown`.
      enum:
        - real
        - virtual
        - unknown
        - loyalty_point
      type: string
      x-enumDescriptions:
        loyalty_point: баллы лояльности
        real: реальная валюта
        unknown: бесплатный заказ
        virtual: виртуальная валюта
    order.promotions:
      description: |-
        Примененные акции для всего заказа.
        Массив возвращается, если:
         - Акция влияет на общую сумму покупки при использовании промокода с настройкой **Скидка на покупку**.
         - Скидки на покупку нет, но к заказу добавляются бонусные товары. В этом случае значения стоимости со скидкой ([amount_with_discount](/ru/webhooks/#operation/order-cancellation!path=order/promotions/amount_with_discount&t=request)) и без нее ([amount_without_discount](/ru/webhooks/#operation/order-cancellation!path=order/promotions/amount_without_discount&t=request)) передаются и совпадают, поскольку скидка не применяется.

        Если акции на уровне заказа не применялись, передается пустой массив.
      items:
        properties:
          amount_with_discount:
            description: Стоимость товаров со скидкой.
            type: string
          amount_without_discount:
            description: Стоимость товаров без скидки.
            type: string
          sequence:
            description: Порядок применения акций.
            type: integer
        type: object
      type: array
    user.phone:
      description: Номер телефона пользователя (в международном формате).
      type: string
    order:
      description: >-
        Объект с информацией о заказе. Чтобы получать эту информацию, в [Личном
        кабинете](https://publisher.xsolla.com/) в разделе **Настройки проекта
        &gt; Вебхуки &gt; Расширенные настройки** установите переключатель
        **Добавить объект order в вебхук** в положение **Вкл**.
      type: object
    locale:
      description: >-
        Язык интерфейса пользователя. Используется [двухбуквенное
        обозначение](https://developers.xsolla.com/ru/doc/pay-station/features/localization/)
        (в нижнем регистре).
      type: string
    quantity:
      deprecated: true
      description: >-
        Количество товара, которое может приобрести один пользователь. Чтобы не
        ограничивать количество товара, передайте `null`. Чтобы товар был
        недоступен для покупки, но отображался в каталоге, передайте `0`.


        Если вы используете этот параметр, информация о лимите покупок не
        отображается в каталоге. Чтобы информация о лимите покупок отображалась
        в каталоге (например, `7/10`), передайте пару `available` и `total`
        вместо `quantity`.
      type: integer
    available:
      description: >-
        Оставшееся количество товара, которое может приобрести пользователь.


        Чтобы информация о лимите покупок отображалась в каталоге (например,
        `7/10`), передайте пару `available` и `total`.
      type: integer
    total:
      description: >-
        Максимальное количество товара, которое может приобрести один
        пользователь.


        Значение должно быть больше 0.Чтобы информация о лимите покупок
        отображалась в каталоге (например, `7/10`), передайте пару `available` и
        `total`.
      exclusiveMinimum: 0
      type: integer
    bundle_content:
      description: >-
        Массив объектов с содержимым бандла для отображения в каталоге. Может
        использоваться только для бандлов с типом
        [partner_side_content](https://developers.xsolla.com/ru/api/shop-builder/operation/admin-create-bundle/).
      items:
        properties:
          description:
            description: >-
              Описание товара для отображения в каталоге в составе бандла. Если
              не указано, передается `null`.
            maxLength: 255
            type: string
          image_url:
            description: "URL-адрес изображения товара для отображения в каталоге в составе бандла. Поддерживается только протокол HTTPS.\_Если URL-адрес не указан, передается `null`."
            format: uri
            maxLength: 255
            type: string
          name:
            description: >-
              Название товара для отображения в каталоге в составе бандла. Если
              не указано, передается пустая строка.
            maxLength: 255
            type: string
          quantity:
            default: 1
            description: Количество товара в составе бандла.
            minimum: 1
            type: integer
        type: object
      type: array
    date_from:
      description: >-
        Дата, начиная с которой товар доступен для продажи. Используется
        [стандарт RFC 3339](https://datatracker.ietf.org/doc/html/rfc3339).
      type: string
    date_until:
      description: >-
        Дата, начиная с которой товар недоступен для продажи. Используется
        [стандарт RFC 3339](https://datatracker.ietf.org/doc/html/rfc3339).
      type: string
    description:
      description: >-
        Описание товара для отображения в каталоге. Заменяет сохраненное
        название товара.
      maxLength: 255
      type: string
    image_url:
      description: >-
        URL-адрес изображения для отображения в каталоге. Заменяет сохраненный
        URL-адрес изображения. Поддерживается только протокол HTTPS. Если
        URL-адрес не соответствует требованиям, он будет проигнорирован.
      format: uri
      maxLength: 255
      type: string
    json_attributes:
      description: >-
        Объект JSON, содержащий атрибуты товара и их значения. Заменяет
        [custom_attributes](https://developers.xsolla.com/ru/webhooks/operation/successful-order-payment/#!path=items/0/custom_attributes&t=request),
        сохраненный для товара. Если JSON не соответствует требованиям или
        превышает допустимую длину, он будет проигнорирован.
      format: json
      maxLength: 500
      type: object
    name:
      description: >-
        Название товара для отображения в каталоге. Заменяет сохраненное
        название товара.
      maxLength: 255
      type: string
    sku:
      description: >-
        Уникальный ID предмета, который вы указали в Личном кабинете. Должен
        быть передан либо `sku`, либо `item_id`.
      type: string
    item_id:
      description: >-
        Уникальный ID предмета на стороне Xsolla. Должен быть передан либо
        `sku`, либо `item_id`.
      type: integer
    user.public_id:
      description: Public ID пользователя.
      type: string
  responses:
    '204':
      description: Верните, чтобы сообщить об успешной обработке вехбука.
    '400':
      content:
        application/json:
          schema:
            properties:
              error:
                properties:
                  code:
                    type: string
                  message:
                    type: string
                type: object
            type: object
      description: >-
        Верните в случае ошибки в предоставленной информации (например,
        обязательный параметр не передан, или авторизация не прошла).
      x-examples:
        application/json:
          INCORRECT_AMOUNT:
            summary: Incorrect amount
            value:
              error:
                code: INCORRECT_AMOUNT
                message: Incorrect amount
          INCORRECT_INVOICE:
            summary: Incorrect invoice
            value:
              error:
                code: INCORRECT_INVOICE
                message: Incorrect invoice
          INVALID_PARAMETER:
            summary: Invalid parameter
            value:
              error:
                code: INVALID_PARAMETER
                message: Invalid parameter
          INVALID_SIGNATURE:
            summary: Invalid signature
            value:
              error:
                code: INVALID_SIGNATURE
                message: Invalid signature
          INVALID_USER:
            summary: Invalid user
            value:
              error:
                code: INVALID_USER
                message: Invalid user
    '500':
      description: Верните, чтобы сообщить о временных ошибках на ваших серверах.
    400-payment:
      content:
        application/json:
          schema:
            properties:
              error:
                properties:
                  code:
                    type: string
                  message:
                    type: string
                type: object
            type: object
      description: >-
        Верните в случае ошибки в предоставленной информации (например,
        обязательный параметр не передан, или авторизация не прошла). В этом
        случае денежные средства пользователя списываются, но покупка не
        осуществляется. Чтобы оформить возврат платежа, необходимо обратиться в
        службу поддержки Xsolla на support@xsolla.com.
      x-examples:
        application/json:
          INCORRECT_AMOUNT:
            summary: Incorrect amount
            value:
              error:
                code: INCORRECT_AMOUNT
                message: Incorrect amount
          INCORRECT_INVOICE:
            summary: Incorrect invoice
            value:
              error:
                code: INCORRECT_INVOICE
                message: Incorrect invoice
          INVALID_PARAMETER:
            summary: Invalid parameter
            value:
              error:
                code: INVALID_PARAMETER
                message: Invalid parameter
          INVALID_SIGNATURE:
            summary: Invalid signature
            value:
              error:
                code: INVALID_SIGNATURE
                message: Invalid signature
          INVALID_USER:
            summary: Invalid user
            value:
              error:
                code: INVALID_USER
                message: Invalid user
x-tagGroups:
  - name: Проверка пользователей
    tags:
      - user-validation
  - name: Payments
    tags:
      - payments
  - name: Игровые сервисы
    tags:
      - combined-webhooks
      - separate-webhooks
      - personalization
  - name: Антифрод
    tags:
      - anti-fraud
  - name: Subscriptions
    tags:
      - subscriptions
