Pay Station API v1.0

Введение

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

Базовый URL: https://api.xsolla.com.

Открытие платежного интерфейса

Команда Иксоллы создала виджет для упрощения интеграции платежного интерфейса на вашем сайте. Скрипт виджета доступен по ссылке. Используйте этот URL для загрузки скрипта на вашу страницу. Более подробная информация доступна в нашем проекте на Github.

Список параметров для инициализации виджета:

ПараметрТипОписание
access_token
stringТокен, полученный по API. Обязательный.
sandbox
booleanПередайте true для тестирования. Будет использоваться URL sandbox-secure.xsolla.com вместо secure.xsolla.com.
lightbox
objectОбъект со списком настроек, доступных в случае открытия в lightbox (для полноэкранной версии).
lightbox.width
stringШирина lightbox. При значении null соответствует ширине платежного интерфейса. Значение по умолчанию null.
lightbox.height
stringВысота lightbox. Значение по умолчанию 100%. Если значение null, высота lightbox соответствует высоте платежного интерфейса.
lightbox.zIndex
integerСвойство, отвечающее за положение объекта, по умолчанию 1000.
lightbox.overlayOpacity
integerНепрозрачность верхнего слоя (от 0 до 1), по умолчанию .6.
lightbox.overlayBackground
stringФон для верхнего слоя, по умолчанию #000000.
lightbox.modal
booleanМожно ли закрыть lightbox, по умолчанию false.
lightbox.closeByClick
booleanДолжен ли закрываться lightbox при клике на верхний слой, по умолчанию true.
lightbox.closeByKeyboard
booleanДолжен ли закрываться lightbox при нажатии ESC, по умолчанию true.
lightbox.contentBackground
stringФон фрейма, по умолчанию #ffffff. Обратите внимание, что настройка влияет только на фон фрейма lightbox и не меняет фон окна платежного интерфейса.
lightbox.contentMargin
stringОтступ вокруг фрейма, по умолчанию 10px.
lightbox.spinner
stringТип прелоадера, может принимать значение xsolla или round, по умолчанию xsolla.
lightbox.spinnerColor
stringЦвет прелоадера.
childWindow
objectНастройки дочернего окна, в котором открывается платежный интерфейс. Работает для мобильной версии.
childWindow.target
stringСвойство, определяющее, где должно быть открыто дочернее окно, может принимать значения _blank, _self, _parent, по умолчанию _blank.

Скрипт позволяет вам отслеживать события, происходящие в платежном интерфейсе. В зависимости от типа события вы можете выполнять различные действия на вашей странице.

Список событий:

ПараметрОписание
initИнициализация виджета.
openОткрытие виджета.
loadСобытие после загрузки платежного интерфейса.
closeСобытие после закрытия платежного интерфейса.
statusСобытие, когда пользователь попадает на страницу статуса.
status-invoiceСобытие, когда пользователь попадает на страницу статуса, но платеж еще не завершен.
status-deliveringСобытие, когда пользователь попадает на страницу статуса, платеж завершен, мы прислали оповещение о платеже.
status-doneСобытие, когда пользователь попадает на страницу статуса, платеж успешно зачислен.
status-troubledСобытие, когда пользователь попадает на страницу статуса, но платеж не прошел.

Если вы хотите самостоятельно открывать платежный интерфейс, используйте ссылку https://secure.xsolla.com/paystation3/?access_token=ACCESS_TOKEN.

Note: Для открытия платежного интерфейса необходимо использовать ссылку с префиксом https://.

Для тестирования используйте URL https://sandbox-secure.xsolla.com/paystation3/?access_token=ACCESS_TOKEN.

Notice: Параметр access_token содержит приватную информацию о пользователе. Убедитесь, что вы получаете этот параметр только при server-server взаимодействии.

Токен

Для обеспечения безопасности проведения платежа API Иксоллы использует токен, который содержит внутри себя платежные параметры, вместо прямого получения данных через HTTP GET запрос на страницу оплаты. Перед открытием страницы оплаты вы должны получить новый токен. Время жизни токена — 24 часа.

Получение токена

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

Notice: Данный метод API не предназначен для использования при высоких нагрузках. При большом количестве запросов может применяться ограничение трафика. Чтобы узнать правила ограничения трафика для данного метода API, обратитесь к аккаунт-менеджеру проекта.

HTTP-ЗАПРОС

Copy
Full screen
Small screen
POST https://api.xsolla.com/merchant/v2/merchants/{merchant_id}/token

