Resumo

  • Em um POST da API v1, a Stripe guarda o status e o corpo da primeira resposta após o início da execução, inclusive um 500. A mesma chave reproduz esse resultado enquanto for mantida.
  • A Stripe considera um 500 indeterminado: pode ter havido efeitos. A recuperação pode criar ou localizar um objeto e emitir webhook, sem mudar a resposta em cache. A API v2 tem outra regra de repetição.

O recibo não acompanha a recuperação

O sistema envia a solicitação e recebe 500. Repete com a mesma chave e recebe 500 de novo. Para a API v1 da Stripe, a segunda tela pode exibir uma cópia da primeira, não o resultado de uma segunda execução. Depois que o endpoint começa a trabalhar, a Stripe guarda status e corpo. O cabeçalho Idempotent-Replayed: true mostra quando a resposta foi reproduzida. Duas linhas vermelhas no painel não provam dois fracassos operacionais.

Há trabalho que pode continuar fora desse painel. A Stripe diz que um 500 deixa a consequência incerta: efeitos podem ter ocorrido. Na recuperação de incidentes, tenta conciliar operações e pode enviar webhooks de objetos criados. A resposta guardada não muda quando isso acontece, e a conciliação não tem sucesso garantido. Por isso, recibo HTTP e estado do objeto precisam de colunas próprias.

Uma identidade local para a operação deve existir antes da primeira chamada e acompanhar o recurso nos metadados. Com ela, o time procura o objeto, examina a requisição no Dashboard e liga um webhook verificado à ordem original. Abrir uma nova chave de idempotência enquanto a primeira consequência é desconhecida pode iniciar outra operação. A pressa de limpar o alerta vermelho pode produzir o erro que a chave antiga evitava.

A versão muda a resposta esperada. A Stripe descreve na API v2 tentativas que não repetem operações bem-sucedidas e que procuram concluir trabalho falho ou parcial, devolvendo um resultado atualizado quando possível. Uma migração de v1 para v2 precisa reescrever a regra operacional de retry. A pergunta inicial é qual contrato recebeu a solicitação; a seguinte é o que o objeto e o webhook mostram.

Fontes