# Stripe-ը հիշում է Ձեր հարցումը, երբ պատասխանն անհետանում է

Published: 2026-10-11

Ժամանակի սահմանաչափը կարող է անորոշ թողնել վճարումը, երբ սերվերը ավարտել է գործողությունը։ «Under the Hood» բացատրությունը օգտագործում է Stripe API v1-ի փաստաթղթավորված իդեմպոտենտության պայմանագիրը՝ ցույց տալու համար կայուն գործողությունների բանալիներ, պահված պատասխանի վերարտադրում, պարամետրերի և միաժամանակության սահմանափակումներ, պահպանման ժամանակահորիզոն և արդյունքների համաձայնեցում։

Canonical: https://thedailydiff.dev/hy/video/idempotency-retries/

## Ինչ է ընդգրկում այս տեսանյութը

- Իդեմպոտենտությունը վերաբերում է գործողությունը կրկնելու նախատեսված ազդեցությանը։ Stripe API v1-ն ավելացնում է փաստաթղթավորված պահված պատասխանի վերարտադրման պայմանագիր։
- Նույն տրամաբանական գործողության կրկնությունը օգտագործում է նույն բանալին և պարամետրերը։ Գործողության բանալին պահպանեք տարբեր SDK կանչերի կամ հավելվածի վերագործարկումների միջև. իսկապես նոր գործողության համար անհրաժեշտ է իր սեփական բանալին։
- Վերջնակետի կատարման սկսվելուց հետո Stripe API v1-ը պահպանում է առաջին հարցման կարգավիճակը և մարմինը, ներառյալ 500 սխալները, և վերադարձնում է այդ պահված պատասխանը կրկնությունների ժամանակ։
- Փոփոխված պարամետրերը նույն բանալիով առաջացնում են անհամապատասխանություն։ Վավերացման ձախողումները և միաժամանակյա կատարման կոնֆլիկտները չեն պահպանում իդեմպոտենտ արդյունք այդ փորձի համար և կարող են կրկնվել։
- Stripe-ը պահպանում է API v1 բանալիները առնվազն 24 ժամ և դրանից հետո կարող է դրանք ջնջել։ Անլուծելի ցանցային կրկնությունները սահմանափակեք առաջին 24 ժամով, այնուհետև դադարեցրեք և համաձայնեցրեք մինչև գործողությունը կրկնելը։
- Քեշավորված 500 սխալը կարող է շարունակել վերարտադրվել կապի վերականգնումից հետո։ Սկզբնական գործողությունը կարող էր ունենալ կողմնակի ազդեցություններ. օգտագործեք համապատասխան օբյեկտը, Dashboard-ի հարցումը և վեբհուքերը՝ դրա արդյունքը պարզելու համար։
- API v2-ը օգտագործում է վերարտադրման այլ իմաստաբանություն։ Բանալին չի ապահովում էլեկտրոնային փոստի, գույքագրման և յուրաքանչյուր տեղական տվյալների բազայի գործողության ունիվերսալ «ճիշտ մեկ անգամ» առաքում։

## Գլուխներ

- 0:00 Արդյոք ժամանակի սահմանաչափը չեղարկե՞ց Ձեր վճարումը։
- 0:21 Ինչ է նույնացնում իդեմպոտենտության բանալին։
- 0:43 Ինչպես է նույն բանալին ապահով դարձնում կրկնությունը։
- 1:07 Ինչ է կոնկրետ պահպանում Stripe-ը։
- 1:28 Ինչ է տեղի ունենում, երբ հարցումը փոխվում է։
- 1:56 Որքա՞ն ժամանակ է հիշված արդյունքը անվտանգ կրկնելու համար։
- 2:19 Ինչու՞ կարող է հիշված սխալը շարունակել վերադառնալ։
- 2:39 Արդյո՞ք ես կուղարկեի կրկնության կոճակ այս պայմանագրով։

