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:
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 API WebSocket ou API Store Builder
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: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:
- Para permitir que o servidor de websocket Xsolla e o seu cliente identifiquem mensagens de status de pedido, crie uma conexão:
Copy
- 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 receber novas mensagens sobre status de pedidos, inscreva-se em eventos usando a função
client.on
:
Copy
- javascript
1client.on('publication', (ctx) => {
2 //handle the status
3});
- Acione o estabelecimento de uma conexão:
Copy
- javascript
1client.connect()
- Para receber o histórico de alterações nos status de pedidos, conecte o método API de histórico.
Copy
- 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});
Exemplo de corpo de mensagem:
Copy
- javascript
1{
2order_id: 59614241,
3status: 'new'
4}
Os seguintes status de pedido são possíveis:
New
— o pedido foi criado mas não pagoPaid
— o pedido foi pagoDone
— 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
ouDone
. - 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 pelo seu feedback!
Avaliaremos sua mensagem e a usaremos para melhorar sua experiência.Encontrou um erro de texto ou digitação? Selecione o texto e pressione Ctrl+Enter.