ПараметрТипОписание
user
objectОбъект с информацией о пользователе.
user.id
objectОбъект с данными об ID пользователя. Обязательный.
user.id.value
stringID пользователя.
user.name
objectОбъект с информацией о нике пользователя.
user.name.value
stringНик пользователя.
user.age
integerВозраст пользователя.
user.email
objectEmail пользователя (объект). Параметр user.email используется при построении моделей антифрода и проведения платежей. Его передача является обязательным требованием Иксоллы и платежных систем. Отсутствие этого параметра может влиять на конверсию платежей. Обязательный.
user.email.value
stringEmail пользователя. Должен быть валидным в соответствии с протоколом RFC 822. Обязательный.
user.phone
objectОбъект с информацией о телефоне пользователя.
user.phone.value
stringНомер телефона пользователя.
user.country
objectОбъект с информацией о стране пользователя.
user.country.value
stringИспользуется двухбуквенное обозначение страны согласно стандарту ISO 3166-1 alpha-2.
user.country.allow_modify
booleanМожет ли пользователь изменить страну на странице оплаты. false по умолчанию.
user.attributes
objectОбъект с данными об атрибутах пользователя, необходимых для фильтрации списка предметов. Параметры передаются в json хэше парами ключ-значение.
user.steam_id
objectОбъект с данными о Steam ID пользователя.
user.steam_id.value
stringSteam ID пользователя.
user.tracking_id
objectОбъект с данными о Tracking ID пользователя.
user.tracking_id.value
stringУникальный Tracking ID (используется для проведения рекламных кампаний).
user.public_id.value
stringПараметр позволяет однозначно идентифицировать пользователя, а также, в отличие от user ID, известен пользователю (адрес электронной почты, никнейм, и т.д.). Параметр может использоваться при оплате покупки вне игрового магазина (например, кнопка игры в терминалах оплаты).
user.utm
objectОбъект с данными о характеристиках трафика.
user.utm.utm_source
stringИсточник трафика
user.utm.utm_medium
stringКанал трафика (контекстная реклама, медийная реклама, email-рассылка).
user.utm.utm_campaign
stringНазвание кампании. В данный параметр следует указывать транслитерированное или переведенное на английский язык название кампании.
user.utm.utm_term
stringКлючевое слово кампании. При использовании этого параметра в статистике будут собираться данные по тем ключевым словам, которые используются для таргетинга вашей рекламной кампании (а не по поисковым запросам). В Google Analytics содержимое метки utm_term попадает в единый отчет с поисковыми запросами.
user.utm.utm_content
stringСодержание кампании.
booleanЯвляется ли пользователь юридическим лицом.
objectОбъект с реквизитами юридического лица. Объект и все его параметры являются обязательными, если в user.is_legal передано значение true.
stringПолное юридическое наименование.
stringПолный юридический адрес.
stringИндивидуальный идентификатор налогоплательщика.
stringСтрана регистрации. Используется двухбуквенное обозначение страны согласно стандарту ISO 3166-1 alpha-2.
settings
objectОбъект, содержащий настройки проекта.
settings.external_id
stringВнешний ID транзакции.
settings.project_id
integerID игры в Иксолле. Вы можете найти этот параметр в Личном кабинете. Обязательный.
settings.language
stringЯзык интерфейса. Используется двухбуквенное обозначение (в нижнем регистре).
settings.return_url
stringПользователь будет перенаправлен на данную страницу после совершения платежа. Параметры user_id, foreigninvoice, invoice_id и status будут автоматически добавлены к ссылке.
settings.redirect_policy
objectНастройки политики редиректа (объект).
settings.redirect_policy.redirect_conditions
stringСтатус платежа, при котором пользователь перенаправляется на return URL. Принимает значение none, successful, successful_or_canceled или any.
settings.redirect_policy.delay
integerЗадержка (в секундах), после которой пользователь автоматически перенаправляется на return URL.
settings.redirect_policy.status_for_manual_redirection
stringСтатус платежа, при котором появляется кнопка для возврата на return URL. Принимает значение none, successful, successful_or_canceled или any.
settings.redirect_policy.redirect_button_caption
stringТекст кнопки для ручного перенаправления.
settings.currency
stringПредпочтительная валюта платежа. Используется трехбуквенное обозначение валюты согласно стандарту ISO 4217.
settings.mode
stringПередайте значение sandbox, чтобы провести тестовые платежи. Обратите внимание, что URL для страницы оплаты будет https://sandbox-secure.xsolla.com.
settings.payment_method
integerID способа оплаты.
settings.payment_widget
stringВиджет оплаты. Принимает значения paybycash или giftcard. При передаче этого параметра пользователь перенаправляется на виджет Pay with Cash или Gift Cards.
settings.ui
objectОбъект с настройками интерфейса.
settings.ui.theme
stringВнешний вид интерфейса оплаты. Может принимать значения default (по умолчанию) или default_dark.
settings.ui.size
stringРазмер платежного интерфейса. В зависимости от требуемых размеров платежного интерфейса, параметр может принимать следующие значения:
  • small: Наименьший размер платежного интерфейса. Используется в случаях, когда размеры окна строго ограничены (размер: 620 x 630)
  • medium: Рекомендуемый размер платежного интерфейса. Оптимален при открытии в lightbox (размер: 740 x 760)
  • large: желательно открывать в новом окне/вкладке (размер: 820 x 840)
