# Создание платежного токена для покупки

Генерирует заказ и платежный токен для него. Заказ генерируется на основе товаров, переданных в теле запроса.

Чтобы открыть платежный интерфейс в новом окне, воспользуйтесь следующей ссылкой: https://secure.xsolla.com/paystation4/?token={token}, где {token} — полученный токен.

Для целей тестирования используйте этот URL-адрес: https://sandbox-secure.xsolla.com/paystation4/?token={token}.

Внимание
   
   Для корректной работы метода требуется передать либо параметр  user.country.value (код страны), либо заголовок  X-User-Ip (IPv4-адрес пользователя, если страна неизвестна). Переданные данные используются для определения валюты оплаты в Xsolla. IPv6-адреса не поддерживаются.  Выбранная валюта используется для оплаты в платежном интерфейсе Xsolla.

Endpoint: POST /v3/project/{project_id}/admin/payment/token
Version: 2.0.0
Security: basicAuth

## Path parameters:

  - `project_id` (integer, required)
    ID проекта. Вы можете найти этот параметр в Личном кабинете рядом с названием проекта, а также в адресной строке браузера при работе с проектом. URL-адрес имеет следующий формат: https://publisher.xsolla.com//projects/.
    Example: 44056

## Request fields (application/json):

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

  - `user` (object, required)

  - `user.id` (object, required)

  - `user.id.value` (string)
    ID пользователя. При тестировании вы можете передать в параметре любые символы. Для приема реальных платежей передайте в параметре ID пользователя из вашей системы. Этот ID будет передаваться в вебхуке [](https://developers.xsolla.com/ru/webhooks/operation/user-validation/).

  - `user.name` (object)

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

  - `user.email` (object)

  - `user.email.value` (string)
    Email-адрес пользователя. Должен быть валидным в соответствии с протоколом RFC 822.

  - `user.country` (object)

  - `user.country.value` (string)
    Двухбуквенный код страны в верхнем регистре согласно стандарту [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2). Параметр обязательный, если в заголовке X-User-Ipне передан IP-адрес. Список стран, поддерживаемых Xsolla, приведен [в документации](https://developers.xsolla.com/ru/doc/shop-builder/references/supported-countries/). Пример: country=US
    Example: "US"

  - `user.country.allow_modify` (boolean)
    Может ли пользователь изменить страну в платежном интерфейсе.

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

  - `user.phone` (object)

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

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

  - `user.phone.hidden` (boolean)

  - `user.tracking_id` (object)

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

  - `user.steam_id` (object)

  - `user.steam_id.value` (string, required)
    Steam ID.

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

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

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

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

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

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

  - `purchase` (object, required)

  - `purchase.items` (array, required)

  - `purchase.items.sku` (string, required)
    Уникальный ID товара. Артикул может содержать только строчные и заглавные латинские буквы, цифры, точки, тире и подчеркивания.

ВниманиеЕсли вы хотите продать несколько единиц одного товара, передайте необходимое количество в параметре purchase.items[].quantity. Дублирование артикулов в массиве не поддерживается — при создании токена будет учтен только первый переданный объект. Ошибка при этом не возвращается.
    Example: "t-shirt"

  - `purchase.items.quantity` (number, required)
    Количество товара.
    Example: 2

  - `promo_code` (string)
    Уникальный код, чувствительный к регистру. Содержит буквы и цифры.

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

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

  - `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.desktop` (object)
    Объект с настройками интерфейса для настольной версии.

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

  - `settings.ui.desktop.header.is_visible` (boolean)
    Показывать ли хедер в платежном интерфейсе.

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

  - `settings.ui.desktop.header.visible_name` (boolean)
    Показывать ли в хедере название проекта.

  - `settings.ui.desktop.header.visible_purchase` (boolean)
    Показывать ли в хедере описание покупки (purchase.description.value). По умолчанию true.

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

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

  - `settings.ui.mode` (string)
    Платежный интерфейс в режиме Личного кабинета. Принимает значение user_account. Header содержит только навигационное меню Личного кабинета; исключается возможность выбора предмета и оплата покупки; режим Личного кабинета доступен только в desktop-режиме.
    Enum: "user_account"

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

  - `settings.ui.user_account.payment_accounts` (object)
    Страница Сохраненные платежные аккаунты.

  - `settings.ui.user_account.payment_accounts.enable` (boolean, required)
    Показывать ли вкладку в меню. По умолчанию false.

  - `settings.ui.user_account.info` (object)
    Страница Мой аккаунт.

  - `settings.ui.user_account.info.enable` (boolean, required)
    Показывать ли вкладку в меню. По умолчанию false.

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

  - `settings.ui.user_account.subscriptions` (object)
    Страница Управление подписками.

  - `settings.ui.user_account.subscriptions.enable` (boolean, required)
    Показывать ли вкладку в меню. По умолчанию false.

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

  - `settings.ui.header` (object)

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

  - `settings.ui.mobile` (object)

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

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

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

  - `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_independent_windows` (boolean)
    Осуществляется ли переход из встроенного браузера лаунчера (WebView) во внешний браузер для совершения покупки.

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

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

  - `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.is_three_ds_independent_windows` (boolean)
    Откроется ли проверка 3-D Secure в новом окне браузера. Если в вашей программе настройки применяется политика безопасности содержимого (CSP), установите значение true.

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

  - `settings.currency` (string)
    Предпочитаемая валюта платежа. Трехбуквенный код валюты в соответствии с [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217). Список валют, поддерживаемых Xsolla, [приведен в документации](https://developers.xsolla.com/ru/doc/pay-station/references/supported-currencies/).

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

  - `settings.external_id` (string)
    External ID транзакции.

  - `settings.payment_method` (integer)
    ID платежного метода. Влияет на отображение валюты в платежном интерфейсе, так как некоторые платежные методы могут поддерживать только определенные валюты.

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

  - `settings.redirect_policy` (object)

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

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

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

  - `settings.redirect_policy.redirect_button_caption` (string)
    Локализованные надписи на кнопке редиректа.
    Example: "Text button"

  - `custom_parameters` (object,null)
    Ваши пользовательские параметры представлены в виде допустимого набора пар ключ-значение в формате JSON.
Вы можете передать дополнительные параметры через это поле для настройки фильтров защиты от мошенничества. [Смотрите документацию Pay Station](https://developers.xsolla.com/ru/doc/pay-station/features/antifraud/).

## Response 201 fields (application/json):

  - `token` (string)
    Платежный токен.

  - `order_id` (integer)
    ID заказа.
    Example: 1

## Response 401 fields (application/json):

  - `statusCode` (integer)
    Example: 401

  - `errorCode` (integer)
    Example: 1020

  - `errorMessage` (string)
    Example: "[0401-1020]: Error in Authentication method occurred"

## Response 422 fields (application/json):

  - `statusCode` (number)
    Код статуса ответа.
    Example: 422

  - `errorCode` (number)
    Код ошибки.
    Example: 1102

  - `errorMessage` (string)
    Удобочитаемое сообщение об ошибке.
    Example: "[0401-1102]: Unprocessable Entity. The property `external_id` is required"

  - `transactionId` (string)
    Уникальный ID запроса.
    Example: "da145238620011eb8e24fe6913ff226a"