## Թարգմանված արձանագրություն

Թարգմանվել է բնօրինակ անգլերեն պատմությունից։ Հասանելի աուդիո և ենթագրերը վերահսկվում են YouTube-ի կողմից։

### Արդյոք ժամանակի սահմանաչափը չեղարկե՞ց Ձեր վճարումը։

0:00 Դուք կարծում եք, որ ժամանակի սահմանաչափը նշանակում է, որ Ձեր վճարումը ձախողվել է։ Սերվերը կարող է ավարտել, մինչդեռ պատասխանն անհետանում է, թողնելով Ձեր վճարումը վստահորեն ոչինչ չցուցադրելով։ Ինչու՞ կարող է կրկնությունը կրկին գանձել։ Ինչպե՞ս է Stripe-ը հիշում փորձը։ Ե՞րբ պետք է դադարեցնել կրկնումը։ Եվ հիշեք մի տհաճ մանրուք։ Հիշված սխալը կարող է գոյատևել ցանցային խնդրից։

0:17 Կվերադառնանք դրան։ Սա The Daily Diff-ն է, Under the Hood-ի տակ։

### Ինչ է նույնացնում իդեմպոտենտության բանալին։

0:21 Իդեմպոտենտությունը նշանակում է, որ գործողությունը կրկնելը ունի նույն նպատակային ազդեցությունը, ինչ մեկ անգամ անելը։ Իդեմպոտենտության բանալին նշում է մեկ տրամաբանական գործողություն։ Stripe-ի API-ի առաջին տարբերակը ճանաչում է այդ նշանը կրկնությունների ժամանակ և վերարտադրում է պահված պատասխանը։ Պատկերացրեք սուրճ գնելը։ Stripe-ն ավարտում է Ձեր վճարման հարցումը, և պատասխանը կորչում է տուն վերադառնալիս։ Հաճախորդը տեսնում է պտտվող պատկերակ։ Նրանց բանկը կարող է ունենալ ավելի հետաքրքիր մեկնաբանություն։ Անպաշտպան ստեղծելու հարցումը կարող է կրկնել կողմնակի ազդեցությունը։

### Ինչպես է նույն բանալին ապահով դարձնում կրկնությունը։

0:45 Կցեք եզակի բանալի առաջին փորձից առաջ և պահեք այն կրկնությունների համար։ Եթե Ձեր հավելվածը վերագործարկվում է, պահպանեք այդ բանալին գործողության հետ Ձեր գրառումներում։ Stripe-ի առաջին տարբերակի API-ի համար, երբ վերջնակետի կատարումը սկսվում է, առաջին հարցման կարգավիճակը և մարմինը պահպանվում են։ Նորից ուղարկեք նույն բանալին և պարամետրերը, և Stripe-ը կվերադարձնի պահված պատասխանը։ Սուրճը մնում է տեղում, մինչդեռ դրա անդորրագիրը կրկին ճանապարհորդում է։

### Ինչ է կոնկրետ պահպանում Stripe-ը։

1:07 Ահա Stripe-ի իրական ձևակերպումը։ Նույն բանալիով կրկնությունները վերադարձնում են պահված պատասխանը, ներառյալ հինգ հարյուր սխալները։ Փաստաթղթավորումը ավելի շատ աշխատանք է կատարում, քան Ձեր լավատեսորեն անվանված կրկնության օգնականը։ Հաճախորդը կրկին սեղմում է։ Ձեր հավելվածը որոշում է, թե արդյոք դա վերսկսում է սպասվող գնումը, թե սկսում է մեկ այլ մեկը։ Իսկապես նոր սուրճը ստանում է նոր բանալի։ Յուրաքանչյուր ցանցային կրկնության համար նոր բանալին չի ապահովում պաշտպանություն։

1:27 Տարբեր պարամետրերը նույն բանալիով առաջացնում են անհամապատասխանություն։

### Ինչ է տեղի ունենում, երբ հարցումը փոխվում է։

