Xsolla-logo

Successful payment for order (with payment and transaction details)Webhook POST

Xsolla отправляет вебхук order_paid на указанный URL-адрес, когда пользователь успешно оплатил заказ.

В вебхуке order_paid содержится информация о купленных товарах, данные платежа и детали транзакции.

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

  • форма оплаты была открыта, но пользователь не оплатил заказ;
  • форма оплаты была открыта, но при оплате возникли ошибки.

Рекомендуется обеспечить время обработки вебхука order_paid менее 3 секунд.

Ожидаемые коды ответов описаны в разделе Responses. Вы можете использовать другие коды ответов. В зависимости от кода ответа и подключения функциональности автоматического возврата платежа логика обработки вебхука на стороне Xsolla следующая:

Код ответа Автоматический возврат платежа не включен (по умолчанию) Автоматический возврат платежа включен
400, 401, 402, 403, 404, 409, 422, 415 Нет действий Автоматический возврат средств пользователю.
200, 201, 204 Нет действий Нет действий
Другой код или отсутствие ответа на вебхук Многократная отправка вебхуков через заданный временной промежуток: 2 попытки с шагом 5 минут, 7 попыток с шагом 15 минут, 10 попыток с шагом 60 минут. Многократная отправка вебхуков через заданный временной промежуток: 2 попытки с шагом 5 минут, 7 попыток с шагом 15 минут, 10 попыток с шагом 60 минут. Если все вебхуки отправлены, а успешный ответ не получен, осуществляется автоматический возврат средств пользователю.

Для подключения функциональности автоматических возвратов обратитесь к персональному менеджеру проекта или напишите на csm@xsolla.com

Request
Request Body schema: application/json
notification_type
required
string

Тип оповещения.

required
Array of version = 1 (object) or version = 2 (object)

Список предметов, которые купил пользователь.

The set of parameters included in the array depends on the webhook version. Version 2 includes additional parameters: is_free, is_bonus, and is_bundle_content. To switch the version, pass its number in the version parameter in the Update information about webhook settings API call.

Array
One of:
sku
required
string

Уникальный ID предмета. Для предметов с типом game_key используется значение в формате sku_drm.

type
required
string

Тип предмета. Может принимать значения virtual_good, virtual_currency, game_key, bundle. Для предмета с типом bundle, в том числе для пакета виртуальной валюты, в массиве items будут отображены:

  • параметры бандла или пакета виртуальной валюты;
  • предметы, которые входят в бандл, или валюты, которые входят в пакет.
Enum: "virtual_good" "virtual_currency" "game_key" "bundle"
quantity
required
integer

Количество предметов.

amount
required
string

Общая стоимость товаров, рассчитанная c учетом их количества.

required
Array of objects

Примененные акции. Если акции не применялись, в параметр передается пустой массив.

Array
amount_with_discount
string

Стоимость предметов со скидкой.

amount_without_discount
string

Стоимость предметов без скидки.

sequence
integer

Порядок применения акций.

is_pre_order
required
boolean

Если передано значение true, предмет является предзаказом.

custom_attributes
object

JSON-объект, содержащий атрибуты товара и их значения.

required
object

Информация о заказе.

id
required
integer

Уникальный идентификатор заказа пользователя на стороне Xsolla.

mode
required
string

Тип платежа. Значение default (по умолчанию) используется для реальных платежей. Значение sandbox используется для тестовых платежей.

Enum: "default" "sandbox"
currency_type
required
string

Тип валюты платежа. Для бесплатного заказа указывается значение unknown.

Enum: Description
real

для реальной валюты

unknown

для бесплатного заказа

virtual

для виртуальной валюты

currency
required
string

Валюта заказа. Для виртуальной валюты используется артикул, для реальной валюты используется трехбуквенное обозначение согласно стандарту ISO 4217.

amount
required
string

Стоимость корзины с учетом выбранной валюты.

status
required
string

Статус заказа.

platform
required
string or null

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

Enum: "xsolla" "playstation_network" "xbox_live" "pc_standalone" "nintendo_shop" "google_play" "app_store_ios" "android_standalone" "ios_standalone" "android_other" "ios_other" "pc_other"
comment
required
string or null

Комментарий пользователя к заказу.

invoice_id
required
string or null

ID счета для платежей за реальную валюту. Для платежей за виртуальную валюту или для бесплатных товаров передается значение null.

required
Array of objects

Примененные акции. Если акции не применялись, в параметр передается пустой массив.

Array
amount_with_discount
string

Стоимость предметов со скидкой.

amount_without_discount
string

Стоимость предметов без скидки.

sequence
integer

Порядок применения акций.

Array of objects

Примененные купоны. Если купон не был применен, массив не возвращается.

Array
code
string

Код примененного купона.

external_id
string

Внешний ID.

Array of objects

Примененные промокоды. Если промокод не был применен, массив не возвращается.

Array
code
string

Код примененного промокода.

external_id
string

Внешний ID.

required
object

Информация о пользователе.

external_id
required
string

ID пользователя.

email
required
string

Email-адрес пользователя.

object

Детали платежа и транзакции.

notification_type
required
string

Тип оповещения.

required
object

Объект с информацией о транзакции, связанной с этой операцией.

agreement
integer