settings.ui.version
stringТип устройства. Может принимать значения desktop (по умолчанию) или mobile.
settings.ui.desktop
objectОбъект с данными настроек для desktop-версии.
settings.ui.desktop.header
objectОбъект с настройками header.
settings.ui.desktop.header.is_visible
booleanДолжен ли header отображаться на странице оплаты.
booleanЕсли значение true, то логотип будет отображаться в header (необходимо сначала прислать файл с логотипом вашему менеджеру).
settings.ui.desktop.header.visible_name
booleanДолжно ли название игры отображаться в header.
settings.ui.desktop.header.visible_purchase
booleanДолжно ли описание покупки (purchase.description.value) отображаться в header, по умолчанию true.
settings.ui.desktop.header.type
stringВнешний вид header. Может принимать значения compact (название игры и ID пользователя не будут показываться в header) или normal.
settings.ui.desktop.header.close_button
booleanПоказывать ли кнопку Закрыть в настольной версии платежного интерфейса. Нажатие на кнопку закрывает платежный интерфейс и перенаправляет пользователя на адрес, указанный в параметре "settings.return_url. false по умолчанию.
settings.ui.desktop.subscription_list
objectОбъект с данными настройки списка подписок.
settings.ui.desktop.subscription_list.layout
stringШаблон списка. Принимает значения list (по умолчанию) или grid.
settings.ui.desktop.subscription_list.description
stringЗдесь вы можете передать текст про подписки. Текст появится перед списком рекуррентных планов в интерфейсе оплаты.
settings.ui.desktop.subscription_list.display_local_price
booleanЕсли значение true и если локальная валюта пользователя отличается от базовой валюты плана, пользователь будет видеть две цены: цену в локальной валюте и цену в базовой валюте плана.
settings.ui.desktop.virtual_item_list
objectОбъект с данными настройки списка предметов.
settings.ui.desktop.virtual_item_list.layout
stringШаблон списка. Принимает значения list (по умолчанию) или grid.
settings.ui.desktop.virtual_item_list.button_with_price
booleanЕсли значение true, то цена за предмет будет показана внутри кнопки. Если false, то цена будет слева от кнопки. false по умолчанию.
settings.ui.desktop.virtual_item_list.view
stringВывод списка групп виртуальных предметов либо в виде вертикального меню, либо над окном в виде горизонтального меню. Принимает значения horizontal_navigation или vertical (по умолчанию).
settings.ui.desktop.virtual_currency_list
objectОбъект с данными настройки списка пакетов виртуальной валюты.
settings.ui.desktop.virtual_currency_list.description
stringЗдесь вы можете передать текст про виртуальную валюту. Текст появится перед списком пакетов виртуальной валюты в интерфейсе оплаты.
settings.ui.desktop.virtual_currency_list.button_with_price
booleanЕсли значение true, то цена за предмет будет показана внутри кнопки. Если false, то цена будет слева от кнопки. false по умолчанию.
settings.ui.header.visible_virtual_currency_balance
booleanДолжен ли этот элемент быть видимым в интерфейсе оплаты. true по умолчанию.
settings.ui.mobile.mode
stringПользователь может совершить платеж только через сохраненные способы оплаты. Принимает значение saved_accounts.
settings.ui.mobile.header.close_button
booleanПоказывать ли кнопку Закрыть в мобильной версии платежного интерфейса. Нажатие на кнопку закрывает платежный интерфейс и перенаправляет пользователя на адрес, указанный в параметре settings.return_url. false по умолчанию.
booleanСкрывать или нет footer в мобильной версии платежного интерфейса.
settings.ui.license_url
stringСсылка на лицензионное соглашение.
settings.ui.components
objectОбъект с данными настройки пунктов меню.
settings.ui.components.virtual_items
objectОбъект с данными настройки меню предметов.
settings.ui.components.virtual_items.order
integerМесто вкладки в меню.
settings.ui.components.virtual_items.hidden
booleanДолжна ли вкладка отображаться в меню.
settings.ui.components.virtual_items.selected_group
stringГруппа, которая будет выбрана при открытии вкладки.
settings.ui.components.virtual_items.selected_item
stringПредмет, который будет выбран при открытии вкладки. Должен быть передан артикул предмета.
settings.ui.components.virtual_currency
objectОбъект с данными настройки меню виртуальной валюты.
settings.ui.components.virtual_currency.custom_amount
booleanВозможность ввода произвольного количества виртуальной валюты в интерфейсе оплаты.
settings.ui.components.virtual_currency.order
integerМесто вкладки в меню.
settings.ui.components.virtual_currency.hidden
booleanДолжна ли вкладка отображаться в меню.
settings.ui.components.subscriptions
objectОбъект с данными настройки меню подписок.
settings.ui.components.subscriptions.order
integerМесто вкладки в меню.
settings.ui.components.subscriptions.hidden
booleanДолжна ли вкладка отображаться в меню.
settings.ui.mode
stringПлатежный интерфейс в режиме Личного кабинета. Принимает значение user_account. Header содержит только навигационное меню Личного кабинета; исключается возможность выбора предмета и оплата покупки; режим Личного кабинета доступен только в desktop-режиме.
settings.ui.user_account
objectОбъект с данными об аккаунте пользователя.
settings.ui.user_account.info
objectСтраница Мой аккаунт.
settings.ui.user_account.info.order
integerМесто вкладки в меню.
settings.ui.user_account.info.enable
booleanДолжна ли вкладка отображаться в меню. false по умолчанию.
settings.ui.user_account.history
objectСтраница 'История' пользователя.
settings.ui.user_account.history.order
integerМесто вкладки в меню.
settings.ui.user_account.history.enable
booleanДолжна ли вкладка отображаться в меню. false по умолчанию.
settings.ui.user_account.payment_accounts
objectСтраница Мои платежные аккаунты.
settings.ui.user_account.payment_accounts.order
integerМесто вкладки в меню.
settings.ui.user_account.payment_accounts.enable
booleanДолжна ли вкладка отображаться в меню. false по умолчанию.
settings.ui.user_account.subscriptions
objectСтраница Управление подписками.
settings.ui.user_account.subscriptions.order
integerМесто вкладки в меню.
settings.ui.user_account.subscriptions.enable
booleanДолжна ли вкладка отображаться в меню. false по умолчанию.
purchase
objectОбъект с информацией о заказе.
purchase.virtual_currency
objectОбъект с данными о виртуальной валюте.
purchase.virtual_currency.quantity
floatКоличество виртуальной валюты в заказе.
purchase.virtual_currency.currency
stringВалюта пакета виртуальной валюты, на основе которой будут сделаны все расчеты.
purchase.virtual_items
objectОбъект с данными о предметах.
purchase.virtual_items.currency
stringВалюта предмета в заказе, на основе которой будут сделаны все расчеты.
purchase.virtual_items.items
arrayМассив с данными о предмете.
purchase.virtual_items.items.sku
stringID предмета (артикул).
purchase.virtual_items.items.amount
integerКоличество этого предмета в заказе.
purchase.virtual_items.available_groups
arrayМассив с данными о группах предметов. Только предметы из указанных групп будут показаны в интерфейсе оплаты.
purchase.subscription
objectОбъект с данными о подписке.
purchase.subscription.plan_id
stringID рекуррентного плана.
purchase.subscription.operation
stringТип операции, применяемой к плану подписки пользователя. Чтобы изменить план подписки, передайте в параметре значение change_plan. В параметре purchase.subscription.plan_id необходимо передать ID нового плана подписки.
purchase.subscription.product_id
stringID рекуррентного продукта.
purchase.subscription.currency
stringВалюта рекуррентного плана в заказе, на основе которой будут сделаны все расчеты.
purchase.subscription.available_plans
arrayМассив с данными о планах подписок. Только планы из этого списка будут показаны в платежном интерфейсе.
purchase.subscription.trial_days
integerКоличество дней триального периода.
purchase.pin_codes
objectОбъект с данными о ключе.
purchase.pin_codes.currency
stringВалюта ключа в заказе, на основе которой будут сделаны все расчеты.
purchase.pin_codes.codes
arrayМассив с данными о ключах.
purchase.pin_codes.codes.digital_content
stringАртикул игры, настраивается в Личном кабинете.
purchase.pin_codes.codes.drm
stringDRM-платформа, на которой игра будет доступна. Может принимать значения steam, playstation, xbox, uplay, origin, drmfree, gog, epicgames, nintendo_eshop, discord_game_store или oculus. Пожалуйста, убедитесь, что нужная DRM-платформа настроена в Личном кабинете. Если значение не передано в токене, будет выбрана платформа, указанная пользователем в платежном интерфейсе.
purchase.pin_codes.upgrade
objectОбъект с информацией об апгрейде.
purchase.pin_codes.upgrade.id_user_history
integerID записи, содержащей данные о пользователе и пакетах, которыми он владеет.
purchase.pin_codes.upgrade.id
integerID апгрейда.
purchase.gift
objectОбъект с информацией о подарке.
purchase.gift.giver_id
stringID дарителя.
purchase.gift.message
stringСообщение от дарителя.
purchase.gift.hide_giver_from_receiver
stringПоказывать ли данные дарителя получателю подарка. true по умолчанию.
purchase.gift.friends
arrayМассив с данными о друзьях.
purchase.gift.friends.id
stringID получателя подарка.
purchase.gift.friends.name
stringНикнейм получателя подарка.
purchase.gift.friends.email
stringEmail получателя подарка.
purchase.coupon_code
objectОбъект с информацией о промокоде на скидку или бонусы при покупке.
purchase.coupon_code.value
stringЗначение промокода.
purchase.coupon_code.hidden
booleanСкрыть поле для ввода промокода в интерфейсе оплаты. false по умолчанию.
custom_parameters
objectВаши дополнительные параметры. Параметры передаются в json хеше парами ключ-значение.

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

