Idempotenssi
Verkkoyhteydet pettävät. Jotta uudelleenyritykset olisivat turvallisia, lähetä Idempotency-Key-otsake jokaisessa
pyynnössä, joka luo jotakin (maksuaikomukset, kassaistunnot, laskut, maksulinkit, lompakot,
webhook-päätepisteet).
POST /v1/payment-intents HTTP/1.1Authorization: Bearer gp_live_YOUR_KEYIdempotency-Key: order-123Content-Type: application/jsonToimintaperiaate
Osio nimeltä “Toimintaperiaate”- Ensimmäinen avaimella tehty pyyntö käsitellään normaalisti, ja sen vastaus tallennetaan.
- Toisto samalla avaimella ja samoilla parametreilla palauttaa tallennetun vastauksen — toista objektia ei luoda.
- Toisto samalla avaimella mutta eri parametreilla torjutaan virheellä
idempotency_error. Käytä eri toimenpiteelle uutta avainta. - Kun ensimmäinen pyyntö on vielä kesken, samanaikainen kaksoiskappale odottaa hetken ja saa sitten joko tallennetun vastauksen tai ristiriitavastauksen, joka kehottaa yrittämään uudelleen.
- Avaimet ovat organisaatio- ja ympäristökohtaisia, ja niiden enimmäispituus on 255 merkkiä.
Maksuaikomusten avainten yksilöllisyys organisaatiota ja ympäristöä kohden pakotetaan lisäksi tietokannassa, joten raskaidenkin rinnakkaisten uudelleenyritysten aikana luodaan vain yksi aikomus.
Avainten valitseminen
Osio nimeltä “Avainten valitseminen”Johda avain omasta liiketoimintatunnisteestasi, jotta uudelleenyritykset — mistä tahansa prosessista — kohdistuvat samaan objektiin:
await gp.paymentIntents.create(params, { idempotencyKey: `order-${order.id}` });params.IdempotencyKey = "order-" + order.IDintent, err := client.PaymentIntents.Create(ctx, params)gp.payment_intents.create(**params, idempotency_key=f"order-{order.id}")Viralliset SDK:t luovat luontikutsuille satunnaisen avaimen, jos et anna omaa, ja käyttävät sitä uudelleen omissa automaattisissa uudelleenyrityksissään.