1:30 Եթե պարամետրերը ձախողում են վավերացումը, կամ այդ բանալիով մեկ այլ հարցում դեռ կատարվում է, Stripe-ը չի պահպանում իդեմպոտենտ արդյունք այդ փորձի համար։ Այդ հարցումները կարող են կրկնվել։ Մրցակցող հարցումը կոնֆլիկտ է առաջացնում։ Սրանք առաջին տարբերակի կանոններն են։ Երկրորդ տարբերակը այլ կերպ է գործում։ Վերնագիրը չի կարող խոստանալ «ճիշտ մեկ անգամ» առաքում Ձեր համակարգի ամբողջությամբ։ Էլեկտրոնային փոստը, գույքագրումը և Ձեր տվյալների բազան յուրաքանչյուրը կարիք ունեն ձախողման մշակման։

1:52 Բանալին պաշտպանում է գործողությունը իր փաստաթղթավորված շրջանակներում։ Stripe-ը պահպանում է առաջին տարբերակի բանալիները առնվազն քսանչորս ժամ և կարող է դրանք ջնջել

### Որքա՞ն ժամանակ է հիշված արդյունքը անվտանգ կրկնելու համար։

1:59 դրանից հետո։ Ջնջված բանալին կարող է կատարել նոր հարցում։ Անլուծելի կրկնությունները պահեք առաջին օրվա ընթացքում։ Դրանից հետո, դադարեցրեք և համաձայնեցրեք սկզբնական արդյունքը։ Օգտագործեք ցուցադրական հետաձգում և տատանում՝ սերվերին շնչելու հնարավորություն տալու համար։ Հակառակ դեպքում կրկնությունները հերթ կկազմեն այրվող սրճարանի դրսում։ Stripe-ի գրադարանները մշակում են կրկնությունները, բայց ստուգեք Ձեր գրադարանի լռելյայն պարամետրերը։ Այդ կպչուն սխալը խնդիրն է։

### Ինչու՞ կարող է հիշված սխալը շարունակել վերադառնալ։

2:20 Քեշավորված հինգ հարյուր պատասխանը շարունակում է վերարտադրվել կապի վերականգնումից հետո։ Սկզբնական գործողությունը կարող էր առաջացնել կողմնակի ազդեցություններ։ Լուծեք դրա արդյունքը օբյեկտների, Dashboard-ի և վեբհուքերի միջոցով։ Նոր բանալին կարող է կրկնել գործողությունը։ Եթե ավելի շուտ կցանկանայիք կարդալ սա, քան լսել իմ ասածը, ապա diff-ը հայտնվում է Ձեր մուտքի արկղում ամեն առավոտ, անվճար daily diff dot dev կայքում, հղումը ներքևում։

### Արդյո՞ք ես կուղարկեի կրկնության կոճակ այս պայմանագրով։

2:39 Դատավճիռ, Under the Hood-ի տակ։ SHIP IT. Ես կուղարկեի կայուն բանալիներ սահմանափակ կրկնություններով և համաձայնեցումներով, որպեսզի հաճախորդները սուրճ ստանան՝ առանց Ձեր բաշխված համակարգերի կրթությունը ֆինանսավորելու։ Եվ սա այսօրվա diff-ն է։ Ես Նիկոն եմ Axrisi-ից։ Միավորեք պատասխանատվությամբ։

## Աղբյուրներ

- [Idempotent requests](https://docs.stripe.com/api/idempotent_requests) — Stripe Docs
- [Designing robust and predictable APIs with idempotency](https://stripe.com/blog/idempotency) — Stripe Engineering — Brandur Leach
- [Advanced error handling](https://docs.stripe.com/error-low-level) — Stripe Docs
- [HTTP Semantics — RFC 9110 §9.2.2 Idempotent Methods](https://www.rfc-editor.org/rfc/rfc9110.html) — IETF / RFC Editor