Copy
Full screen
Small screen
{
    "extended_message": {
        "global_errors": [],
        "property_errors": {
            "settings.project_id": [
                "string value found, but an integer is required"
            ]
        }
    }
}

Copy
Full screen
Small screen
http
  • http
  • curl
  • php
  • C#
  • python
  • ruby
  • java
  • js
Запрос
POST https://api.xsolla.com/merchant/v1/merchants/{merchant_id}/token

Headers:
  Authorization: Basic <your_authorization_basic_key>
Content-Type: application/json

Body:
  {
  "purchase": {
    "virtual_currency": {
      "quantity": 100
    },
    "virtual_items": {
      "items": [
        {
          "amount": 1,
          "sku": "SKU01"
        }
      ]
    }
  },
  "settings": {
    "currency": "USD",
    "language": "en",
    "project_id": 16184,
    "ui": {
      "components": {
        "virtual_currency": {
          "custom_amount": true
        }
      },
      "desktop": {
        "virtual_item_list": {
          "button_with_price": true,
          "layout": "list"
        }
      },
      "size": "medium"
    }
  },
  "user": {
    "country": {
      "allow_modify": true,
      "value": "US"
    },
    "age": 19,
    "email": {
      "value": "john.smith@mail.com"
    },
    "id": {
      "value": "user_2"
    },
    "name": {
      "value": "John Smith"
    }
  }
}
curl --request POST \
  --url https://api.xsolla.com/merchant/v1/merchants/{merchant_id}/token \
  --header 'authorization: Basic <your_authorization_basic_key>' \
  --header 'content-type: application/json' \
  --data '{"user":{"id":{"value":"user_2"},"name":{"value":"John Smith"},"age":19,"email":{"value":"john.smith@mail.com"},"country":{"value":"US","allow_modify":true}},"settings":{"project_id":16184,"currency":"USD","language":"en","ui":{"size":"medium","desktop":{"virtual_item_list":{"layout":"list","button_with_price":true}},"components":{"virtual_currency":{"custom_amount":true}}}},"purchase":{"virtual_currency":{"quantity":100},"virtual_items":{"items":[{"sku":"SKU01","amount":1}]}}}'
<?php

$client = new http\Client;
$request = new http\Client\Request;

$body = new http\Message\Body;
$body->append('{"user":{"id":{"value":"user_2"},"name":{"value":"John Smith"},"age":19,"email":{"value":"john.smith@mail.com"},"country":{"value":"US","allow_modify":true}},"settings":{"project_id":16184,"currency":"USD","language":"en","ui":{"size":"medium","desktop":{"virtual_item_list":{"layout":"list","button_with_price":true}},"components":{"virtual_currency":{"custom_amount":true}}}},"purchase":{"virtual_currency":{"quantity":100},"virtual_items":{"items":[{"sku":"SKU01","amount":1}]}}}');

$request->setRequestUrl('https://api.xsolla.com/merchant/v1/merchants/{merchant_id}/token');
$request->setRequestMethod('POST');
$request->setBody($body);

$request->setHeaders(array(
  'authorization' => 'Basic <your_authorization_basic_key>',
  'content-type' => 'application/json'
));

$client->enqueue($request)->send();
$response = $client->getResponse();

echo $response->getBody();
var client = new RestClient("https://api.xsolla.com/merchant/v1/merchants/{merchant_id}/token");
var request = new RestRequest(Method.POST);
request.AddHeader("authorization", "Basic <your_authorization_basic_key>");
request.AddHeader("content-type", "application/json");
request.AddParameter("application/json", "{\"user\":{\"id\":{\"value\":\"user_2\"},\"name\":{\"value\":\"John Smith\"},\"age\":19,\"email\":{\"value\":\"john.smith@mail.com\"},\"country\":{\"value\":\"US\",\"allow_modify\":true}},\"settings\":{\"project_id\":16184,\"currency\":\"USD\",\"language\":\"en\",\"ui\":{\"size\":\"medium\",\"desktop\":{\"virtual_item_list\":{\"layout\":\"list\",\"button_with_price\":true}},\"components\":{\"virtual_currency\":{\"custom_amount\":true}}}},\"purchase\":{\"virtual_currency\":{\"quantity\":100},\"virtual_items\":{\"items\":[{\"sku\":\"SKU01\",\"amount\":1}]}}}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
import http.client

conn = http.client.HTTPSConnection("api.xsolla.com")

payload = "{\"user\":{\"id\":{\"value\":\"user_2\"},\"name\":{\"value\":\"John Smith\"},\"age\":19,\"email\":{\"value\":\"john.smith@mail.com\"},\"country\":{\"value\":\"US\",\"allow_modify\":true}},\"settings\":{\"project_id\":16184,\"currency\":\"USD\",\"language\":\"en\",\"ui\":{\"size\":\"medium\",\"desktop\":{\"virtual_item_list\":{\"layout\":\"list\",\"button_with_price\":true}},\"components\":{\"virtual_currency\":{\"custom_amount\":true}}}},\"purchase\":{\"virtual_currency\":{\"quantity\":100},\"virtual_items\":{\"items\":[{\"sku\":\"SKU01\",\"amount\":1}]}}}"

headers = {
    'content-type': "application/json",
    'authorization': "Basic <your_authorization_basic_key>"
    }

conn.request("POST", "/merchant/v1/merchants/{merchant_id}/token", payload, headers)

res = conn.getresponse()
data = res.read()

print(data.decode("utf-8"))
require 'uri'
require 'net/http'

url = URI("https://api.xsolla.com/merchant/v1/merchants/{merchant_id}/token")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE

request = Net::HTTP::Post.new(url)
request["content-type"] = 'application/json'
request["authorization"] = 'Basic <your_authorization_basic_key>'
request.body = "{\"user\":{\"id\":{\"value\":\"user_2\"},\"name\":{\"value\":\"John Smith\"},\"age\":19,\"email\":{\"value\":\"john.smith@mail.com\"},\"country\":{\"value\":\"US\",\"allow_modify\":true}},\"settings\":{\"project_id\":16184,\"currency\":\"USD\",\"language\":\"en\",\"ui\":{\"size\":\"medium\",\"desktop\":{\"virtual_item_list\":{\"layout\":\"list\",\"button_with_price\":true}},\"components\":{\"virtual_currency\":{\"custom_amount\":true}}}},\"purchase\":{\"virtual_currency\":{\"quantity\":100},\"virtual_items\":{\"items\":[{\"sku\":\"SKU01\",\"amount\":1}]}}}"

response = http.request(request)
puts response.read_body
OkHttpClient client = new OkHttpClient();

MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\"user\":{\"id\":{\"value\":\"user_2\"},\"name\":{\"value\":\"John Smith\"},\"age\":19,\"email\":{\"value\":\"john.smith@mail.com\"},\"country\":{\"value\":\"US\",\"allow_modify\":true}},\"settings\":{\"project_id\":16184,\"currency\":\"USD\",\"language\":\"en\",\"ui\":{\"size\":\"medium\",\"desktop\":{\"virtual_item_list\":{\"layout\":\"list\",\"button_with_price\":true}},\"components\":{\"virtual_currency\":{\"custom_amount\":true}}}},\"purchase\":{\"virtual_currency\":{\"quantity\":100},\"virtual_items\":{\"items\":[{\"sku\":\"SKU01\",\"amount\":1}]}}}");
Request request = new Request.Builder()
  .url("https://api.xsolla.com/merchant/v1/merchants/{merchant_id}/token")
  .post(body)
  .addHeader("content-type", "application/json")
  .addHeader("authorization", "Basic <your_authorization_basic_key>")
  .build();

