Pular para o conteúdo principal
O Economy v2 agora está em disponibilidade geral. Para obter suporte e enviar comentários, acesse o Fórum do PlayFab.
Falhas de rede, tempos limite e solicitações duplicadas são inevitáveis em jogos ao vivo. O Economy v2 fornece o IdempotencyId para evitar transações duplicadas. Esse recurso garante que uma operação seja processada apenas uma vez, mesmo que a mesma solicitação seja enviada várias vezes. Para controle de simultaneidade otimista (garantir que uma gravação só seja bem-sucedida se o inventário não tiver sido alterado desde a sua última leitura), consulte ETags e controle de simultaneidade.

Pré-requisitos

Como funciona

Quando você inclui um IdempotencyId em uma solicitação de gravação de inventário, o PlayFab armazena esse ID por 14 dias. Se outra solicitação chegar com o mesmo IdempotencyId, o PlayFab retornará o resultado da solicitação original sem processar a operação novamente.

APIs compatíveis

O IdempotencyId é compatível com todas as APIs de gravação de inventário:

Exemplo: compra segura com repetição

Neste cenário, um jogador compra uma Espada Laser. O cliente gera um IdempotencyId exclusivo (por exemplo, um GUID) antes de enviar a solicitação:
Se o cliente não receber uma resposta (por exemplo, por tempo limite de rede), ele poderá repetir com segurança exatamente a mesma solicitação com o mesmo IdempotencyId. O PlayFab reconhece a duplicata e retorna o resultado original. O jogador é cobrado apenas uma vez.

Práticas recomendadas

  • Gere um ID exclusivo por operação lógica: use um GUID ou UUID. Não reutilize o mesmo ID para operações diferentes.
  • Gere o ID no lado do cliente antes da primeira tentativa: essa prática garante que todas as repetições usem o mesmo ID.
  • Não altere o corpo da solicitação entre as repetições: usar o mesmo IdempotencyId com um corpo de solicitação diferente causa um erro de conflito.
  • Os IDs expiram após 14 dias: depois disso, o mesmo ID pode ser usado novamente para uma nova operação.

As APIs de resgate são automaticamente idempotentes

As APIs de resgate de marketplace (RedeemAppleAppStoreInventoryItems, RedeemGooglePlayInventoryItems, RedeemMicrosoftStoreInventoryItems, RedeemSteamInventoryItems) não exigem um IdempotencyId. Elas são inerentemente idempotentes. Cada recibo ou token de marketplace só pode ser resgatado uma vez. Uma segunda chamada com o mesmo recibo retorna sucesso, mas não concede nada.

Cenários comuns

Confira também

Última modificação em 6 de outubro de 2026