Configure o rastreamento de status de pedidos

Para conceder itens ao usuário, você precisa se certificar de que o pagamento foi bem-sucedido.

Aviso
Você pode rastrear o status do pedido tanto no lado do cliente quanto no lado do servidor do seu aplicativo. Porém, recomendamos configurar um gerenciador de webhook Payment para receber informações no back-end do seu aplicativo. Isso permite que você implemente validações adicionais das compras concluídas.

Escolha um método para rastrear o status do pedido:

Escolha o método mais adequado para o seu projeto para acessar os dados Xsolla:

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.

Observação
Use aplicativos da web de teste como exemplo de implementação:

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

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 a API WebSocket 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: 2 de Abril de 2025

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!
Não conseguimos enviar seu feedback
Tente novamente mais tarde ou contate-nos via doc_feedback@xsolla.com.