Response response = client.newCall(request).execute();
var data = JSON.stringify({
  "user": {
    "id": {
      "value": "user_2"
    },
    "name": {
      "value": "John Smith"
    },
    "age": 19, 
    "email": {
      "value": "john.smith@mail.com"
    },
    "country": {
      "value": "US",
      "allow_modify": true
    }
  },
  "settings": {
    "project_id": 16184,
    "currency": "USD",
    "language": "en",
    "ui": {
      "size": "medium",
      "desktop": {
        "virtual_item_list": {
          "layout": "list",
          "button_with_price": true
        }
      },
      "components": {
        "virtual_currency": {
          "custom_amount": true
        }
      }
    }
  },
  "purchase": {
    "virtual_currency": {
      "quantity": 100
    },
    "virtual_items": {
      "items": [
        {
          "sku": "SKU01",
          "amount": 1
        }
      ]
    }
  }
});

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "https://api.xsolla.com/merchant/v1/merchants/{merchant_id}/token");
xhr.setRequestHeader("content-type", "application/json");
xhr.setRequestHeader("authorization", "Basic <your_authorization_basic_key>");

xhr.send(data);
Ответ
{
  "token": "eop57k1boA7nnYPtewZ6KEXJyJADEwRT"
}
{
  "token": "eop57k1boA7nnYPtewZ6KEXJyJADEwRT"
}
{
  "token": "eop57k1boA7nnYPtewZ6KEXJyJADEwRT"
}
{
  "token": "eop57k1boA7nnYPtewZ6KEXJyJADEwRT"
}
{
  "token": "eop57k1boA7nnYPtewZ6KEXJyJADEwRT"
}
{
  "token": "eop57k1boA7nnYPtewZ6KEXJyJADEwRT"
}
{
  "token": "eop57k1boA7nnYPtewZ6KEXJyJADEwRT"
}
{
  "token": "eop57k1boA7nnYPtewZ6KEXJyJADEwRT"
}

Список дополнительных параметров

Вы можете передавать в токене в объекте custom_parameters дополнительные параметры, которые могут использоваться для настройки антифрод-фильтров. Рекомендуемые параметры приведены в таблице ниже, при необходимости данный список можно расширить.

Посмотреть рецепт

ПараметрТипОписание
registration_date
stringДата регистрации аккаунта согласно стандарту ISO 8601.
total_hours
integerОбщее количество часов, проведенных в игре.
total_characters
integerКоличество персонажей игрока.
social_networks_added
booleanПодключил ли игрок профили в социальных сетях.
profile_image_added
booleanЗагрузил ли игрок изображение профиля.
active_date
stringДата последнего посещения согласно стандарту ISO 8601.
total_friends
integerКоличество друзей игрока.
additional_verification
booleanИспользует ли игрок дополнительные способы защиты аккаунта.
win_rate
integerРейтинг побед игрока.
last_change_password_date
stringДата последней смены пароля согласно стандарту ISO 8601.
chat_activity
booleanПишет ли игрок в чате.
forum_activity
booleanПишет ли игрок в форуме.
total_bans
integerКоличество банов игрока в чате/на форуме.
profile_completed
booleanДобавил ли игрок дополнительную информацию в профиль.
notifications_enabled
booleanПодписался ли игрок на рассылку уведомлений.
user_level
integerУровень игрока, репутация или ранг.
karma_points
integerКарма игрока.
total_sum
floatОбщая сумма платежей.
non_premium_currency
floatСумма непремиальной валюты игрока.
total_game_events
integerКоличество внутриигровых событий, в которых участвовал игрок.
total_gifts
integerКоличество подарков, отправленных или полученных игроком.
tutorial_completed
booleanЗавершил ли игрок обучение в игре.
completed_tasks
integerКоличество выполненных заданий.
items_used
booleanИспользует ли игрок купленные в игре предметы.
pvp_activity
booleanУчаствует ли игрок в PvP.
total_clans
integerКоличество кланов, в которых состоит игрок.
unlocked_achievements
integerКоличество разблокированных умений.
total_inventory_value
floatСуммарная стоимость инвентаря во внутриигровой валюте.
character_customized
booleanНастраивал ли игрок персонажа.
session_time
stringПериод времени, который пользователь проводит в игре, согласно стандарту ISO 8601.

Токенизация

Узнайте больше о настройке токенизации для вашего приложения в документации по продукту Платежи.

Список сохраненных платежных аккаунтов

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

HTTP-ЗАПРОС

