Xsolla-logo

Pago del pedido realizado correctamenteWebhook POST

Xsolla envía el webhook order_paid a la URL especificada cuando se cumplen las siguientes condiciones:

  1. El usuario pagó correctamente el pedido.
  2. Xsolla recibió una respuesta sobre el procesamiento correcto del webhook payment.

El webhook order_paid contiene información sobre los artículos comprados y los datos de la transacción.

El webhook order_paid no se enviará si:

  • El pago no se realizó correctamente, por ejemplo:
    • se abrió el formulario de pago, pero el usuario no pagó el pedido
    • se abrió el formulario de pago, pero hubo errores durante el pago
  • No se ha recibido la respuesta sobre el procesamiento correcto del webhook payment.

Se recomienda que la velocidad de procesamiento del webhook order_paid sea inferior a 3 segundos.

Las respuestas esperadas se describen en la sección Respuestas. Puede utilizar otros códigos de respuesta. Dependiendo del código de respuesta y de la conexión de la función de reembolso automático de pagos, la lógica de procesamiento del webhook por parte de Xsolla es la siguiente:

Código de respuesta El reembolso automático de pagos está desactivado (por defecto) El reembolso automático de pagos está activado
400, 401, 402, 403, 404, 409, 422, 415 Ninguna acción Reembolso automático al usuario
200, 201, 204 Ninguna acción Ninguna acción
Diferente código o ninguna respuesta al webhook Se envían varios webhooks en un intervalo de tiempo especificado: 2 intentos con un intervalo de 5 minutos, 7 intentos con un intervalo de 15 minutos, 10 intentos con un intervalo de 60 minutos. Se envían varios webhooks en un intervalo especificado: 2 intentos con un intervalo de 5 minutos, 7 intentos con un intervalo de 15 minutos, 10 intentos con un intervalo de 60 minutos. Si se envían todos los webhooks pero no se recibe una respuesta satisfactoria, se emite un reembolso automático al usuario.

Para conectar la funcionalidad de reembolso automático, contacte con el gestor de cuentas del proyecto o escriba a am@xsolla.com.

Request
Request Body schema: application/json
notification_type
required
string

Tipo de notificación.

required
Array of objects

Lista de artículos adquiridos por el usuario.

Array
sku
required
string

ID único del artículo. Para los artículos con el tipo game_key, se utiliza un valor con el formato sku_drm.

type
required
string

Tipo de artículos. Puede tener los siguientes valores: virtual_good, virtual_currency, game_key o bundle. Para los artículos del tipo bundle, incluidos los paquetes de monedas virtuales, la matriz de artículos mostrará:

  • parámetros del lote o paquete de monedas virtuales
  • artículos incluidos en el lote o monedas incluidas en el paquete
Enum: "virtual_good" "virtual_currency" "game_key" "bundle"
quantity
required
integer

Cantidad de artículos.

amount
required
string

Coste total de los artículos en función de su cantidad. Puede diferir del precio del artículo debido a los tipos de cambio y las comisiones.

required
Array of objects

Promociones aplicadas. Si no se ha aplicado ninguna promoción, se transmite una matriz vacía en el parámetro.

Array
amount_with_discount
string

Coste total de los artículos con descuento.

amount_without_discount
string

Coste total de los artículos sin descuento.

sequence
integer

Pedido de aplicación de promociones.

is_pre_order
required
boolean

Si es true, el artículo se reserva (prepedido).

custom_attributes
object <json>

Un objeto JSON que contiene los atributos y valores del artículo.

required
object

Información sobre el pedido.

id
required
integer

Identificador único del pedido del usuario en el lado de Xsolla.

mode
required
string

Modo de pago. default se utiliza para pagos reales; sandbox para pagos de prueba.

Enum: "default" "sandbox"
currency_type
required
string

Tipo de moneda de pago. Para realizar un pedido gratuito, se especifica el valor unknown.

Enum: Description
real

para moneda real

unknown

para un pedido gratuito

virtual

para moneda virtual

currency
required
string

Moneda del pedido. La moneda virtual utiliza el código de artículo (SKU) y la moneda real usa un código de tres letras según la ISO 4217.

amount
required
string

El coste total de una cesta en función de la moneda elegida.

status
required
string

Estado del pedido.

platform
required
string or null

Plataforma de pago. Para pagos a través de Xsolla se utiliza el valor xsolla. Para otros pagos, se utiliza el valor correspondiente al nombre de la plataforma de publicación de juegos.

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

Comentario del usuario sobre el pedido.

invoice_id
required
string or null

ID de factura de pagos en moneda real. Los pagos en moneda virtual o los artículos gratuitos tienen un valor de null.

required
Array of objects

Promociones aplicadas. Si no se ha aplicado ninguna promoción, se transmite una matriz vacía en el parámetro.

Array
amount_with_discount
string

Coste total de los artículos con descuento.

amount_without_discount
string

Coste total de los artículos sin descuento.

sequence
integer

Pedido de aplicación de promociones.

Array of objects

Cupones aplicados. Si no se aplica el cupón, la matriz no devuelve.

Array
code
string

El código de un cupón aplicado.

external_id
string

ID externo.

Array of objects

Códigos promocionales aplicados. Si no se aplica el código promocional, la matriz no devuelve.

Array
code
string

El código de un código promocional aplicado.

external_id
string

ID externo.

required
object

Información del usuario.

external_id
required
string

ID de usuario.

email
required
string

Dirección de correo electrónico del usuario.

custom_parameters
object

Información adicional.

Responses
200

Devuelve para indicar un procesamiento realizado correctamente.

400

Devuelve en caso de error en la información proporcionada (p. ej., falta un parámetro obligatorio, autorización fallida, etc.).

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": "virtual-good-item_test",
        "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": "virtual-good-item_test_test_new",
        "type": "bundle",
        "is_pre_order": false,
        "quantity": 1,
        "amount": "1000",
        "promotions": []
      },
      {
        "sku": "gold",
        "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"
    }

}'