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

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

Если какой-либо параметр был передан в некорректном формате, токен не может 
быть выдан. В ответ вернется 422 HTTP код и в JSON объекте в теле ответа будет 
содержаться информация об ошибке. В параметре extended_message указывается, 
какие именно параметры были переданы неверно.

По умолчанию время жизни токена — 24 часа. Если вы хотите изменить это 
значение, обратитесь к персональному менеджеру проекта или напишите на csm@xsolla.com. Новое значение будет 
действовать во всех проектах вашей компании, созданных в Личном кабинете.


ВниманиеТокен, полученный в результате вызова этого метода, используется только для авторизации других запросов. Вы можете использовать этот токен для открытия платежного интерфейса, если у вас подключен продукт Subscriptions.Чтобы открыть платежный интерфейс в новом окне, используйте ссылку: https://secure.xsolla.com/paystation4/?token={token}, где {token} — полученный токен.Для тестирования используйте этот URL-адрес: https://sandbox-secure.xsolla.com/paystation4/?token={token}.





ВниманиеЭтот метод API не включает в себя path-параметр project_id, поэтому для авторизации вам необходимо использовать ключ API, который действует во всех проектах.

Endpoint: POST /merchants/{merchant_id}/token
Version: 2.0
Security: basicAuth

## Path parameters:

  - `merchant_id` (integer, required)
    ID продавца.

