Los webhooks son notificaciones sobre eventos que se producen en el sistema. Cuando ocurre un evento específico, Xsolla envía una solicitud HTTP, en la cual se transmiten los datos del evento, a su aplicación. Generalmente, se trata de una solicitud POST en formato JSON.
Ejemplos de eventos:
Cuando se produce un evento definido, Xsolla lo notifica a su sistema mediante un webhook. En consecuencia, puede realizar acciones como:
Ejemplo de un flujo de trabajo de webhook de procesamiento de pagos:
Webhook de procesamiento de pagos
Videoguía para la integración de webhooks con Xsolla:
Configuración de Webhooks para trabajar con productos y soluciones de Xsolla:
Producto/Solución | Obligatorio/Opcional | ¿Para qué se utilizan los webhooks? |
---|---|---|
Pagos | Obligatorio |
|
In-Game Store | Obligatorio |
|
Game Sales | Opcional | Para vender claves del juego, la validación del usuario y el abono de los artículos no son necesarios. Puede conectar los webhooks si desea recibir información sobre eventos, como el pago o la cancelación de pedidos. Si conecta webhooks, es esencial procesar todos los webhooks requeridos entrantes. |
Suscripciones | Opcional | Receiving information about creation, update, or cancellation of a subscription. Alternatively, you can request information via the API. |
Web Shop | Obligatorio |
|
Digital Distribution Hub | Obligatorio |
Refer to the documentation for detailed information on setting up webhooks for the Digital Distribution Hub. |
If you use products and solutions that require working with webhooks, enable and test the webhooks in your Publisher Account and set up their processing. When specific events occur, webhooks are sent sequentially. Therefore, if you do not process one of the webhooks, subsequent webhooks will not be sent. The list of required webhooks is presented below.
2 webhook sending options have been set up on Xsolla’s side when purchasing and returning items on the site — information with payment and transaction data and information about purchased items can come separately or can be combined into one webhook.
Receiving information in combined webhooks:
If you registered in Publisher
Account after January 22, 2025, you receive all the information in the Successful payment of the
order (order_paid
) and Order cancellation (order_canceled
) webhooks. In this case,
you do not need to process the Payment (payment
) and Refund (refund
) webhooks.
Receiving information in separate webhooks:
If you registered in Publisher Account on or before January 22, 2025, you receive the following webhooks:
payment
) and Refund (refund
) with information about
payment data and transaction details.order_paid
) and Order cancellation (order_canceled
) with
information about purchased items.You need to process all incoming webhooks. To switch to the new option with receiving combined webhooks, contact your Customer Success Managers or email to csm@xsolla.com.
For the full operation of the in-game store and payment management, it is necessary to implement the processing of the main webhooks.
If you receive combined webhooks:
Webhook name and type | Descripción |
---|---|
User validation > User validation (user_validation ) |
Is sent at different stages of the payment process to ensure the user is registered in the game. |
Game services > Combined webhooks > Successful payment of the order (order_paid ) |
It contains payment data, transaction details, and information about purchased items. Use the data from the webhook to add items to the user. |
Game services > Combined webhooks > Order cancellation (order_canceled ) |
It contains data of the canceled payment, transaction details, and information about purchased items. Use the data from the webhook to remove the purchased items. |
If you receive separate webhooks:
Webhook name and type | Descripción |
---|---|
User validation > User validation (user_validation ) |
Is sent at different stages of the payment process to ensure the user is registered in the game. |
Payments > Payment (payment ) |
It contains payment data and transaction details. |
Game services > Separate webhooks > Successful payment of the order (order_paid ) |
It contains information about purchased items and the transaction details. Use the data from the webhook to add items to the user. |
Payments > Refund (refund ) |
It contains payment data and transaction details. |
Game services > Separate webhooks > Order cancellation (order_canceled ) |
It contains information about the purchased items and the ID of the canceled transaction. Use the data from the webhook to remove the purchased items. |
Si la personalización del catálogo de artículos se implementa en el lado de su aplicación, establezca el procesamiento del webhook Personalización del catálogo en el lado del socio.
Note
To receive real payments, you only need to sign the licensing agreement and implement processing of the webhooks:
Para gestionar automáticamente los planes de suscripción, es necesario implementar el procesamiento de los principales webhooks:
user_validation
): se envía en diferentes etapas del proceso de pago para
garantizar que el usuario esté registrado en el juego.payment
): se envía cuando se
paga un pedido y contiene los datos del pago y los detalles de la transacción.create_subscription
): se envía cuando se ha procesado correctamente un
webhook de Pago o el usuario ha
adquirido una suscripción con un periodo de prueba. Contiene los detalles de la
suscripción adquirida y los datos del usuario. Use los datos del webhook para
agregar una suscripción al usuario.update_subscription
): se envía cuando se renueva o modifica una suscripción,
cuando se ha procesado correctamente un webhook de Pago.
Contiene los detalles de la suscripción adquirida y los datos del usuario. Use
los datos del webhook para ampliar la suscripción del usuario o cambiar los
parámetros de la suscripción.refund
): se envía cuando
se cancela un pedido y contiene los datos del pago cancelado y los detalles de
la transacción.cancel_subscription
): se envía cuando se ha procesado correctamente un
webhook de Reembolso o se ha cancelado
la suscripción por otro motivo. Contiene información sobre la suscripción y los
datos del usuario. Use los datos del webhook para sustraer al usuario las
suscripciones adquiridas.Para habilitar la recepción de webhooks:
https://example.com
. También puede
especificar la URL que encuentre en una herramienta para probar webhooks.Atención
El protocolo HTTPS se utiliza para transferir datos; el protocolo HTTP no es compatible.
Tenga en cuenta
Para probar los webhooks, puede seleccionar cualquier sitio web específico, como webhook.site, o una plataforma, como ngrok.
Atención
No puede enviar simultáneamente webhooks a diferentes URL. Lo que sí puede hacer en la Cuenta del editor es especificar primero una URL de prueba y luego sustituirla por la real.
Para deshabilitar la recepción de webhooks:
For the webhooks in the Payment and store section, advanced settings are available. They will automatically appear under the General settings block after you click the Get webhooks button.
Note
If the advanced settings are not displayed, make sure that webhook reception is connected in the general settings and you are on the Testing > Payment and store tab.
In this section, you can set up the receipt of additional information in webhooks. To do this, set the corresponding switches to the active position. The line of each permission indicates the webhooks that will be affected by changing the settings.
Selector | Descripción |
---|---|
Mostrar información sobre la cuenta de pago guardada | La información sobre el método de pago guardado se transmite en el objeto personalizado payment_account . |
Mostrar información sobre las transacciones mediante los métodos de pago guardados | La información se transmite en los siguientes parámetros personalizados del webhook:
|
Añadir objeto del pedido al webhook | La información sobre el pedido se transmite en el objeto order del webhook Pago. |
Enviar solamente los parámetros de usuario necesarios sin datos confidenciales | Solamente la siguiente información sobre el usuario se transmite en el webhook:
|
Enviar parámetros personalizados | La información sobre los parámetros de token personalizados se transmite en el webhook. |
Mostrar número de BIC y sufijo de la tarjeta | La siguiente información sobre el número de tarjeta bancaria se transmite en el webhook:
|
Mostrar marca de tarjeta | La marca de la tarjeta empleada para realizar el pago. Por ejemplo, Mastercard o Visa. |
Probar los webhooks ayuda a asegurar la correcta configuración del proyecto tanto en su lado como en el lado de Xsolla.
Si los webhooks están establecidos correctamente, aparecerá una sección de prueba de webhooks bajo la sección de configuración de webhooks.
Sección de pruebas de Webhooks
The testing section in the Publisher Account varies depending on the webhook receiving option.
If you receive combined webhooks:
Tab name for webhook testing | Webhook name and type |
---|---|
Payments and store | User validation > User validation (user_validation ) |
Game services > Combined webhooks > Successful payment of the order (order_paid ) |
|
Game services > Combined webhooks > Order cancellation (order_canceled ) |
|
Subscriptions | User validation > User validation (user_validation ) |
Payments > Payment (payment ) |
If you receive separate webhooks:
Tab name for webhook testing | Webhook name and type |
---|---|
Store | Game services > Separate webhooks > Successful payment of the order (order_paid ) |
Game services > Separate webhooks > Order cancellation (order_canceled ) |
|
Payments | User validation > User validation (user_validation ) |
Payments > Payment (payment ) |
|
Subscriptions | User validation > User validation (user_validation ) |
Payments > Payment (payment ) |
Tenga en cuenta
Si aparece un aviso de que la prueba no se ha superado en la sección de pruebas, verifique la configuración de la respuesta del webhook en su agente de escucha del webhook. Los motivos de los errores en la prueba se indican en los resultados de la prueba.
Ejemplo:
Cuando utiliza el sitio especializado webhook.site para la prueba.
Aparece un error en la sección Testing response to invalid signature.
Esto ocurre porque Xsolla envía un webhook con una firma incorrecta y espera que su controlador responda con un código HTTP 4xx
que especifique el código de error INVALID_SIGNATURE
.
webhook.site envía un código HTTP 200
en respuesta a todos los webhooks, incluyendo un webhook con una firma incorrecta. No se puede obtener el código HTTP 4xx
esperado, por lo que aparece un error en el resultado de la prueba.
The process of testing for the scenario with combined webhooks is described below.
In the Payment and store tab, you can test the following webhooks:
user_validation
)order_paid
)order_canceled
)Para realizar la prueba:
In the webhooks testing section, go to the Payment and store tab.
En el menú desplegable, seleccione el tipo de artículo. Si el artículo del tipo seleccionado no está establecido en Cuenta del editor, haga clic en:
Fill in the necessary fields:
Click Test webhooks.
User validation, Successful payment of the order and Order cancellation webhooks with the specified data are sent to the provided URL. The results of testing each webhook type are displayed below the Test webhooks button.
If public user ID is enabled in your project, you will also see the results of a user search check.
Para cada webhook, tiene que establecer el procesamiento de ambos escenarios: uno, satisfactorio, y el otro, fallido.
En la pestaña Subscriptions puede probar los siguientes webhooks:
user_validation
)payment
)Tenga en cuenta
En Cuenta del editor, solamente puede probar los webhooks básicos de Validación de usuario y Pago. Para probar otros tipos de webhooks, vaya a:
Tenga en cuenta
Para probar los webhooks, debe tener al menos un plan de suscripción creado en la sección Cuenta del editor > Subscriptions > Subscription Plans.
To test:
0
.En la URL especificada, recibirá webhooks con datos rellenados. Los resultados de las pruebas de cada webhook, tanto para un escenario con satisfactorio como para un escenario fallido, se muestran bajo el botón Test webhooks.
El agente de escucha es un código de programa que permite recibir webhooks entrantes en una dirección URL especificada, generar una firma y enviar una respuesta al servidor de webhooks de Xsolla.
Nota
Puede utilizar la biblioteca de SDK para PHP de Pay Station, que contiene clases predefinidas para procesar webhooks.
En el lado de su aplicación, implemente la recepción de webhooks desde las
siguientes direcciones IP: 185.30.20.0/24
, 185.30.21.0/24
,
185.30.23.0/24
, 34.102.38.178
, 34.94.43.207
, 35.236.73.234
,
34.94.69.44
, 34.102.22.197
.
Limitaciones:
Cuando reciba un webhook, debe garantizar la seguridad de la transmisión de los datos. Para ello, se debe generar una firma a partir de los datos del webhook y verificar que coincide con la firma enviada en el encabezado de la solicitud HTTP. Para generar una firma:
POST /your_uri HTTP/1.1
Host: your.host
Accept: application/json
Content-Type: application/json
Content-Length: 165
Authorization: Signature 52eac2713985e212351610d008e7e14fae46f902
{
"notification_type":"user_validation",
"user":{
"ip":"127.0.0.1",
"phone":"18777976552",
"email":"email@example.com",
"id":1234567,
"name":"Xsolla User",
"country":"US"
}
}
curl -v 'https://your.hostname/your/uri' \
-X POST \
-H 'Authorization: Signature 52eac2713985e212351610d008e7e14fae46f902' \
-d '{
"notification_type":
"user_validation",
"user":
{
"ip": "127.0.0.1",
"phone": "18777976552",
"email": "email@example.com",
"id": 1234567,
"name": "Xsolla User",
"country": "US"
}
}'
Para confirmar la recepción del webhook, su servidor debe devolver:
If the Xsolla server did not receive a response to Successful payment of the order and Order cancellation webhooks
or received a response with a 5xx
code, the webhooks are resent according to
the following schedule:
Maximum of 20 attempts to send webhooks are made within 12 hours from the first
attempt. If the Xsolla server did not receive a response to Payment webhook or the Refund webhook, or received a response
with a 5xx
code, webhooks are also resent with an increased time interval. A
maximum of 12 attempts are made within 12 hours.
Atención
Si la devolución del pago fue iniciado por Xsolla y llegó una respuesta con un código HTTP "5xx" como respuesta al webhook Reembolso, el pago seguirá siendo reembolsado.
If the Xsolla server did not receive a response to the User validation webhook or
received a response with a code of 400
or 5xx
, the User validation webhook is not
resent. In this case, the user sees an error and the Payment and Successful payment of the order webhooks are not
sent.
Códigos de error para el código HTTP 400:
Código | Mensaje |
---|---|
INVALID_USER | Usuario no válido |
INVALID_PARAMETER | Parámetro no válido |
INVALID_SIGNATURE | Firma no válida |
INCORRECT_AMOUNT | Importe incorrecto |
INCORRECT_INVOICE | Factura incorrecta |
HTTP/1.1 400 Bad Request
{
"error":{
"code":"INVALID_USER",
"message":"Invalid user"
}
}
Observación
El tipo de notificación se envía en el parámetro notification_type
.
Webhook | Tipo de notificación | Descripción |
---|---|---|
Validación de usuario | user_validation |
Se envía para comprobar si un usuario existe en el juego. |
Búsqueda de usuario | user_search |
Se envía para obtener información de usuario basada en el ID público del usuario. |
Pago | payment |
Se envía cuando un usuario realiza un pago. |
Reembolso | refund |
Se envía cuando un pago debe cancelarse por cualquier motivo. |
Reembolso parcial | partial_refund |
Se envía cuando un pago debe cancelarse parcialmente por cualquier motivo. |
Transacción de AFS rechazada | afs_reject |
Se envía cuando se rechaza una transacción durante una comprobación de AFS. |
Lista de bloqueo de AFS rechazada | afs_black_list |
Se envía cuando se actualiza la lista de bloqueo de AFS. |
Suscripción creada | create_subscription |
Se envía cuando un usuario crea una suscripción. |
Suscripción actualizada | update_subscription |
Se envía cuando se renueva o modifica una suscripción. |
Suscripción cancelada | cancel_subscription |
Se envía cuando se cancela una suscripción. |
Suscripción con renovación suspendida | non_renewal_subscription |
Se envía cuando el estado es de renovación suspendida. |
Añadir cuenta de pago | payment_account_add |
Se envía cuando un usuario añade o guarda una cuenta de pago. |
Eliminar cuenta de pago | payment_account_remove |
Se envía cuando un usuario elimina la cuenta de pago de las cuentas guardadas. |
Validación de usuarios en Web Shop | - |
Se envía desde un sitio de Web Shop para comprobar si un usuario existe en el juego. |
Personalización del catálogo en el lado del socio | partner_side_catalog |
Se envía cuando un usuario interactúa con la tienda. |
Pago del pedido realizado correctamente | order_paid |
Se envía cuando se paga un pedido. |
Cancelación del pedido | order_canceled |
Se envía cuando se cancela un pedido. |
Disputa | dispute |
Se envía cuando se abre una nueva disputa. |