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 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.
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
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
:
- javascript
1client.on('publication', (ctx) => {
2 //handle the status
3});
- Acione o estabelecimento de uma conexão:
- javascript
1client.connect()
- Para receber o histórico de alterações nos status de pedidos, conecte o método API de histórico.
- 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:
- 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.
API de evento da Xsolla
Visão geral
A API de evento Xsolla permite que você use o serviço GetUpdates para receber e gerenciar informações de pagamento diretamente do seu aplicativo cliente sem precisar usar webhooks no seu servidor. Use essa poção de integração se desejar acelerar e simplificar sua integração eliminando a necessidade de configurar e manter seu próprio servidor para processar webhooks.
Integração entre seu jogo e a Xsolla:
Como configurar
Para receber eventos da Xsolla via API:
- Na sua Conta de Distribuidor, acesse a seção Project settings > Webhooks.
- Clique em Use API. As configurações são salvas automaticamente.
- Do aplicativo cliente, envie uma solicitação para
https://getupdate.xsolla.com/events
para obter informações de pagamento. Consulte as referências API para obter informações detalhadas. Na resposta, você receberá dados de pagamento no mesmo formato que o webhook Pagamento. - Se o pagamento for bem-sucedido, conceda a compra ao usuário.
Referência da API
Obter a lista de eventos não processados para os usuários
- http
1GET https://getupdate.xsolla.com/events
Segurança: Token JWT do usuário portador
Amostra de resposta:
- json
1{
2 "events": [
3 {
4 "id": 49, // event_id
5 "status": 0,
6 "created_at": "2025-04-03T21:21:27Z",
7 "data": {
8 "notification_type": "payment",
9 "purchase": {
10 "order": {
11 "id": 000000001,
12 "lineitems": [
13 {
14 "quantity": 1,
15 "sku": "skill"
16 }
17 ]
18 }
19 },
20 ...
21 }
22 }
23 ]
24}
Marque o evento como processado
- http
1POST https://getupdate.xsolla.com/events/<event_id>/processed
event_id
é o parâmetro events.id
obtido na resposta da chamada de API Obter lista de eventos não processados do usuário.
Segurança: Token JWT do usuário portador
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 comprar e retornar itens usando webhooks combinados.
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 compra e retorno de itens usando webhooks separados.
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.
Configurando informações de item em webhooks
Você pode configurar quais dados de itens são inclusos nos webhooks Pagamento do pedido bem-sucedido e Cancelamento do pedido pela matriz items.
Habilitação da inclusão de parâmetros adicionais
Habilite a inclusão de parâmetros adicionais que indicam:
- se o item é grátis (
is_free
) - se o item é um bônus (
is_bonus
) - se o item faz parte de um conjunto (
is_bundle_content
)
Para receber esses parâmetros, você deve trocar seus webhooks para a versão 2
usando a chamada de API Atualizar informações sobre as configurações do webhook. Na versão 1
(padrão), esses parâmetros não estão disponíveis.
Exemplo de uma matriz de items com parâmetros adicionais:
- json
1
2"items": [
3 {
4 "sku": "com.xsolla.item_new_1",
5 "type": "bundle",
6 "is_pre_order": false,
7 "is_free": false,
8 "is_bonus": false,
9 "Is_bundle_content": false,
10 "quantity": 1,
11 "amount": "1000",
12 "promotions": []
13 },
14 {
15 "sku": "com.xsolla.gold_1",
16 "type": "virtual_currency",
17 "is_pre_order": false,
18 "is_free": false,
19 "is_bonus": false,
20 "is_bundle_content": true,
21 "quantity": 1500,
22 "amount": "[null]",
23 "promotions": []
24 }
25 ],
Desativação da inclusão de conteúdos de conjunto
Por padrão, webhooks incluem todos os tipos de itens do conjunto como uma lista de itens individuais. Você pode configurar o webhook para incluir apenas o conjunto em si, sem listar seus conteúdos.
Nesse caso, os itens inclusos no conjunto não são inclusos na matriz items. Na matriz exibida acima, o item com o SKU com.xsolla.gold_1
, que é parte do conjunto, é excluído.
Exemplo de uma matriz de items quando o conteúdo do conjunto está desativado:
- json
1
2"items": [
3 {
4 "sku": "com.xsolla.item_new_1",
5 "type": "bundle",
6 "is_pre_order": false,
7 "is_free": false,
8 "is_bonus": false,
9 "Is_bundle_content": false,
10 "quantity": 1,
11 "amount": "1000",
12 "promotions": []
13 }
14 ],
Para desativar a inclusão de conteúdos do conjunto, entre em contato com seu Gerente de Sucesso do Cliente ou envie um e-mail para csm@xsolla.com.
Encontrou um erro de texto ou digitação? Selecione o texto e pressione Ctrl+Enter.