Obtener el estado del pedido del usuario

Obtener el estado del pedido del usuario

Puede utilizar las siguientes formas para obtener el estado del pedido de un usuario:

  1. En el lado del servidor mediante webhooks.
  2. En el lado del cliente mediante WebSocket API o IGS API.

Obtener el estado del pedido del usuario en el lado del servidor mediante webhooks

Cuando haya configurado los webhooks en su servidor, podrá utilizarlos para obtener los detalles y el estado del pedido.

Obtener el estado del pedido del usuario en el lado del cliente a través de WebSocket API o IGS API

Si no dispone de servidor o implementa la lógica para el procesamiento de compras en el lado del cliente, puede utilizar las siguientes formas:
  1. WebSocket API.
  2. Short-polling.

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.

Nota
Si no tiene un servidor propio para gestionar los webhooks, o emplea una lógica de procesamiento de compra en el lado del cliente, puede usar la API de WebSocket mediante el SDK de Centrifuge.

Dé los siguientes pasos:

  1. Para permitir que el servidor de Websocket de Xsolla y su cliente identifiquen los mensajes de estado del pedido, cree una conexión:

Copy
Full screen
Small screen
const client = new Centrifuge(
connectionURL,
{
data: {
  user_external_id: user_external_id,
  auth: auth,
  project_id: project_id
}
}
)
connectionURL - wss://ws-store.xsolla.com/connection/websocket
auth - user JWT token
  1. Para recibir nuevos mensajes sobre el estado del pedido, suscríbase a los eventos mediante la función client.on:
Copy
Full screen
Small screen
client.on('publication', (ctx) => {
   //handle the status
});
  1. Desencadenar el establecimiento de una conexión real:
Copy
Full screen
Small screen
client.connect()
  1. Para recibir el historial de cambios en los estados del pedido, conecte el método del historial de la API.
Copy
Full screen
Small screen
client.on('subscribed', function (ctx) {
   client.history(ctx.channel, { limit: -1, since: { offset: 0 }, reverse: false }).then(function (resp) {
resp.publications.forEach((ctx) => {
   /handle the status
});

   }, function (err) {
       //handle the status
   });
});

Ejemplo de cuerpo de mensaje:

Copy
Full screen
Small screen
{
order_id: 59614241,
status: 'new'
}

Están disponibles los siguientes estados de pedido:

  • New — pedido creado pero no pagado
  • Paid — pedido pagado
  • Done — 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 o Done.
  • 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.

    Nota
    Se utiliza un sondeo periódico del estado del pedido: una simple solicitud HTTP que recibe el estado del pedido e información sobre el mismo. El retardo recomendado entre solicitudes es de 3 segundos.
    ¿Te ha resultado útil este artículo?
    ¡Gracias!
    ¿Hay algo en lo que podamos mejorar? Mensaje
    Lo sentimos
    Por favor, cuéntanos por qué no te ha resultado útil este artículo. Mensaje
    ¡Gracias por tu mensaje!
    Nos ayudará a mejorar tu experiencia.
    Última actualización: 8 de Noviembre de 2024

    ¿Has encontrado una errata u otro error de texto? Selecciona el texto y pulsa Ctrl+Intro.

Informar de un problema
Nos esforzamos por ofrecer contenido de calidad. Tus comentarios nos ayudan a mejorar.
Déjanos tu correo electrónico para que te podamos responder
¡Gracias por tu mensaje!