Executando verificação de segurança...
3

Interessante o conceito. Não conhecia. Obrigado por compartilhar.

Surgiu uma dúvida...
Se a string de Idempotencia é gerada com base no payload, ou seja, ela muda somente quando o payload muda, como funciona no caso de payloads (desejadamente) iguais?

Isto é... No caso de dois pagamentos subsequentes, de mesmo valor, para o mesmo favorecido. Vamos supor que um cliente acaba de comprar um chocolate, e logo após pagar, deseja comprar outro. Os payloads seriam iguais e isso seria considerado uma requisição duplicada?

Carregando publicação patrocinada...
1

O payload não seria igual, pois é necessário ter um ID distinto para cada transação. Veja na documentação da Stripe, por exemplo, o “idempotencyKey”. Esse identificador é gerado sempre que uma nova transação ocorre. Se você enviar uma request e ela falhar, por exemplo, devido a um timeout, ao tentar novamente, esse ID não será alterado. No entanto, se você mudar esse ID, uma nova operação será criada. O cliente é responsável por enviar a chave, pois é ele quem realiza o retry.

const stripe = Stripe('sk_test_Ho24N7La5CVDtbmpjc377lJI');
const customer = await stripe.customers.create(
  {
    description: 'My First Test Customer (created for API docs at https://docs.stripe.com/api)',
  },
  {
    idempotencyKey: 'KG5LxwFBepaKHyUD',
  }
);