Webhooks permitem que você receba notificações instantâneas de eventos configurados que acontecem no lado da Xsolla. Você pode usar webhooks para automatizar funções complementares e de back-end do seu aplicativo.
Exemplos de eventos sobre os quais você pode ser notificado:
Quando um evento pré-definido ocorre, a Xsolla notifica seu sistema por meio de webhooks. Como exemplo, você poderá executar as seguintes ações depois de receber um webhook:
Abaixo temos um exemplo de como um webhook de processamento de pagamento funciona:
As seguintes configurações devem ser aplicadas para que os webhooks funcionem corretamente:
185.30.20.0/24
, 185.30.21.0/24
,
185.30.23.0/24
.Aviso
Se o ouvinte receber um webhook com um ID de transação existente, ele deverá retornar o resultado anterior dessa transação. Não é recomendado cobrar o usuário duas vezes ou criar registros duplicados no banco de dados.
Observação
A Xsolla API aceita códigos de resposta HTTP convencionais para solicitações bem-sucedidas e com falha. O código 204 indica o processamento bem-sucedido.
Como as conexões com a internet nem sempre são 100% confiáveis, os webhooks podem ser perdidos ou atrasados. Para resolver esse problema, a Xsolla reenvia webhooks com falha até que o ouvinte os receba. Os reenvios de webhook são enviados dentro de 12 horas após o anterior até que o ouvinte confirme o recebimento. O número máximo de tentativas é 12.
Observação
Embora problemas de conexão possam resultar em webhooks perdidos, atrasados ou duplicados, a causa mais comum é uma lógica incorreta no lado do ouvinte.
As assinaturas digitais permitem a transmissão segura de dados. Para gerar uma assinatura:
POST /your_uri HTTP/1.1
host: your.host
accept: application/json
content-type: application/json
content-length: 165
authorization: Signature 52eac2713985e212351610d008e7e14fae46f902
{
"notification_type":"user_validation",
"user":{
"ip":"127.0.0.1",
"phone":"18777976552",
"email":"email@example.com",
"id":1234567,
"name":"Xsolla User",
"country":"US"
}
}
curl -v 'https://your.hostname/your/uri' \
-X POST \
-H 'authorization: Signature 52eac2713985e212351610d008e7e14fae46f902' \
-d '{
"notification_type":
"user_validation",
"user":
{
"ip": "127.0.0.1",
"phone": "18777976552",
"email": "email@example.com",
"id": 1234567,
"name": "Xsolla User",
"country": "US"
}
}'
Códigos de erro para o código HTTP 400:
Código | Mensagem |
---|---|
INVALID_USER | Usuário inválido |
INVALID_PARAMETER | Parâmetro inválido |
INVALID_SIGNATURE | Assinatura inválida |
INCORRECT_AMOUNT | Quantia incorreta |
INCORRECT_INVOICE | Invoice incorreto |
HTTP/1.1 400 Bad Request
{
"error":{
"code":"INVALID_USER",
"message":"Invalid user"
}
}