## Request fields (application/json):

  - `custom_parameters` (object)
    Объект с параметрами для настройки антифрод-фильтров. Список параметров приведен ниже на этой странице. Чтобы добавить кастомные параметры, свяжитесь с вашим персональным менеджером или напишите на [csm@xsolla.com](mailto:csm@xsolla.com).

  - `custom_parameters.active_date` (string)
    Дата последнего посещения согласно стандарту [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601).

  - `custom_parameters.additional_verification` (boolean)
    Использует ли игрок дополнительные способы защиты аккаунта.

  - `custom_parameters.character_customized` (boolean)
    Настраивал ли игрок персонажа.

  - `custom_parameters.chat_activity` (boolean)
    Пишет ли игрок в чате.

  - `custom_parameters.completed_tasks` (integer)
    Количество выполненных заданий.

  - `custom_parameters.forum_activity` (boolean)
    Пишет ли игрок в форуме.

  - `custom_parameters.items_used` (boolean)
    Использует ли игрок купленные в игре предметы.

  - `custom_parameters.karma_points` (integer)
    Карма игрока.

  - `custom_parameters.last_change_password_date` (string)
    Дата последней смены пароля согласно стандарту [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601).

  - `custom_parameters.non_premium_currency` (number)
    Сумма непремиальной валюты игрока.

  - `custom_parameters.notifications_enabled` (boolean)
    Подписался ли игрок на рассылку уведомлений.

  - `custom_parameters.profile_completed` (boolean)
    Добавил ли игрок дополнительную информацию в профиль.

  - `custom_parameters.profile_image_added` (boolean)
    Загрузил ли игрок изображение профиля.

  - `custom_parameters.pvp_activity` (boolean)
    Участвует ли игрок в битвах PvP (Player(s) versus player(s); игрок против игрока).

  - `custom_parameters.registration_date` (string)
    Дата регистрации аккаунта согласно стандарту [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601).

  - `custom_parameters.session_time` (string)
    Период времени, который пользователь проводит в игре, согласно стандарту [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601).

  - `custom_parameters.social_networks_added` (boolean)
    Подключил ли игрок профили в социальных сетях.

  - `custom_parameters.total_bans` (integer)
    Количество банов игрока в чате/на форуме.

  - `custom_parameters.total_characters` (integer)
    Количество персонажей игрока.

  - `custom_parameters.total_clans` (integer)
    Количество кланов, в которых состоит игрок.

  - `custom_parameters.total_friends` (integer)
    Количество друзей игрока.

  - `custom_parameters.total_game_events` (integer)
    Количество внутриигровых событий, в которых участвовал игрок.

  - `custom_parameters.total_gifts` (integer)
    Количество подарков, отправленных или полученных игроком.

  - `custom_parameters.total_hours` (integer)
    Общее количество часов, проведенных в игре.

  - `custom_parameters.total_inventory_value` (number)
    Суммарная стоимость инвентаря во внутриигровой валюте.

  - `custom_parameters.total_sum` (number)
    Общая сумма платежей.

  - `custom_parameters.tutorial_completed` (boolean)
    Завершил ли игрок обучение в игре.

  - `custom_parameters.unlocked_achievements` (integer)
    Количество разблокированных достижений.

  - `custom_parameters.user_level` (integer)
    Уровень игрока, репутация или ранг.

  - `custom_parameters.win_rate` (integer)
    Рейтинг побед игрока.

  - `purchase` (object)
    Объект с информацией о заказе.

  - `purchase.is_lootbox` (boolean)
    Является ли товар лутбоксом.

  - `purchase.subscription` (object)
    Объект с данными о подписке.

  - `purchase.subscription.available_plans` (array)
    Массив с данными о планах подписок. Только планы из этого списка будут показаны в платежном интерфейсе.

  - `purchase.subscription.currency` (string)
    Валюта рекуррентного плана в заказе, на основе которой будут сделаны все расчеты.

  - `purchase.subscription.operation` (string)
    Тип операции, применяемой к плану подписки пользователя. Чтобы изменить план подписки, передайте в параметре значение change_plan. В параметре purchase.subscription.plan_id необходимо передать ID нового плана подписки.

  - `purchase.subscription.plan_id` (string)
    Внешний ID плана подписки. Вы можете найти этот параметр в Личном кабинете в разделе Subscriptions > Планы подписки.

  - `purchase.subscription.product_id` (string)
    ID рекуррентного продукта.

  - `purchase.subscription.trial_days` (integer)
    Количество дней пробного периода.

  - `settings` (object)
    Параметры для настройки процесса оплаты и платежного интерфейса для пользователя.

  - `settings.cancel_url` (string)
    URL-адрес страницы, на которую перенаправляется пользователь, когда нажимает кнопку закрытия платежного интерфейса до совершения платежа. Работает, только если вы настроили кнопку с помощью объектов settings.​ui.​desktop.​header или settings.​ui.​mobile. Если кнопка настроена, но URL-адрес страницы не передан в этом параметре, используется URL-адрес, указанный в параметре settings.return_url.

  - `settings.currency` (string)
    Предпочтительная валюта платежа. Используется трехбуквенное обозначение валюты согласно стандарту [ISO 4217](https://developers.xsolla.com/ru/doc/pay-station/references/supported-currencies/).

  - `settings.external_id` (string)
    ID транзакции в игре. Должен быть уникальным для каждого платежа пользователя. Изучите подробную информацию в документации.

  - `settings.language` (string)
    Язык интерфейса. Используется [двухбуквенное обозначение](https://developers.xsolla.com/ru/doc/pay-station/features/localization/) (в нижнем регистре).

  - `settings.mode` (string)
    Передайте значение sandbox, чтобы провести тестовые платежи. Обратите внимание, что URL для страницы оплаты будет https://sandbox-secure.xsolla.com.

  - `settings.payment_method` (integer)
    ID способа оплаты.

  - `settings.payment_widget` (string)
    Виджет оплаты. Принимает значения paybycash или giftcard. При передаче этого параметра пользователь перенаправляется на виджет Pay with Cash или Gift Cards.
    Enum: "paybycash", "giftcard"

  - `settings.project_id` (integer, required)
    ID игры в Xsolla. Вы можете найти этот параметр в Личном кабинете.

  - `settings.redirect_policy` (object)
    Настройки политики редиректа.

  - `settings.redirect_policy.delay` (integer)
    Задержка (в секундах), после которой пользователь автоматически перенаправляется на return URL.

  - `settings.redirect_policy.manual_redirection_action` (string)
    Действие, которое совершает платежный интерфейс, когда пользователь закрывает окно платежного интерфейса или нажимает кнопку Back to the Game. Может принимать значения redirect (по умолчанию) и postmessage. Если указано значение redirect, пользователь перенаправляется на URL-адрес, указанный в токене или в Личном кабинете. Если указано значение postmessage, при закрытии окна платежного интерфейса отправляется событие close, при нажатии Back to the Game — событие return.
    Enum: "redirect", "postmessage"

  - `settings.redirect_policy.redirect_button_caption` (string)
    Текст кнопки для ручного перенаправления.

  - `settings.redirect_policy.redirect_conditions` (string)
    Статус платежа, при котором пользователь перенаправляется на return URL. Принимает значение none, successful, successful_or_canсeled или any.
    Enum: "none", "successful", "successful_or_canceled", "any"

  - `settings.redirect_policy.show_redirect_countdown` (boolean)
    Отображать ли на странице со статусом платежа таймер обратного отсчета до перенаправления пользователя. Длительность отсчета определяется значением, переданным в параметре settings.redirect_policy.delay.

  - `settings.redirect_policy.status_for_manual_redirection` (string)
    Статус платежа, при котором появляется кнопка для возврата на return URL. Принимает значение none, successful, successful_or_canсeled или any.
    Enum: "none", "successful", "successful_or_canceled", "any"

  - `settings.return_url` (string)
    URL-адрес страницы, на которую пользователь будет перенаправлен после совершения платежа. Подробная информация о настройке редиректов приведена в документации.

  - `settings.ui` (object)
    Объект с настройками интерфейса.

  - `settings.ui.alternative_first_screen` (string)
    Альтернативный вид экрана платежного интерфейса при его открытии. Например, может отображать приоритетные способы оплаты.
    Enum: "apple-pay", "compact_list"

  - `settings.ui.apple_pay_quick_payment_button` (boolean)
    Отображать ли кнопку для быстрой оплаты с помощью Apple Pay в верхней части 
платежного интерфейса, если этот способ оплаты поддерживается на устройстве 
пользователя. true по умолчанию. Если передано значение false, Apple Pay 
отображается в списке способов оплаты в соответствии с алгоритмом [PayRank](/ru/doc/pay-station/how-to/how-to-manage-top-payment-methods/).


ПримечаниеНа мобильных Android-устройствах, а также на любых других, где сервис Apple Pay недоступен, этот способ оплаты будет скрыт из списка вне зависимости от значения параметра.

  - `settings.ui.components` (object)
    Объект с данными настройки пунктов меню.

  - `settings.ui.components.subscriptions` (object)
    Объект с данными настройки меню подписок.

  - `settings.ui.components.subscriptions.hidden` (boolean)
    Должна ли вкладка отображаться в меню.

  - `settings.ui.components.subscriptions.order` (integer)
    Место вкладки в меню.

  - `settings.ui.components.virtual_currency` (object)
    Объект с данными настройки меню виртуальной валюты.

  - `settings.ui.components.virtual_currency.custom_amount` (boolean)
    Возможность ввода произвольного количества виртуальной валюты в интерфейсе оплаты.

  - `settings.ui.components.virtual_currency.hidden` (boolean)
    Должна ли вкладка отображаться в меню.

  - `settings.ui.components.virtual_currency.order` (integer)
    Место вкладки в меню.

  - `settings.ui.components.virtual_items` (object)
    Объект с данными настройки меню предметов.

  - `settings.ui.components.virtual_items.hidden` (boolean)
    Должна ли вкладка отображаться в меню.

  - `settings.ui.components.virtual_items.order` (integer)
    Место вкладки в меню.

  - `settings.ui.components.virtual_items.selected_group` (string)
    Группа, которая будет выбрана при открытии вкладки.

  - `settings.ui.components.virtual_items.selected_item` (string)
    Предмет, который будет выбран при открытии вкладки. Должен быть передан артикул предмета.

  - `settings.ui.currency_format` (string)
    Передайте значение code, чтобы в платежном интерфейсе отображалось трехбуквенное обозначение валюты по [ISO 4217](https://developers.xsolla.com/ru/doc/pay-station/references/supported-currencies/). По умолчанию вместо трехбуквенного обозначения валюты отображается значок валюты.

  - `settings.ui.desktop` (object)
    Объект с данными настроек для desktop-версии.

  - `settings.ui.desktop.header` (object)
    Объект с настройками header.

  - `settings.ui.desktop.header.close_button` (boolean)
    Показывать ли кнопку закрытия платежного интерфейса. Нажатие на кнопку закрывает платежный интерфейс и перенаправляет пользователя на URL-адрес, указанный в параметре settings.cancel_url. Если в нем не передан URL-адрес, пользователь перенаправляется на URL-адрес, указанный в параметре settings.return_url.

  - `settings.ui.desktop.header.close_button_icon` (string)
    Значок кнопки Закрыть в платежном интерфейсе.
    Enum: "arrow", "cross"

  - `settings.ui.desktop.header.is_visible` (boolean)
    Должен ли header отображаться на странице оплаты.

  - `settings.ui.desktop.header.type` (string)
    Внешний вид header. Может принимать значения compact (название игры и ID пользователя не будут показываться в header) или normal.
    Enum: "compact", "normal"

  - `settings.ui.desktop.header.visible_logo` (boolean)
    Если true, логотип будет отображаться в хедере. Чтобы загрузить изображение, откройте проект в [Личном кабинете](https://publisher.xsolla.com/) и перейдите в раздел Pay Station > Настройки.

  - `settings.ui.desktop.header.visible_name` (boolean)
    Должно ли название игры отображаться в header.

  - `settings.ui.desktop.header.visible_purchase` (boolean)
    Должно ли описание покупки (purchase.description.value) отображаться в header, по умолчанию true.

  - `settings.ui.desktop.subscription_list` (object)
    Объект с данными настройки списка подписок.

  - `settings.ui.desktop.subscription_list.description` (string)
    Здесь вы можете передать текст про подписки. Текст появится перед списком рекуррентных планов в интерфейсе оплаты.

  - `settings.ui.desktop.subscription_list.display_local_price` (boolean)
    Если значение true и если локальная валюта пользователя отличается от базовой валюты плана, пользователь будет видеть две цены: цену в локальной валюте и цену в базовой валюте плана.

  - `settings.ui.gp_quick_payment_button` (boolean)
    Расположение способа оплаты с помощью Google Pay. Если передано значение true, кнопка для быстрой оплаты с помощью Google Pay отображается в верхней части платежного интерфейса вне зависимости от устройства и браузера пользователя. Если передано значение false, Google Pay отображается в списке способов оплаты в соответствии с алгоритмом [PayRank](/ru/doc/pay-station/how-to/how-to-manage-top-payment-methods/). Если параметр не передан, Google Pay отображается в верхней части платежного интерфейса на любых устройствах и браузерах пользователя, кроме Safari — в Safari он отображается в списке способов оплаты.

  - `settings.ui.header` (object)

  - `settings.ui.header.visible_virtual_currency_balance` (boolean)
    Должен ли этот элемент быть видимым в интерфейсе оплаты. true по умолчанию.

  - `settings.ui.is_cart_open_by_default` (boolean)
    Отображение в платежном интерфейсе списка товаров корзины и финансовой информации. Если передано значение true, информация отображается в развернутом виде. Если передано значение false (по умолчанию) или параметр не передан, информация отображается в свернутом виде.

  - `settings.ui.is_independent_windows` (boolean)
    Осуществляется ли переход из встроенного браузера лаунчера (WebView) во внешний браузер для совершения покупки. false по умолчанию.

  - `settings.ui.is_language_selector_hidden` (boolean)
    Скрыт ли на странице оплаты переключатель языков. Если передано значение false (по умолчанию), переключатель отображается.

  - `settings.ui.is_payment_methods_list_mode` (boolean)
    Отображается ли список способов оплаты, доступных в стране игрока, при открытии платежного интерфейса. ​​Если передано значение false (по умолчанию), отображается способ оплаты, переданный в параметре settings.payment_method или способ, выбранный [алгоритмом PayRank](https://developers.xsolla.com/ru/solutions/payments/payment-ui-management/top-payment-methods-management/).

  - `settings.ui.is_prevent_external_link_open` (boolean)
    Отключение перехода по внешним ссылкам, по умолчанию false. При нажатии на внешнюю ссылку отправляется событие external-link-open с помощью механизма postMessage. В параметре url передается адрес, по которому выполняется переход.

  - `settings.ui.is_search_field_hidden` (boolean)
    Показывать ли в платежном интерфейсе строку поиска способов оплаты. Если передано значение true, строка поиска скрыта. false по умолчанию.

  - `settings.ui.is_show_close_widget_warning` (boolean)
    Показывать ли предупреждение об обработке транзакции при наведении на значок × перед закрытием страницы оплаты. Если передано значение false или параметр не передан, предупреждение не показывается. По умолчанию true.

  - `settings.ui.is_three_ds_independent_windows` (boolean)
    Открывать ли проверку 3-D Secure в новом окне браузера. Если используется политика безопасности контента (Content Security Policy, CSP), передайте значение true.

  - `settings.ui.layout` (string)
    Расположение основных элементов платежного интерфейса. Вы можете открыть платежный интерфейс внутри вашей игры и/или поменять местами колонки с информацией о заказе и способах оплаты. Подробная информация представлена в [инструкции по кастомизации](https://developers.xsolla.com/ru/doc/pay-station/features/ui-theme-customization/#pay_station_ui_theme_customization_layout).
    Enum: "embed", "column_reverse", "embed_column_reverse"

  - `settings.ui.mobile` (object)

  - `settings.ui.mobile.header` (object)

  - `settings.ui.mobile.header.close_button` (boolean)
    Показывать ли кнопку закрытия платежного интерфейса в мобильной версии. Нажатие на кнопку закрывает платежный интерфейс и перенаправляет пользователя на URL-адрес, указанный в параметре settings.cancel_url. Если в нем не передан URL-адрес, пользователь перенаправляется на URL-адрес, указанный в параметре settings.return_url.

  - `settings.ui.mobile.header.close_button_icon` (string)
    Значок кнопки Закрыть в платежном интерфейсе.
    Enum: "arrow", "cross"

  - `settings.ui.mode` (string)
    Режим отображения платежного интерфейса для управления сохраненными способами 
оплаты. Может принимать значение user_account или не передаваться. В режиме 
управления сохраненными способами оплаты пользователю доступно только 
переключение языка, добавление и удаление способов оплаты.


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

  - `settings.ui.theme` (string)
    Тема платежного интерфейса. Может принимать значения 63295a9a2e47fab76f7708e1 для светлой темы (по умолчанию) или 63295aab2e47fab76f7708e3 для темной темы. Вы также можете [создать собственную тему](https://developers.xsolla.com/ru/doc/pay-station/features/ui-theme-customization/#pay_station_ui_theme_customization_in_token) и передать ID темы в этом параметре.
    Enum: "63295a9a2e47fab76f7708e1", "63295aab2e47fab76f7708e3"

  - `settings.ui.user_account` (object)
    Объект с данными об аккаунте пользователя.

  - `settings.ui.user_account.payment_accounts` (object)
    Раздел Сохраненные способы.

  - `settings.ui.user_account.payment_accounts.enable` (boolean)
    Отображать ли в платежном интерфейсе значок карандаша для перехода к редактированию сохраненных способов оплаты. По умолчанию true.

  - `settings.ui.user_account.payment_accounts.order` (integer)
    Расположение раздела в раскрывающемся меню в платежном интерфейсе. Обязательный, если передается settings.ui.user_account.payment_accounts.enable.

  - `user` (object)
    Объект с информацией о пользователе.

  - `user.age` (integer)
    Возраст пользователя.

  - `user.attributes` (object)
    Объект с данными об атрибутах пользователя, необходимых для фильтрации списка предметов. Параметры передаются в json хэше парами ключ-значение.

  - `user.country` (object)

  - `user.country.allow_modify` (boolean)
    Может ли пользователь изменить страну на странице оплаты. Если в токене передан параметр country.value, значение по умолчанию — false.

  - `user.country.value` (string)
    Используется двухбуквенное обозначение страны согласно стандарту [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).

  - `user.email` (object)
    Параметр user.email используется при построении моделей антифрода и положительно влияет на конверсию платежей. Передача параметра является обязательным требованием Xsolla и платежных систем. Если параметр не передан в запросе, на платежной форме появляется обязательное поле для ввода email-адреса. Пользователь получает чек о покупке на email-адрес, который был передан в параметре или указан в платежной форме.

  - `user.email.allow_modify` (boolean)
    Может ли пользователь указать свой email-адрес на странице оплаты. Если в токене передан параметр user.email.value, значение по умолчанию — false.

  - `user.email.value` (string, required)
    Email-адрес пользователя. Должен быть валидным в соответствии с протоколом [RFC 822](https://www.w3.org/Protocols/rfc822/#z8).

  - `user.id` (object, required)

  - `user.id.value` (string, required)
    Уникальный ID пользователя в игре, который хранится на вашей стороне. Убедитесь, что указываете существующий ID пользователя. При возникновении ошибок изучите [ответы на частые вопросы](/ru/doc/pay-station/references/faq/#faq_validation).

  - `user.is_legal` (boolean)
    Является ли пользователь юридическим лицом.

  - `user.legal` (object)
    Объект с реквизитами юридического лица. Объект и все его параметры являются обязательными, если в user.is_legal передано значение true.

  - `user.legal.address` (string)
    Полный юридический адрес.

  - `user.legal.country` (string)
    Страна регистрации. Используется двухбуквенное обозначение страны согласно стандарту [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).

  - `user.legal.name` (string)
    Полное юридическое наименование.

  - `user.legal.vat_id` (string)
    Индивидуальный идентификатор налогоплательщика.

  - `user.name` (object)

  - `user.name.allow_modify` (boolean)
    Может ли пользователь указать свое имя на странице оплаты. Если в токене передан параметр user.name.value, значение по умолчанию — false.

  - `user.name.value` (string)
    Никнейм пользователя.

  - `user.phone` (object,null)

  - `user.phone.value` (string)
    Номер телефона пользователя.

  - `user.public_id` (object)

  - `user.public_id.value` (string)
    Параметр позволяет однозначно идентифицировать пользователя, а также, в отличие от user ID, известен пользователю (адрес электронной почты, никнейм, и т. д.). Параметр может использоваться при оплате покупки вне игрового магазина (например, кнопка игры в терминалах оплаты).

  - `user.steam_id` (object)

  - `user.steam_id.value` (string)
    Steam ID пользователя.

  - `user.tracking_id` (object)

  - `user.tracking_id.value` (string)
    Уникальный ID пользователя — используется для проведения рекламных кампаний. Может содержать цифры и латинские буквы.

  - `user.utm` (object)
    Объект с данными о характеристиках трафика.

  - `user.utm.utm_campaign` (string)
    Название кампании. В данный параметр следует указывать транслитерированное или переведенное на английский язык название кампании.

  - `user.utm.utm_content` (string)
    Содержание кампании.

  - `user.utm.utm_medium` (string)
    Канал трафика (контекстная реклама, медийная реклама, email-рассылка).

  - `user.utm.utm_source` (string)
    Источник трафика

  - `user.utm.utm_term` (string)
    Ключевое слово кампании. При использовании этого параметра в статистике будут собираться данные по тем ключевым словам, которые используются для таргетинга вашей рекламной кампании (а не по поисковым запросам). В Google Analytics содержимое метки utm_term попадает в единый отчет с поисковыми запросами.

## Response 200 fields (application/json):

  - `token` (string)

## Response 422 fields (application/json):

  - `extended_message` (object)

  - `extended_message.global_errors` (array)

  - `extended_message.property_errors` (object)
    Объект содержит названия параметров с описанием ошибки.

  - `http_status_code` (integer)

  - `message` (string)

  - `request_id` (string)


