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

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

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

By default, the token lifetime is 24 hours. If you want to change this value, 
contact your Customer Success Manager or send an email to csm@xsolla.com. The new value will be enabled 
for all your company’s projects created in the account.


ВниманиеТокен, полученный в результате вызова этого метода, используется только для авторизации других запросов. Вы можете использовать этот токен для открытия платежного интерфейса, если у вас подключен продукт 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)
    External ID of the subscription plan. Can be found in your account in the Subscriptions > Subscription plans section.

  - `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)
    Game’s Xsolla ID. Can be found in the [account](/ru/api/pay-station/business-accounts/).

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

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

  - `settings.redirect_policy.manual_redirection_action` (string)
    Pay Station behavior triggered by the user clicking the close button or the Back to the Game button. Can be redirect (by default) and postmessage. If set to redirect, a user is redirected to the URL passed in the token or specified in the account. If set to postmessage, a user is not redirected to other pages. Clicking the close icon initiates sending the close event, and clicking the Back to the Game button — the return event.
    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)
    If true, the logo is displayed in the header. To upload the image, open your project in the [account](/ru/api/pay-station/business-accounts/) and go to the Payments > Payment interface section.

  - `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)