ID соглашения.

dry_run
integer

Признак тестовой транзакции. Значение параметра равно 1 для тестового платежа, для реального платежа параметр не передается.

external_id
string

Внешний ID транзакции. Изучите подробную информацию в Частых вопросах.

id
integer

ID транзакции.

payment_date
string

Дата платежа.

payment_method
integer

ID способа оплаты.

payment_method_name
string

Название способа оплаты.

payment_method_order_id
string

ID платежа в платежной системе.

required
object

Объект с финансовыми данными платежа.

object

Объект с данными о налоге с дохода, который удерживается с международных транзакций в некоторых странах.

amount
number <float>

Сумма.

currency
string

Валюта. Используется трехбуквенное обозначение валюты согласно стандарту ISO 4217.

percent
number <float>

Ставка налога, %.

object

Налог, удерживаемый у источника выплаты.

amount
number <float>

Сумма.

currency
string

Валюта. Используется трехбуквенное обозначение валюты согласно стандарту ISO 4217.

percent
number <float>

Процент налога, удерживаемого у источника выплаты.

object

Объект с данными о сумме, которую оплатил пользователь.

amount
number <float>

Сумма.

currency
string

Валюта. Используется трехбуквенное обозначение валюты согласно стандарту ISO 4217.

object

Размер комиссии платежной системы.

amount
number <float>

Сумма.

currency
string

Валюта. Используется трехбуквенное обозначение валюты согласно стандарту ISO 4217.

object

Объект с данными о сумме, которая была оплачена из платежной системы.

amount
number <float>

Сумма.

currency
string

Валюта. Используется трехбуквенное обозначение валюты согласно стандарту ISO 4217.

object

Объект с данными о сумме выплаты.

amount
number <float>

Сумма.

currency
string

Валюта. Используется трехбуквенное обозначение валюты согласно стандарту ISO 4217.

payout_currency_rate
string

Курс валюты платежа к валюте выплаты.

object

Объект с информацией о затратах на репатриацию, возлагаемых на Xsolla третьими сторонами.

amount
number <float>

Сумма.

currency
string

Валюта. Используется трехбуквенное обозначение валюты согласно стандарту ISO 4217.

object

Размер налога (только для США и Канады).

amount
number <float>

Сумма.

currency
string

Валюта. Используется трехбуквенное обозначение валюты согласно стандарту ISO 4217.

percent
number <float>

Процент налога.

object

Объект с данными о сумме вознаграждения каналов привлечения трафика (аффилированные сети и инфлюенсеры).

amount
number <float>

Сумма.

currency
string

Валюта. Используется трехбуквенное обозначение валюты согласно стандарту ISO 4217.

percent
number <float>

Ставка вознаграждения за привлечение пользователей, %.

object

Размер VAT (только для Евросоюза).

amount
number <float>

Сумма.

currency
string

Валюта. Используется трехбуквенное обозначение валюты согласно стандарту ISO 4217.

percent
number <float>

Процент VAT.

object

Объект с данными о сумме, которая была оплачена с Xsolla-баланса.

amount
number <float>

Сумма.

currency
string

Валюта. Используется трехбуквенное обозначение валюты согласно стандарту ISO 4217.

object

Размер комиссии Xsolla.

amount
number <float>

Сумма.

currency
string

Валюта. Используется трехбуквенное обозначение валюты согласно стандарту ISO 4217.

object

Объект с информацией о заказе.

required
object

Объект с данными об общей стоимости покупки.

amount
number <float>

Общая сумма покупки.

currency
string

Валюта. Используется трехбуквенное обозначение валюты согласно стандарту ISO 4217.

object

Объект с информацией о купоне (если при создании подписки был использован купон).

campaign_code
string

Код кампании купонов.

coupon_code
string

Код купона.

object

Объект с информацией о подарке.

giver_id
string

ID дарителя.

hide_giver_from_receiver
string

Флаг, показывать ли дарителя получателю подарка.

message
string

Сообщение от дарителя.

receiver_email
string

Email получателя подарка.

receiver_id
string

ID получателя подарка.

Array of objects

Массив с данными акций, которые действуют на данную покупку.

Array
id
integer

ID акции.

technical_name
string

Техническое название акции.

object

Объект с данными о подписке.

amount
number <float>

Сумма покупки.

currency
string

Валюта. Используется трехбуквенное обозначение валюты согласно стандарту ISO 4217.

date_create
string

Дата создания подписки. Дата и время согласно стандарту ISO 8601.

date_next_charge
string

Дата следующего списания. Дата и время согласно стандарту ISO 8601.

plan_id
string

ID плана (внешний id, если план был создан через API).

product_id
string

ID продукта (если был отправлен в токене).

subscription_id
integer

ID подписки в базе данных Xsolla.

tags
Array of strings

Теги плана.

object

Объект, содержащий настройки проекта.

merchant_id
integer

ID продавца.

project_id
integer

ID проекта. Вы можете найти этот параметр в Личном кабинете рядом с названием проекта.

custom_parameters
object

Дополнительная информация.

Responses
200

Верните, чтобы сообщить об успешной обработке вехбука.

400

Верните в случае ошибки в предоставленной информации (например, обязательный параметр не передан, или авторизация не прошла).

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