Siirry sisältöön

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.1
Authorization: Bearer gp_live_YOUR_KEY
Idempotency-Key: order-123
Content-Type: application/json
  • 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.

Johda avain omasta liiketoimintatunnisteestasi, jotta uudelleenyritykset — mistä tahansa prosessista — kohdistuvat samaan objektiin:

await gp.paymentIntents.create(params, { idempotencyKey: `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.