Copy
Full screen
Small screen
GET https://api.xsolla.com/merchant/v2/projects/{project_id}/users/{user_id}/payment_accounts

ПараметрТипОписание
project_id
integerID проекта.
user_id
stringID пользователя.
Copy
Full screen
Small screen
http
  • http
  • curl
  • php
  • C#
  • python
  • ruby
  • java
  • js
Запрос
GET https://api.xsolla.com/merchant/v1/projects/{project_id}/users/{user_id}/payment_accounts

Headers:
  Authorization: Basic <your_authorization_basic_key>
curl --request GET \
  --url https://api.xsolla.com/merchant/v1/projects/{project_id}/users/{user_id}/payment_accounts \
  --header 'authorization: Basic <your_authorization_basic_key> '
<?php

$client = new http\Client;
$request = new http\Client\Request;

$request->setRequestUrl('https://api.xsolla.com/merchant/v1/projects/{project_id}/users/{user_id}/payment_accounts');
$request->setRequestMethod('GET');
$request->setHeaders(array(
  'authorization' => 'Basic <your_authorization_basic_key> '
));

$client->enqueue($request)->send();
$response = $client->getResponse();

echo $response->getBody();
var client = new RestClient("https://api.xsolla.com/merchant/v1/projects/{project_id}/users/{user_id}/payment_accounts");
var request = new RestRequest(Method.GET);
request.AddHeader("authorization", "Basic <your_authorization_basic_key> ");
IRestResponse response = client.Execute(request);
import http.client

conn = http.client.HTTPSConnection("api.xsolla.com")

headers = { 'authorization': "Basic <your_authorization_basic_key> " }

conn.request("GET", "/merchant/v1/projects/{project_id}/users/{user_id}/payment_accounts", headers=headers)

res = conn.getresponse()
data = res.read()

print(data.decode("utf-8"))
require 'uri'
require 'net/http'

url = URI("https://api.xsolla.com/merchant/v1/projects/{project_id}/users/{user_id}/payment_accounts")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE

request = Net::HTTP::Get.new(url)
request["authorization"] = 'Basic <your_authorization_basic_key> '

response = http.request(request)
puts response.read_body
OkHttpClient client = new OkHttpClient();

Request request = new Request.Builder()
  .url("https://api.xsolla.com/merchant/v1/projects/{project_id}/users/{user_id}/payment_accounts")
  .get()
  .addHeader("authorization", "Basic <your_authorization_basic_key> ")
  .build();

Response response = client.newCall(request).execute();
var data = null;

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("GET", "https://api.xsolla.com/merchant/v1/projects/{project_id}/users/{user_id}/payment_accounts");
xhr.setRequestHeader("authorization", "Basic <your_authorization_basic_key> ");

xhr.send(data);
Ответ
[
  {
    "id": 4612345,
    "name": "PP_saved_account",
    "payment_system": {
      "id": 24,
      "name": "PayPal"
    },
    "type": "paypal"
  }
]
[
  {
    "id": 4612345,
    "name": "PP_saved_account",
    "payment_system": {
      "id": 24,
      "name": "PayPal"
    },
    "type": "paypal"
  }
]
[
  {
    "id": 4612345,
    "name": "PP_saved_account",
    "payment_system": {
      "id": 24,
      "name": "PayPal"
    },
    "type": "paypal"
  }
]
[
  {
    "id": 4612345,
    "name": "PP_saved_account",
    "payment_system": {
      "id": 24,
      "name": "PayPal"
    },
    "type": "paypal"
  }
]
[
  {
    "id": 4612345,
    "name": "PP_saved_account",
    "payment_system": {
      "id": 24,
      "name": "PayPal"
    },
    "type": "paypal"
  }
]
[
  {
    "id": 4612345,
    "name": "PP_saved_account",
    "payment_system": {
      "id": 24,
      "name": "PayPal"
    },
    "type": "paypal"
  }
]
[
  {
    "id": 4612345,
    "name": "PP_saved_account",
    "payment_system": {
      "id": 24,
      "name": "PayPal"
    },
    "type": "paypal"
  }
]
[
  {
    "id": 4612345,
    "name": "PP_saved_account",
    "payment_system": {
      "id": 24,
      "name": "PayPal"
    },
    "type": "paypal"
  }
]

Оплата по сохраненному платежному аккаунту

Оплата по сохраненному платежному аккаунту.

Notice: Данный метод API не предназначен для использования при высоких нагрузках. При большом количестве запросов может применяться ограничение трафика. Чтобы узнать правила ограничения трафика для данного метода API, обратитесь к аккаунт-менеджеру проекта.

HTTP-ЗАПРОС

Copy
Full screen
Small screen
POST https://api.xsolla.com/merchant/v2/projects/{project_id}/users/{user_id}/payments/{type}/{account_id}

ПараметрТипОписание
project_id
integerID проекта. Обязательный.
user_id
stringID пользователя. Обязательный.
type
stringТип платежного аккаунта. Обязательный. Возможные значения: card — банковские карты, amazon — Amazon Pay, skrill — Skrill Digital Wallet, yandex — Яндекс.Деньги, paymasterwebmoney — WebMoney, paypal — PayPal, qiwi — QIWI Кошелек.

В случае успешного ответа (HTTP код — 200) запрос возвращает идентификатор транзакции и ее текущий статус. Возможные статусы:
  • processing — транзакция обрабатывается;
  • done — транзакция обработана успешно;
  • error — при обработке транзакции возникла ошибка;
  • canceled — транзакция отменена;
  • held — средства на счете пользователя зарезервированы.
В случае ошибки (HTTP код — 422) запрос возвращает код ошибки с подробным описанием.
account_id
integerИдентификатор сохраненного платежного аккаунта в базе данных Иксоллы. Обязательный.
user
objectОбъект с информацией о пользователе.
user.ip
stringIP адрес пользователя. Обязательный.
user.name
stringИмя пользователя.
objectОбъект с реквизитами юридического лица.
stringПолное юридическое наименование.
stringПолный юридический адрес.
stringИндивидуальный идентификатор налогоплательщика.
stringСтрана регистрации. Используется двухбуквенное обозначение страны согласно стандарту ISO 3166-1 alpha-2.
purchase
objectОбъект с информацией о заказе.
purchase.virtual_currency
objectОбъект с данными о виртуальной валюте.
purchase.virtual_currency.quantity
floatКоличество виртуальной валюты в заказе.
purchase.checkout
objectОбъект с информацией о заказе.
purchase.checkout.currency
stringВалюта заказа. Используется трехбуквенное обозначение валюты согласно стандарту ISO 4217.
purchase.checkout.amount
floatСумма заказа.
settings
objectОбъект с данными о настройках.
settings.mode
stringПередайте значение sandbox, чтобы провести тестовые платежи. Для проведения реальных платежей этот параметр необходимо убрать.
custom_parameters
stringВаши дополнительные параметры. Параметры передаются в json хеше парами ключ-значение.
Copy
Full screen
Small screen
http
  • http
  • curl
  • php
  • C#
  • python
  • ruby
  • java
  • js
