API, webhooks և backend Հրապարակվել է May 22, 2026 8 րոպե ընթերցում

Անբավարարության բանալին վճարումների մեջ. ինչու է դա անհրաժեշտ և ինչպես օգտագործել այն

Idempotency ստեղնը պաշտպանում է վճարման ֆոնդը կրկնվող գործողություններից, կրկնօրինակ պատվերներից և կրկնվող փորձերի ժամանակ քաոսից:

Անբավարարության բանալին վճարումների մեջ. ինչու է դա անհրաժեշտ և ինչպես օգտագործել այն

Հոդվածի ֆոկուսը

Անբավարարության բանալին վճարումների մեջ. ինչու է դա անհրաժեշտ և ինչպես օգտագործել այնAPI, webhooks և backendpayment webhooksidempotency key վճարումներserver-side verification

Խնդիր. մեկ օգտվող, մի քանի հարցումներ

Կոճակը կարող է երկու անգամ սեղմվել, ցանցը կարող է կրկնել հարցումը, և webhook-ը կարող է մի քանի անգամ գալ:

Մեկ մտադրություն, բազմաթիվ առաքումներ
Կրկնվող գործողություններ ստեղծելու փոխարեն պետք է վերադարձնեն նույն արդյունքը:

Idempotency նշանակում է, որ նույն մտադրությունը կրկնելը կրկին չի փոխում արդյունքը: Սա հատկապես կարևոր է վճարումների դեպքում. կրկնվող հարցումը չպետք է ստեղծի երկրորդ պատվեր, երկրորդ վճարում կամ երկրորդ ստուգում:

Տիպիկ օրինակ. ֆրոնտենդը վճարում ստեղծելու հարցում է ուղարկել, բայց պատասխան չի ստացել ժամանակի դադարի պատճառով: Օգտագործողը կրկին սեղմում է կոճակը: Առանց անզորության, հետին պլանը կարող է ստեղծել նույն գումարով վճարման երկու փորձ:

  • վճարման ստեղծման հարցումը կրկնելը վերադարձնում է արդեն ստեղծված վճարման ID-ն.
  • webhook կրկնելը կրկին չի փոխում վերջնական կարգավիճակը.
  • հարկաբյուջետային առաջադրանքը կրկնելը երկրորդ ստուգում չի ստեղծում.
  • կրկնությունների սխալները տեսանելի են գրանցամատյանում:

Որտեղ պահել անզորության բանալին

Բանալին պետք է ապրի հետին պլանում և կապված լինի բիզնես նպատակների հետ, այլ ոչ միայն HTTP հարցման:

Անզորության պահպանում
Բանալին, գործողության տեսակը, հարցման հեշը, պատասխանը, կարգավիճակը և ժամկետի ավարտը:

Idempotency բանալին կարող է ստեղծվել հետին պլանում կամ ստացվել վստահելի հաճախորդից, սակայն հետնամասը պետք է ստուգի այն: Օգտակար է բանալին կապել գործողության տեսակի հետ՝ ստեղծել վճարում, առաքել webhook, ստեղծել ֆիսկալ անդորրագիր:

Պատահական կրկնակի օգտագործումից պաշտպանվելու համար արժե պահել հարցումների հեշը: Եթե ​​նույն բանալիով ստացվել է այլ գումար կամ այլ պատվերի ID, սա պետք է լինի սխալ, այլ ոչ թե նոր գործողություն:

  • բանալին + գործողության տեսակը որպես եզակի սահմանափակում;
  • հարցման հեշ՝ հարցումի անփոփոխությունը ստուգելու համար.
  • պահված պատասխանը անվտանգ կրկնության համար;
  • ժամկետանց քաղաքականություն՝ հին բանալիները մաքրելու համար:

Ինչպե՞ս է անզորությունը կապված կարգավիճակների հետ:

Idempotency-ն չի փոխարինում պետական մեքենային, այլ գործում է վավերական անցումների կանոնների հետ միասին։

Idempotency + պետական մեքենա
Կրկնօրինակ հրամանը անտեսվում է. վավեր նոր վիճակի անցումը մշակվում է:

Եթե վճարումն արդեն վերջնական վճարովի կարգավիճակում է, pending webhook-ի կրկնությունը չպետք է հետ դարձնի պատվերը: Idempotency-ն պաշտպանում է կրկնօրինակներից, իսկ պետական ​​մեքենան պաշտպանում է սխալ անցումներից:

Երկու պաշտպանությունն անհրաժեշտ է միաժամանակ: Բանալին օգնում է հասկանալ, որ վիրահատությունն արդեն կատարվել է, և անցումային կանոնները որոշում են, թե արդյոք բիզնեսի կարգավիճակը կարող է փոխվել:

  • վերջնական կարգավիճակը չի կարող վերագրվել հին միջանկյալով.
  • վերադարձը նոր իրադարձություն է, ոչ թե ձախողված.
  • կրկնօրինակ իրադարձությունները պետք է գրանցվեն որպես կրկնակի առաքում.
  • ձեռնարկի փոփոխությունները պետք է ունենան առանձին աուդիտի հետք:

FAQ

Արդյո՞ք «Idempotency» բանալին պետք է նույնը լինի պատվերի և վճարման համար:

Պարտադիր չէ: Սովորաբար ավելի լավ է բանալիներն առանձնացնել ըստ գործողության տեսակի՝ վճարման ստեղծում, webhook առաքում, ֆիսկալ առաջադրանք:

Ի՞նչ անել, եթե նույն բանալին այլ գումարով է եկել:

Սա համարեք հակամարտություն և նոր օպերացիա մի ստեղծեք։ Դա անելու համար պահվում է հարցման հեշը կամ ստուգվում են հիմնական դաշտերը:

Idempotency անհրաժեշտ է միայն POST հարցումների համար:

Ամենից հաճախ դա անհրաժեշտ է հրամանների համար, որոնք ստեղծում կամ փոխում են վիճակը՝ վճարում, չեկ, իրադարձության առաքում, վերադարձ: