Configure o rastreamento de status de pedidos
Para conceder itens ao usuário, você precisa se certificar de que o pagamento foi bem-sucedido.
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:
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.
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:
- 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 receber novas mensagens sobre status de pedidos, inscreva-se em eventos usando a função
client.on
:
- javascript
client.on('publication', (ctx) => {
//handle the status
});
- Acione o estabelecimento de uma conexão:
- javascript
client.connect()
- Para receber o histórico de alterações nos status de pedidos, conecte o método API de histórico.
- 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
});
});
Exemplo de corpo de mensagem:
- javascript
{
order_id: 59614241,
status: 'new'
}
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çãoUma 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.
O método XsollaCatalog.Purchase
encapsula diversos métodos para rastrear o status do pedido. O mecanismo de rastreamento é detalhado na documentação do SDK para Unity (PC, web).
Adicionalmente, você pode implementar o gerenciamento do status e conteúdo do pedido, que são passados à função de retorno de chamada onSuccess
do método comprado.
Você pode rastrear o status do pedido usando o método SDK CheckPendingOrder
. Passe os seguintes parâmetros ao método:
AccessToken
— o token de pagamento, que foi recebido ao comprar o item.OrderId
o ID de pedido, que foi recebido ao comprar o item.SuccessCallback
— o retorno de chamado de pagamento bem-sucedido.ErrorCallback
— o retorno de chamada de erro de solicitação.bIsUserInvolvedToPayment
— se o usuário está envolvido no processo de pagamento. Passetrue
para comprar com moedas reais, efalse
para a compra de itens grátis e compras com moedas virtuais.
O mecanismo de rastreamento é detalhado na documentação SDK de nível empresarial do Unreal Engine.
Para solicitar o status e conteúdo de um pedido, chame o método SDK CheckOrder
, passe os seguintes parâmetros a ele:
AccessToken
— o token de pagamento, que foi recebido ao comprar o item.OrderId
o ID de pedido, que foi recebido ao comprar o item.SuccessCallback
— o retorno de chamada de verificação de pedido bem-sucedido. A resposta contém o status de pedido.ErrorCallback
— o retorno de chamada de erro de solicitação.
Para rastrear o status dos pedidos criados e validá-los, você precisará configurar o processamento de webhooks no lado do servidor do seu aplicativo.
2 opções de recebimento de webhook forma configuradas no lado da Xsolla ao comprar e retornar itens — informações com dados de pagamento, transações e informações sobre os itens comprados podem vir separadamente ou podem ser combinados em um só webhook.
Mais informações sobre opções de recebimento de webhook
Recebendo informações em webhooks combinados:
Se você se cadastrou na Conta de Distribuidor após 22 de janeiro de 2025, você recebe todas as informações nos webhooks Pagamento bem-sucedido do pedido (order_paid
) e Cancelamento do pedido (order_canceled
). Neste caso, você não precisa processar os webhooks Pagamento (payment
) e Reembolso (refund
).
Recebimento de informações em webhooks separados:
Se você se cadastrou na Conta de Distribuidor no dia 22 de janeiro de 2025 ou antes, você recebe os seguintes webhooks:
- Pagamento (
payment
) e Reembolso (refund
) com informações sobre os dados de pagamento e da transação. - Pagamento bem-sucedido do pedido (
order_paid
) e Cancelamento do pedido (order_canceled
) com informações sobre os itens comprados.
Você precisa processar todos os webhooks recebidos.
Para trocar à nova opção de recebimento de webhooks combinados, contate seus Gerentes de Sucesso do Cliente ou envie um e-mail para csm@xsolla.com.
Para a operação completa da loja no jogo e gerenciamento de pagamento, é necessário implementar o processamento dos webhooks principais:
Nome do webhook | Descrição |
---|---|
User validation > User validation (user_validation ) | É enviado em diferentes estágios do processo de pagamento para confirmar se o usuário está registrado no jogo. |
Serviços de jogo > Webhooks combinados > Pagamento bem-sucedido do pedido (order_paid ) | Contém dados de pagamento, dados de transação e informações sobre os itens comprados. Use os dados do webhook para adicionar itens ao usuário. |
Game services > Combined webhooks > Order cancellation (order_canceled ) | Contém dados do pagamento cancelado, dados de transação e informações sobre os itens comprados. Use os dados do webhook para remover os itens comprados. |
O esquema abaixo demonstra o processo de compra e retorno de itens usando webhooks da lista.
Nome do webhook | Descrição |
---|---|
User validation > User validation (user_validation ) | É enviado em diferentes estágios do processo de pagamento para confirmar se o usuário está registrado no jogo. |
Payments > Payment (payment ) | Contém dados de pagamento e dados da transação. |
Serviços de jogo > Webhooks separados > Pagamento bem-sucedido do pedido (order_paid ) | Contém informações sobre os itens comprados e os dados da transação. Use os dados do webhook para adicionar itens ao usuário. |
Payments > Refund (refund ) | Contém dados de pagamento e dados da transação. |
Game services > Separate webhooks > Order cancellation (order_canceled ) | Contém informações sobre os itens comprados e o ID da transação cancelada. Use os dados do webhook para remover os itens comprados. |
O esquema abaixo demonstra o processo de comprar e retornar itens usando webhooks combinados da lista.
Se a personalização do catálogo de itens for implementada no lado do aplicativo, configure o processamento da personalização do catálogo no lado do parceiro.
- Pagamento, Pagamento bem-sucedido do pedido, e Validação do usuário se você receber webhooks separados.
- Pagamento bem-sucedido do pedido e Validação do usuário se você possuir webhooks combinados.
Para obter a lista completa de webhooks e informações gerais sobre trabalhar com eles, consulte a documentação de webhooks.
Configure o envio de webhooks
Para configurar webhooks no lado Xsolla:
- Abra seu projeto na Conta de Distribuidor.
- Clique em Project setttings no menu lateral e vá para a seção Webhooks.
- No campo Webhook URL, especifique o URL para o qual a Xsolla enviará os webhooks.
- Clique em Enable webhooks.
Adicionar ouvinte do webhook
O ouvinte de webhooks é um código de programa que permite receber webhooks de entrada em um endereço URL especificado, ao gerar uma assinatura e ao enviar uma resposta para o servidor webhook da Xsolla.
Geração de assinatura
Ao receber um webhook, você deve garantir a segurança da transmissão de dados. Para fazer isso, você deve gerar uma assinatura a partir dos dados do webhook e verificar se ela corresponde à assinatura enviada no cabeçalho da solicitação HTTP.
Para gerar uma assinatura:
- Concatene o JSON do corpo da solicitação e da chave secreta do projeto.
- Aplique a função de hash criptográfico SHA-1 à cadeia de caracteres obtida na primeira etapa.
Enviando respostas ao webhook
Para confirmar o recebimento do webhook, seu servidor deve retornar:
- O código HTTP
200
,201
ou204
no caso de uma resposta bem-sucedida. - O código HTTP
400
com uma descrição do problema se o usuário especificado não for encontrado ou uma assinatura inválida for passada.
Seu manipulador de webhook também pode retornar um código 5xx
em caso de problemas temporários em seu servidor.
Se o servidor da Xsolla não receber uma resposta aos webhooks Pagamento bem-sucedido do pedido e Cancelamento de pedido, ou receber uma resposta com um código 5xx
, os webhooks são reenviados de acordo com o seguinte cronograma:
- 2 tentativas com um intervalo de 5 minutos
- 7 tentativas com um intervalo de 15 minutos
- 10 tentativas com intervalo de 60 minutos
No máximo 20 tentativas de envio de webhooks são feitas dentro de 12 horas a partir da primeira tentativa.
Se o servidor da Xsolla não receber uma resposta ao webhook Pagamento ou Reembolso, ou se receber uma resposta com um código 5xx
, os webhooks também são reenviados com um intervalo de tempo maior. São feitas 12 tentativas no máximo dentro de 12 horas.
Se o servidor da Xsolla não receber uma resposta ao webhook Validação do usuário ou receber uma resposta com um código 400
ou 5xx
, o webhook Validação do usuário não é reenviado.
Nesse caso, um erro é exibido ao usuário e os webhooks Pagamento e Pagamento bem-sucedido do pedido não são enviados.
Encontrou um erro de texto ou digitação? Selecione o texto e pressione Ctrl+Enter.