Запрос
POST https://api.xsolla.com/merchant/v1/projects/{project_id}/users/{user_id}/payments/{type}/{account_id}

Headers:
  Authorization: Basic <your_authorization_basic_key>
Content-Type: application/json

Body:
  {
  "card": {
    "cvn": "123"
  },
  "purchase": {
    "description": {
      "value": "currency purchase"
    },
    "virtual_currency": {
      "quantity": 100
    }
  },
  "settings": {
    "currency": "USD",
    "external_id": "ext123",
    "save": true
  },
  "user": {
    "id": "user123",
    "ip": "111.11.11.11",
    "name": "John Smith",
    "legal" : {
      "name": "My Awesome Company",
      "address": "17 Crown Street London SW2 0JW United Kingdom",
      "vat_id": "GB111111111",
      "country": "GB"
  }
}
curl --request POST \
  --url https://api.xsolla.com/merchant/v1/projects/{project_id}/users/{user_id}/payments/{type}/{account_id} \
  --header 'authorization: Basic <your_authorization_basic_key>' \
  --header 'content-type: application/json' \
  --data '{"user":{"id":"user123","ip":"111.11.11.11","name":"John Smith","legal":{"name":"My Awesome Company","address":"17 Crown Street London SW2 0JW United Kingdom","vat_id":"GB111111111","country":" GB"}},"card":{"cvn":"123"},"purchase":{"virtual_currency":{"quantity":100},"description":{"value":"currency purchase"}},"settings":{"save":true,"currency":"USD","external_id":"ext123"}}'
<?php

$client = new http\Client;
$request = new http\Client\Request;

$body = new http\Message\Body;
$body->append('{"user":{"id":"user123","ip":"111.11.11.11","name":"John Smith","legal":{"name":"My Awesome Company","address":"17 Crown Street London SW2 0JW United Kingdom","vat_id":"GB111111111","country":" GB"}},"card":{"cvn":"123"},"purchase":{"virtual_currency":{"quantity":100},"description":{"value":"currency purchase"}},"settings":{"save":true,"currency":"USD","external_id":"ext123"}}');

$request->setRequestUrl('https://api.xsolla.com/merchant/v1/projects/{project_id}/users/{user_id}/payments/{type}/{account_id}');
$request->setRequestMethod('POST');
$request->setBody($body);

$request->setHeaders(array(
  'authorization' => 'Basic <your_authorization_basic_key>',
  'content-type' => 'application/json'
));

$client->enqueue($request)->send();
$response = $client->getResponse();

echo $response->getBody();
var client = new RestClient("https://api.xsolla.com/merchant/v1/projects/{project_id}/users/{user_id}/payments/{type}/{account_id}");
var request = new RestRequest(Method.POST);
request.AddHeader("authorization", "Basic <your_authorization_basic_key>");
request.AddHeader("content-type", "application/json");
request.AddParameter("application/json", "{\"user\":{\"id\":\"user123\",\"ip\":\"111.11.11.11\",\"name\":\"John Smith\",\"legal\":{\"name\":\"My Awesome Company\",\"address\":\"17 Crown Street London SW2 0JW United Kingdom\",\"vat_id\":\"GB111111111\",\"country\":\"GB\"}},\"card\":{\"cvn\":\"123\"},\"purchase\":{\"virtual_currency\":{\"quantity\":100},\"description\":{\"value\":\"currency purchase\"}},\"settings\":{\"save\":true,\"currency\":\"USD\",\"external_id\":\"ext123\"}}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
import http.client

conn = http.client.HTTPSConnection("api.xsolla.com")

payload = "{\"user\":{\"id\":\"user123\",\"ip\":\"111.11.11.11\",\"name\":\"John Smith\",\"legal\":{\"name\":\"My Awesome Company\",\"address\":\"17 Crown Street London SW2 0JW United Kingdom\",\"vat_id\":\"GB111111111\",\"country\":\"GB\"}},\"card\":{\"cvn\":\"123\"},\"purchase\":{\"virtual_currency\":{\"quantity\":100},\"description\":{\"value\":\"currency purchase\"}},\"settings\":{\"save\":true,\"currency\":\"USD\",\"external_id\":\"ext123\"}}"

headers = {
    'content-type': "application/json",
    'authorization': "Basic <your_authorization_basic_key>"
    }

conn.request("POST", "/merchant/v1/projects/{project_id}/users/{user_id}/payments/{type}/{account_id}", payload, headers)

res = conn.getresponse()
data = res.read()

print(data.decode("utf-8"))
require 'uri'
require 'net/http'

url = URI("https://api.xsolla.com/merchant/v1/projects/{project_id}/users/{user_id}/payments/{type}/{account_id}")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE

request = Net::HTTP::Post.new(url)
request["content-type"] = 'application/json'
request["authorization"] = 'Basic <your_authorization_basic_key>'
request.body = "{\"user\":{\"id\":\"user123\",\"ip\":\"111.11.11.11\",\"name\":\"John Smith\",\"legal\":{\"name\":\"My Awesome Company\",\"address\":\"17 Crown Street London SW2 0JW United Kingdom\",\"vat_id\":\"GB111111111\",\"country\":\"GB\"}},\"card\":{\"cvn\":\"123\"},\"purchase\":{\"virtual_currency\":{\"quantity\":100},\"description\":{\"value\":\"currency purchase\"}},\"settings\":{\"save\":true,\"currency\":\"USD\",\"external_id\":\"ext123\"}}"

response = http.request(request)
puts response.read_body
OkHttpClient client = new OkHttpClient();

MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\"user\":{\"id\":\"user123\",\"ip\":\"111.11.11.11\",\"name\":\"John Smith\",\"legal\":{\"name\":\"My Awesome Company\",\"address\":\"17 Crown Street London SW2 0JW United Kingdom\",\"vat_id\":\"GB111111111\",\"country\":\"GB\"}},\"card\":{\"cvn\":\"123\"},\"purchase\":{\"virtual_currency\":{\"quantity\":100},\"description\":{\"value\":\"currency purchase\"}},\"settings\":{\"save\":true,\"currency\":\"USD\",\"external_id\":\"ext123\"}}");
Request request = new Request.Builder()
  .url("https://api.xsolla.com/merchant/v1/projects/{project_id}/users/{user_id}/payments/{type}/{account_id}")
  .post(body)
  .addHeader("content-type", "application/json")
  .addHeader("authorization", "Basic <your_authorization_basic_key>")
  .build();

Response response = client.newCall(request).execute();
var data = JSON.stringify({
  "user": {
    "id": "user123",
    "ip": "111.11.11.11",
    "name": "John Smith",
    "legal" : {
      "name": "My Awesome Company",
      "address": "17 Crown Street London SW2 0JW United Kingdom",
      "vat_id": "GB111111111",
      "country": "GB"
    },
  },
  "card": {
    "cvn": "123"
  },
  "purchase": {
    "virtual_currency": {
      "quantity": 100
    },
    "description": {
      "value": "currency purchase"
    }
  },
  "settings": {
    "save": true,
    "currency": "USD",
    "external_id": "ext123"
  }
});

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "https://api.xsolla.com/merchant/v1/projects/{project_id}/users/{user_id}/payments/{type}/{account_id}");
xhr.setRequestHeader("content-type", "application/json");
xhr.setRequestHeader("authorization", "Basic <your_authorization_basic_key>");

