Receba webhooks Xsolla
Ao processar uma compra, a Xsolla envia webhooks para notificar vários eventos (por exemplo, cancelamento de pagamento, obtenção do conteúdo de um carrinho). Você pode usar esses webhooks para:
- adicionar compras ao inventário do jogador, se você usar sua própria solução ou uma solução terceirizada
- implemente sua própria lógica para verificar e processar um pedido para registrar informações, conceder recompensas, dar descontos para um pedido, etc.
Para receber webhooks no lado do BaaS, adicione funções de uso pronto ao seu projeto seguindo as instruções para Firebase e PlayFab.
Adicione a Cloud Function ao projeto Firebase
- Inicialize seu projeto Firebase.
- Importe a função de recebimento de webhooks, dentro da qual
<WebhookSecretKey>
é a Secret key encontrada na Conta de Distribuidor na seção Project settings > Webhooks.
Código de função para receber webhooks:
Copy
- javascript
const webhookSecretKey = "<WebhookSecretKey>";
exports.webhook = functions.https.onRequest((request, response) => {
const requestRawBody = request.rawBody.toString("utf-8");
const crypto = require("crypto");
const sig = "Signature " + crypto
.createHash("sha1")
.update(requestRawBody + webhookSecretKey)
.digest("hex");
if (request.headers.authorization !== sig) {
response.status(401).send();
return;
}
// TODO Replace this block with your game's logic for purchases handling
switch (request.body.notification_type) {
case "order_paid": {
const userId = request.body.user.external_id;
const skus = request.body.items.map(function(it) {
return it.sku;
}).join(", ");
const price =
`${request.body.order.amount} ${request.body.order.currency}`;
functions.logger.log(
"Order Paid\n",
`A user ${userId} has just paid ${price} for ${skus}\n`,
"Full Data\n",
request.body
);
break;
}
case "order_canceled": {
const userId = request.body.user.external_id;
const orderId = request.body.order.id;
functions.logger.log(
"Order Canceled\n",
`A user ${userId} has just canceled order ${orderId}\n`,
"Full Data\n",
request.body
);
break;
}
}
response.status(204).send();
});
- Implemente a lógica para manipular webhooks.
Observação
A função é feita para receber webhooks relacionados à obtenção do conteúdo de um carrinho ao fazer uma compra e ao cancelamento de pagamentos. Você mesmo pode implementar o processamento dos webhooks relacionados a outros eventos na página de pagamento.
- Implemente a função do ambiente de produção conforme este exemplo.
- No console do Firebase, vá para
Build > Functions e copie o URL da função de recebimento de webhooks. - Abra seu projeto na Conta de Distribuidor.
- Vá para Project Settings > Webhooks.
- No campo Webhook server, especifique o URL da função de recebimento de webhooks.
Adicione o Cloud Script ao projeto PlayFab
Observação
Os Cloud Scripts PlayFab não oferecem suporte direto a funções com gatilhos HTTP, portanto, são usadas funções do Azure para implementar o recebimento de webhooks.
- Prepare o ambiente de desenvolvimento para trabalhar com Azure Functions.
- Seguindo o exemplo, adicione uma função para receber webhooks, dentro da qual
<WebhookSecretKey>
é a Secret key encontrada na Conta de Distribuidor na seção Project settings > Webhooks.
Código de função para receber webhooks:
Copy
- javascript
const webhookSecretKey = "<WebhookSecretKey>";
module.exports = async function (context, request) {
const requestRawBody = request.rawBody.toString("utf-8");
const crypto = require("crypto");
const sig = "Signature " + crypto
.createHash("sha1")
.update(requestRawBody + webhookSecretKey)
.digest("hex");
if (request.headers.authorization !== sig) {
context.res = {
status: 401
};
return;
}
// TODO Replace this block with your game's logic for purchases handling
switch (request.body.notification_type) {
case "order_paid": {
const userId = request.body.user.external_id;
const skus = request.body.items.map(function (it) {
return it.sku;
}).join(", ");
const price =
`${request.body.order.amount} ${request.body.order.currency}`;
context.log(
"Order Paid\n" +
`A user ${userId} has just paid ${price} for ${skus}\n` +
"Full Data\n" +
JSON.stringify(request.body)
);
break;
}
case "order_canceled": {
const userId = request.body.user.external_id;
const orderId = request.body.order.id;
context.log(
"Order Canceled\n" +
`A user ${userId} has just canceled order ${orderId}\n` +
"Full Data\n" +
JSON.stringify(request.body)
);
break;
}
}
context.res = {
status: 204
};
}
- Implemente a lógica para manipular webhooks.
Observação
A função é feita para receber webhooks relacionados à obtenção do conteúdo de um carrinho ao fazer uma compra e ao cancelamento de pagamentos. Você mesmo pode implementar o processamento dos webhooks relacionados a outros eventos na página de pagamento.
- Implante a função em um ambiente de produção.
- URL da função de cópia.
- Vá para seu projeto PlayFab.
- Registre a função Cloud Script.
- Abra seu projeto na Conta de Distribuidor.
- Vá para Project Settings > Webhooks.
- No campo Webhook server, especifique o URL da função de recebimento de webhooks.
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.