Establecer seguimiento del estado del pedido
Para conceder artículos al usuario, debe asegurarse de que el pago haya sido aceptado.
Para hacer un seguimiento del estado de los pedidos creados y validarlos, deberá configurar el procesamiento de webhooks en el lado del servidor de su aplicación.
En el lado de Xsolla, hay dos opciones para recibir webhooks en caso de compra y reembolso de artículos: información con los datos del pago y de la transacción e información sobre los artículos comprados pueden recibirse por separado o llegar combinados en un solo webhook. Por defecto, todos los proyectos nuevos reciben un webhook combinado.
Para cambiar a la nueva opción con recepción de webhooks combinados, contacte con sus gestores del éxito del cliente o envíe un correo electrónico a csm@xsolla.com.
Más información sobre las opciones de recepción de webhooks
Recibir información en webhooks combinados:
Si se registró en Cuenta del editor después del 22 de enero de 2025, recibirá toda la información en los webhooks Pago del pedido realizado correctamente (order_paid) y Cancelación del pedido (order_canceled). En este caso, no es necesario procesar los webhooks Pago (payment) y Reembolso (refund).
Recibir información en webhooks por separado:
Si se registró en Cuenta del editor el 22 de enero de 2025 o antes, recibirá los siguientes webhooks:
- Pago (
payment) y Reembolso (refund) con información sobre los datos de pago y los detalles de la transacción. - Pago del pedido realizado correctamente (
order_paid) y Cancelación del pedido (order_canceled) con información sobre los artículos comprados.
Debe procesar todos los webhooks entrantes.
Para que la tienda en el juego y el sistema de gestión de pagos funcionen a pleno rendimiento, es necesario implementar el procesamiento de los principales webhooks:
| Nombre del webhook | Descripción |
|---|---|
Validación del usuario > Validación del usuario (user_validation) | Se envían en distintas fases del proceso de pago para garantizar que el usuario esté registrado en el juego. |
Servicios del juego > Webhooks combinados > Pago del pedido realizado correctamente (order_paid) | Contiene datos de pago, detalles de la transacción e información sobre los artículos comprados. Emplee los datos del webhook para agregar artículos al usuario. |
Servicios del juego > Webhooks combinados > Cancelación del pedido (order_canceled) | Contiene datos del pago cancelado, detalles de la transacción e información sobre los artículos comprados. Emplee los datos del webhook para eliminar los artículos comprados. |
El siguiente esquema muestra el proceso de compra y de devolución de artículos utilizando webhooks combinados.
sequenceDiagram
participant User
participant GameClient as Game Client
participant Xsolla
participant GameServer as Game Server
%% Item Purchase
Note over User, GameServer: Item purchase
User ->> GameClient: Logs in
GameClient ->> Xsolla: Sends user authentication request
Xsolla -->> GameClient: Returns JWT / OAuth 2.0 token
GameClient ->> Xsolla: Sends JWT, project ID, pagination parameters
Xsolla -->> GameClient: Returns array of items
GameClient -->> User: Displays storefront
User ->> GameClient: Selects item and clicks Buy
GameClient ->> Xsolla: Creates order request
Xsolla -->> GameClient: Returns payment token
GameClient ->> Xsolla: Opens payment UI URL with received token
Xsolla ->> GameServer: Sends User validation webhook
GameServer -->> Xsolla: Returns success status code
Xsolla -->> User: Displays payment UI
User ->> Xsolla: Chooses payment method and clicks Pay
Xsolla ->> GameServer: Sends Successful payment for order webhook
GameServer ->> GameServer: Grants purchases to user
GameServer -->> Xsolla: Returns success status code
Xsolla -->> User: Shows successful purchase screen
%% Refund / Chargeback
Note over User, GameServer: Refund / Chargeback
User ->> Xsolla: Requests refund or chargeback
Xsolla ->> GameServer: Sends Order cancellation webhook
GameServer ->> GameServer: Removes items from user inventory
GameServer -->> Xsolla: Returns success status code
Xsolla -->> User: Refunds the payment
Si la personalización del catálogo de artículos está implementada en el lado de su aplicación, establezca el procesamiento de Personalización del catálogo en el lado del socio.
- Pago, Pago del pedido realizado correctamente; y Validación del usuario si recibe webhooks separados
- Pago del pedido realizado correctamente; y Validación del usuario si recibe webhooks combinados
Para obtener la lista completa de webhooks e información general sobre cómo operar con ellos, consulte la documentación de webhooks.
Establecer el envío de webhooks
Para configurar webhooks en el lado de Xsolla:
- En su proyecto, en Cuenta del editor, vaya a la sección Settings > Webhooks.
- En el campo Webhook server, especifique la URL de su servidor donde desea recibir los webhooks en el formato
https://example.comTambién puede especificar la URL que encuentre en una herramienta para probar webhooks.
- Por defecto, se genera una clave secreta para firmar los webhooks del proyecto. Si quiere generar una nueva clave secreta, haga clic en el icono de actualización.
- Haga clic en Enable webhooks.
Agregar un agente de escucha de webhooks
El agente de escucha de webhooks 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.
Generación de firma
Cuando reciba un webhook, se debe garantizar la seguridad de la transmisión de datos. Para conseguirlo, 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:
- Concatene el JSON del cuerpo de la solicitud y la clave secreta del proyecto.
- Aplique la función hash criptográfica SHA-1 a la cadena obtenida en el primer paso.
Enviar respuestas al webhook
Para confirmar la recepción del webhook, su servidor debe devolver:
- código HTTP
200,201o204en el caso de una respuesta correcta. - Código HTTP
400con descripción del problema si no se ha encontrado el usuario especificado o se ha transmitido una firma no válida.
Su controlador de webhook también puede devolver un código 5xx en caso de problemas temporales en su servidor.
Si el servidor de Xsolla no recibe una respuesta para los webhooks Pago del pedido realizado correctamente y Cancelación del pedido o si recibe una respuesta con un código 5xx, los webhooks se reenvían con arreglo al siguiente esquema temporal:
- 2 intentos con un intervalo de 5 minutos
- 7 intentos con un intervalo de 15 minutos y
- 10 intentos con un intervalo de 60 minutos
Se realizan un máximo de 20 intentos de envío de webhooks en un plazo de 12 horas desde el primer intento.
La lógica de reintento para los webhooks Payment y Refund viene descrita en la página respectiva de cada webhook.
Si el servidor de Xsolla no recibe una respuesta para los webhooks Validación del usuario o si recibe una respuesta con un código 400 o 5xx, el webhook Validación del usuario no se reenvía.
En este caso, se muestra un error al usuario y no se envían los webhooks Payment y Successful payment of the order.
Configurar la información de los artículos en los webhooks
Puede configurar qué datos de los artículos se incluyen en los webhooks Pago del pedido realizado correctamente y Cancelación del pedido a través de la matriz de items.
Activar la inclusión de parámetros adicionales
Active la inclusión de parámetros adicionales que indiquen:
- si el artículo es gratuito (
is_free) - si el artículo es una bonificación (
is_bonus) - si el artículo forma parte de un lote (
is_bundle_content)
Para recibir estos parámetros, debe cambiar sus webhooks a la versión 2 mediante la llamada a la API Actualizar la información sobre la configuración de webhooks. En la versión 1 (predeterminada), estos parámetros no están disponibles.
Ejemplo de matriz de artículos con parámetros adicionales:
- json
1"items": [
2 {
3 "sku": "com.xsolla.item_new_1",
4 "type": "bundle",
5 "is_pre_order": false,
6 "is_free": false,
7 "is_bonus": false,
8 "is_bundle_content": false,
9 "quantity": 1,
10 "amount": "1000",
11 "promotions": []
12 },
13 {
14 "sku": "com.xsolla.gold_1",
15 "type": "virtual_currency",
16 "is_pre_order": false,
17 "is_free": false,
18 "is_bonus": false,
19 "is_bundle_content": true,
20 "quantity": 1500,
21 "amount": "[null]",
22 "promotions": []
23 }
24 ]
Desactivar la inclusión del contenido del lote
Por defecto, los webhooks incluyen todos los artículos del lote como una lista de artículos individuales. Puede configurar el webhook para que solo incluya el lote en sí, sin detallar su contenido.
En este caso, los artículos incluidos en el lote no se incluyen en la matriz de items. En la matriz que se muestra arriba, el artículo con el SKU com.xsolla.gold_1, que forma parte del lote, está excluido.
Ejemplo de matriz de artículos cuando el contenido del lote está desactivado:
- json
1
2"items": [
3 {
4 "sku": "com.xsolla.item_new_1",
5 "type": "bundle",
6 "is_pre_order": false,
7 "is_free": false,
8 "is_bonus": false,
9 "is_bundle_content": false,
10 "quantity": 1,
11 "amount": "1000",
12 "promotions": []
13 }
14 ]
Para desactivar la inclusión del contenido del lote, contacte con su gestor del éxito del cliente o envíe un correo electrónico a csm@xsolla.com.
¿Has encontrado una errata u otro error de texto? Selecciona el texto y pulsa Ctrl+Intro.