xhr.send(data);
Ответ
{
    "transaction_id": 123458390
}
{
    "transaction_id": 123458390
}
{
    "transaction_id": 123458390
}
{
    "transaction_id": 123458390
}
{
    "transaction_id": 123458390
}
{
    "transaction_id": 123458390
}
{
    "transaction_id": 123458390
}
{
    "transaction_id": 123458390
}

Удаление сохраненного платежного аккаунта

Удаление сохраненного платежного аккаунта.

HTTP-ЗАПРОС

Copy
Full screen
Small screen
DELETE https://api.xsolla.com/merchant/v2/projects/{project_id}/users/{user_id}/payment_accounts/{type}/{account_id}

ПараметрТипОписание
project_id
integerID проекта.
user_id
stringID пользователя.
type
stringТип платежного аккаунта. Возможные значения: card — банковские карты, amazon — Amazon Pay, skrill — Skrill Digital Wallet, yandex — Яндекс.Деньги, paymasterwebmoney — WebMoney, paypal — PayPal, qiwi — QIWI Кошелек.

В случае успешного ответа (HTTP код — 200) запрос возвращает идентификатор транзакции и ее текущий статус. Возможные статусы:
  • processing — транзакция обрабатывается;
  • done — транзакция обработана успешно;
  • error — при обработке транзакции возникла ошибка;
  • canceled — транзакция отменена;
  • held — средства на счете пользователя зарезервированы.
В случае ошибки (HTTP код — 422) запрос возвращает код ошибки с подробным описанием.
account_id
integerИдентификатор сохраненного платежного аккаунта в базе данных Иксоллы.
Copy
Full screen
Small screen
http
  • http
  • curl
  • php
  • C#
  • python
  • ruby
  • java
  • js
Запрос
DELETE https://api.xsolla.com/merchant/v1/projects/{project_id}/users/{user_id}/payment_accounts/{type}/{account_id}

Headers:
  Authorization: Basic <your_authorization_basic_key>
curl --request DELETE \
  --url https://api.xsolla.com/merchant/v1/projects/{project_id}/users/{user_id}/payment_accounts/{type}/{account_id} \
  --header 'authorization: Basic <your_authorization_basic_key>'
<?php

$client = new http\Client;
$request = new http\Client\Request;

$request->setRequestUrl('https://api.xsolla.com/merchant/v1/projects/{project_id}/users/{user_id}/payment_accounts/{type}/{account_id}');
$request->setRequestMethod('DELETE');
$request->setHeaders(array(
  'authorization' => 'Basic <your_authorization_basic_key>'
));

$client->enqueue($request)->send();
$response = $client->getResponse();

echo $response->getBody();
var client = new RestClient("https://api.xsolla.com/merchant/v1/projects/{project_id}/users/{user_id}/payment_accounts/{type}/{account_id}");
var request = new RestRequest(Method.DELETE);
request.AddHeader("authorization", "Basic <your_authorization_basic_key>");
IRestResponse response = client.Execute(request);
import http.client

conn = http.client.HTTPSConnection("api.xsolla.com")

headers = { 'authorization': "Basic <your_authorization_basic_key>" }

conn.request("DELETE", "/merchant/v1/projects/{project_id}/users/{user_id}/payment_accounts/{type}/{account_id}", headers=headers)

res = conn.getresponse()
data = res.read()

print(data.decode("utf-8"))
require 'uri'
require 'net/http'

url = URI("https://api.xsolla.com/merchant/v1/projects/{project_id}/users/{user_id}/payment_accounts/{type}/{account_id}")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE

request = Net::HTTP::Delete.new(url)
request["authorization"] = 'Basic <your_authorization_basic_key>'

response = http.request(request)
puts response.read_body
OkHttpClient client = new OkHttpClient();

Request request = new Request.Builder()
  .url("https://api.xsolla.com/merchant/v1/projects/{project_id}/users/{user_id}/payment_accounts/{type}/{account_id}")
  .delete(null)
  .addHeader("authorization", "Basic <your_authorization_basic_key>")
  .build();

Response response = client.newCall(request).execute();
var data = null;

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("DELETE", "https://api.xsolla.com/merchant/v1/projects/{project_id}/users/{user_id}/payment_accounts/{type}/{account_id}");
xhr.setRequestHeader("authorization", "Basic <your_authorization_basic_key>");

xhr.send(data);
Ответ


Была ли статья полезна?
Спасибо!
Что может сделать статью еще лучше? Сообщение
Жаль, что так произошло
Расскажите, почему статья не была полезна. Сообщение
Спасибо за обратную связь!
Ваши мысли и идеи помогут нам улучшить ваш пользовательский опыт.