Establecer seguimiento del estado del pedido
Para conceder artículos al usuario, debe asegurarse de que el pago haya sido aceptado.
Elija un método para hacer un seguimiento del estado del pedido:
Seleccione el método que mejor se adapte a su proyecto para acceder a los datos de Xsolla:
Si no dispone de servidor o implementa la lógica para el procesamiento de compras en el lado del cliente, puede utilizar los siguientes métodos:
- WebSocket API.
- Short-polling (Sondeo corto).
Obtener el estado de un pedido en el lado del cliente usando la API de WebSocket
La solución usa websockets para obtener los estados del pedido sin recuperar información detallada sobre este. Este método es preferente: solo se crea una conexión entre el cliente (por ejemplo, su sitio web o aplicación móvil) y el servidor de Xsolla, por lo que no hay carga adicional ni en el cliente ni en el servidor.
Dé los siguientes pasos:
- Para permitir que el servidor de Websocket de Xsolla y su cliente identifiquen los mensajes de estado del pedido, cree una conexión:
- javascript
1const client = new Centrifuge(
2connectionURL,
3{
4data: {
5 user_external_id: user_external_id,
6 auth: auth,
7 project_id: project_id
8}
9}
10)
11connectionURL - wss://ws-store.xsolla.com/connection/websocket
12auth - user JWT token
- Para recibir nuevos mensajes sobre el estado del pedido, suscríbase a los eventos mediante la función
client.on
:
- javascript
1client.on('publication', (ctx) => {
2 //handle the status
3});
- Desencadenar el establecimiento de una conexión real:
- javascript
1client.connect()
- Para recibir el historial de cambios en los estados del pedido, conecte el método del historial de la API.
- javascript
1client.on('subscribed', function (ctx) {
2 client.history(ctx.channel, { limit: -1, since: { offset: 0 }, reverse: false }).then(function (resp) {
3resp.publications.forEach((ctx) => {
4 /handle the status
5});
6
7 }, function (err) {
8 //handle the status
9 });
10});
Ejemplo de cuerpo de mensaje:
- javascript
1{
2order_id: 59614241,
3status: 'new'
4}
Están disponibles los siguientes estados de pedido:
New
— pedido creado pero no pagadoPaid
— pedido pagadoDone
— pedido entregado (todos los recibos enviados, entregas realizadas por parte de Xsolla, plataformas externas, etc.)Canceled
— pedido cancelado y pago reembolsado a un usuario
Recomendaciones de uso de Websocket:
- El tiempo de espera máximo de una respuesta mediante websocket es de 5 minutos.
- La conexión debería establecerse al abrir la interfaz de pago.
- La conexión debería interrumpirse cuando se reciba el estado final del pedido, ya sea
Canceled
oDone
. - Si se agota la vida útil del websocket o si hay cualquier problema con la conexión, recurra al sondeo corto.
Sondeo corto
Para obtener información detallada sobre los artículos del pedido después de cambiar el estado, llame a la API Obtener pedido.
API de eventos de Xsolla
Descripción general
La API de eventos de Xsolla le permite utilizar el servicio GetUpdates para recibir y gestionar los datos de pago directamente desde el cliente de su aplicación sin tener que utilizar webhooks en su servidor. Utilice esta opción de integración para simplificar la integración y evitar tener que configurar su propio servidor para procesar webhooks de pago.
Interacción entre su juego y Xsolla:
Cómo establecerlo
Para recibir eventos de Xsolla mediante API:
- En su proyecto en Cuenta del editor, vaya a Project settings > Webhooks.
- Haga clic en Use API. La configuración se guarda de forma automática.
- Desde el cliente de la aplicación, envíe una solicitud a
https://getupdate.xsolla.com/events
para obtener información sobre el pago. Consulte las referencias de API para obtener más información. En la respuesta, recibirá los datos de pago en el mismo formato que el webhook Pago. - Si el pago se realiza correctamente, conceda la compra al usuario.
Referencia de la API
Obtener lista de eventos no procesados para el usuario
- http
1GET https://getupdate.xsolla.com/events
Seguridad: Token JWT de usuario con Bearer
Ejemplo de respuesta:
- json
1{
2 "events": [
3 {
4 "id": 49, // event_id
5 "status": 0,
6 "created_at": "2025-04-03T21:21:27Z",
7 "data": {
8 "notification_type": "payment",
9 "purchase": {
10 "order": {
11 "id": 000000001,
12 "lineitems": [
13 {
14 "quantity": 1,
15 "sku": "skill"
16 }
17 ]
18 }
19 },
20 ...
21 }
22 }
23 ]
24}
Marcar un evento como procesado
- http
1POST https://getupdate.xsolla.com/events/<event_id>/processed
event_id
es el parámetro events.id
que se obtiene de la respuesta a la llamada a la API Obtener lista de eventos no procesados para el usuario.
Seguridad: Token JWT de usuario con Bearer
El método XsollaCatalog.Purchase
encapsula varios métodos de seguimiento del estado del pedido. El mecanismo de seguimiento se explica en la documentación del SDK para Unity (PC, web).
Además, puede implementar el procesamiento del estado y del contenido de un pedido, que se transmiten a la función de devolución de llamada onSuccess
del método de compra.
Puede hacer el seguimiento del estado del pedido usando el método AuthViaSocialNetwork
del SDK. Transmita los siguientes parámetros al método:
AccessToken
: el token de pago, el cual se recibió al adquirir el artículo.OrderId
: el ID del pedido, el cual se recibió al adquirir el artículo.SuccessCallback
: devolución de llamada de pago realizada correctamente.ErrorCallback
: devolución de llamada de error de la solicitud.bIsUserInvolvedToPayment
: si el usuario participa en el proceso de pago. Transmitatrue
para la compra con moneda real, yfalse
para la compra de artículos gratuitos y la compra con moneda virtual.
El mecanismo de seguimiento se explica en la documentación de SDK de nivel empresarial para Unreal Engine.
Para solicitar el estado y el contenido de un pedido, invoque el método CheckOrder
del SDK, transmitiéndole los siguientes parámetros:
AccessToken
: el token de pago, el cual se recibió al adquirir el artículo.OrderId
: el ID del pedido, el cual se recibió al adquirir el artículo.SuccessCallback
: la devolución de llamada para la comprobación satisfactoria del pedido. La respuesta contiene el estado del pedido.ErrorCallback
: devolución de llamada de error de la solicitud.
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.
Se han configurado 2 opciones de recepción de webhooks en el lado de Xsolla cuando se compran y devuelven artículos: la información con los datos del pago y de la transacción, y la información sobre los artículos comprados pueden llegar por separado o combinarse en un solo webhook.
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 Successful payment for order (order_paid
) y Order cancellation (order_canceled
). En este caso, no es necesario procesar los webhooks Payment (payment
) y Refund (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:
- Payment (
payment
) y Refund (refund
) con información sobre los datos de pago y los detalles de la transacción. - Successful payment for order (
order_paid
) y Order cancellation (order_canceled
) con información sobre los artículos comprados.
Debe procesar todos los webhooks entrantes.
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.
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 > Successful payment for order (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.
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. |
Pagos > Pago (payment ) | Contiene datos de pago y detalles de la transacción. |
Servicios del juego > Webhooks por separado > Successful payment for order (order_paid ) | Contiene información sobre los artículos comprados y los detalles de la transacción. Emplee los datos del webhook para agregar artículos al usuario. |
Pagos > Reembolso (refund ) | Contiene datos de pago y detalles de la transacción. |
Servicios del juego > Webhooks por separado > Cancelación del pedido (order_canceled ) | Contiene información sobre los artículos comprados y el ID de la transacción cancelada. 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 por separado.
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.
- Payment, Successful payment for order; y User validation si recibe webhooks separados
- Successful payment for order; y User validation 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:
- Abra su proyecto en Cuenta del editor.
- Haga clic en Project settings en el menú lateral y vaya a la sección Webhooks.
- En el campo Webhook URL, especifique la URL a la cual Xsolla enviará los webhooks.
- 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
,201
o204
en el caso de una respuesta correcta. - Código HTTP
400
con 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 Successful payment for order y Order cancellation 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.
Si el servidor de Xsolla no recibe una respuesta para los webhooks Pago o Reembolso o si recibe una respuesta con un código 5xx
, los webhooks también se reenvían con un intervalo mayor. Se realiza un máximo de 12 intentos en 12 horas.
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
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 {
15 "sku": "com.xsolla.gold_1",
16 "type": "virtual_currency",
17 "is_pre_order": false,
18 "is_free": false,
19 "is_bonus": false,
20 "is_bundle_content": true,
21 "quantity": 1500,
22 "amount": "[null]",
23 "promotions": []
24 }
25 ],
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.