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
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
- Para recibir nuevos mensajes sobre el estado del pedido, suscríbase a los eventos mediante la función
client.on
:
- javascript
client.on('publication', (ctx) => {
//handle the status
});
- Desencadenar el establecimiento de una conexión real:
- javascript
client.connect()
- Para recibir el historial de cambios en los estados del pedido, conecte el método del historial de la API.
- javascript
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:
- javascript
{
order_id: 59614241,
status: 'new'
}
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.
NotaSe 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.
¿Has encontrado una errata u otro error de texto? Selecciona el texto y pulsa Ctrl+Intro.