Skip to main content
Repetir uma chamada que cria dinheiro só é seguro com Idempotency-Key. Esta receita assume que você já a envia — se não, comece por Idempotência.

A matriz

A regra por trás dela: repita quando o type for api_error ou rate_limit_error. Não repita quando for invalid_request_error, authentication_error, permission_error ou not_found_error.

O caso que justifica tudo

502 provider_unavailable é o motivo de a Idempotency-Key existir. O provedor não respondeu. Pode ser que a cobrança tenha sido criada lá e a resposta se perdido no caminho — você não tem como saber. Repetir sem chave criaria a segunda cobrança. Com a mesma chave, você recebe a primeira, com Idempotent-Replayed: true.
Reutilize a mesma chave ao repetir. É exatamente isso que transforma uma indisponibilidade momentânea do provedor em uma nova tentativa segura, em vez de uma segunda cobrança.

Backoff exponencial

Quando desistir

Cinco tentativas é um teto razoável para uma chamada síncrona, com o comprador esperando na tela. Depois disso, mostre uma mensagem honesta e mande o pedido para uma fila de retentativa mais lenta — a Idempotency-Key continua válida por 24 horas, e é ela que torna a retomada segura horas depois.

O que registrar

Em cada tentativa que falhou, registre code, type, o status HTTP, a Idempotency-Key e o horário. Sem a chave e o horário no log não há como sabermos qual requisição foi a sua quando você abrir um chamado.

Veja também

Idempotência

Como a chave funciona e o que serve de chave.

Erros

O catálogo completo de códigos.

Ficou algo de fora? Escreva para suporte@usevext.com. Se o assunto for uma chamada específica, informe o horário dela; se for uma entrega de webhook, informe o X-Vext-Delivery — é por ele que localizamos a tentativa, a resposta do seu servidor e o horário.