Obtenção do status do pedido do usuário

Obtenção do status do pedido do usuário

Você pode usar as seguintes maneiras de obter um status de pedido do usuário:

  1. No lado do servidor via webhooks.
  2. No lado do cliente via WebSocket API ou IGS API.

Obtenha o status do pedido do usuário no lado do servidor por meio de webhooks

Depois de configurar webhooks em seu servidor, você pode usá-los para obter os dados e o status do pedido.

Obtenha o status do pedido do usuário no lado do cliente via WebSocket API ou IGS API

Se você não tiver nenhum servidor ou implementar a lógica para processamento de compras no lado do cliente, você poderá usar as seguintes maneiras:
  1. WebSocket API.
  2. Short-polling.

Obtenção de status de pedido no lado do cliente usando WebSocket API

A solução utiliza websockets para obter diversos status do pedido sem obter informações detalhadas sobre ele. Esse método é preferível: apenas uma conexão é criada entre o cliente (por exemplo, seu site ou aplicativo móvel) e o servidor Xsolla, e portanto não há carga adicional no cliente ou no servidor.

Observação
Se você não tiver seu próprio servidor para lidar com webhooks, ou se você usar a lógica de processamento de compra do lado do cliente, você poderá usar o WebSocket API utilizando o Centrifuge SDK.

Conclua as seguintes etapas:

  1. Para permitir que o servidor de websocket Xsolla e o seu cliente identifiquem mensagens de status de pedido, crie uma conexão:

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 receber novas mensagens sobre status de pedidos, inscreva-se em eventos usando a função client.on:
Copy
Full screen
Small screen
client.on('publication', (ctx) => {
   //handle the status
});
  1. Acione o estabelecimento de uma conexão:
Copy
Full screen
Small screen
client.connect()
  1. Para receber o histórico de alterações nos status de pedidos, conecte o método API de histórico.
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
   });
});

Exemplo de corpo de mensagem:

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

Os seguintes status de pedido são possíveis:

  • New — o pedido foi criado mas não pago
  • Paid — o pedido foi pago
  • Done — o pedido foi entregue (todos os recibos enviados, entregas feitas do lado da Xsolla, plataformas externas, etc.)
  • Canceled — o pedido é cancelado e o pagamento reembolsado a um usuário

Recomendações de uso de websocket:

  • O tempo máximo de espera por uma resposta via websocket é de 5 minutos.
  • A conexão deve ser estabelecida ao abrir a interface de pagamento.
  • A conexão deve ser abortada quando o status final do pedido for recebido, seja ele Canceled ou Done.
  • Se o tempo de vida útil do websocket expirar, ou se houver qualquer problema com a conexão, utilize short-polling.

    Short-polling

    Para obter informações detalhadas sobre itens no pedido depois de alternar para o status, chame a API Obter pedido.

    Observação
    Uma pesquisa periódica de status do pedido é usada — uma solicitação HTTP simples que recebe o status do pedido e informações sobre o pedido. O atraso recomendado entre as solicitações é de 3 segundos.
    Este artigo foi útil?
    Obrigado!
    Podemos melhorar alguma coisa? Mensagem
    Que pena ouvir isso
    Explique porque este artigo não foi útil para você. Mensagem
    Obrigado pelo seu feedback!
    Avaliaremos sua mensagem e a usaremos para melhorar sua experiência.
    Última atualização: 8 de Novembro de 2024

    Encontrou um erro de texto ou digitação? Selecione o texto e pressione Ctrl+Enter.

Relatar um problema
Nós sempre avaliamos nossos conteúdos. Seu feedback nos ajuda a melhorá-los.
Forneça um e-mail para que possamos responder
Obrigado pelo seu feedback!