+− THE DAILY DIFFdev & AI news
SHIP IT

Stripe inakumbuka ombi lako wakati jibu linapotoweka

Muda uliopita unaweza kuacha malipo yasiyokuwa na uhakika baada ya seva kumaliza operesheni.

Muda uliopita unaweza kuacha malipo yasiyokuwa na uhakika baada ya seva kumaliza operesheni. Maelezo haya ya "Under the Hood" yanatumia mkataba wa Stripe API v1 ulioandikwa wa usawa ili kuonyesha funguo za operesheni imara, kurudisha majibu yaliyohifadhiwa, vigezo na mipaka ya usawa, upeo wa uhifadhi na upatanisho wa matokeo.

Soma toleo lililoandikwa (Kiingereza) ↗

Nini video hii inashughulikia

  • Usawa unahusu athari iliyokusudiwa ya kurudia operesheni. Stripe API v1 inaongeza mkataba wa kurudisha majibu yaliyohifadhiwa.
  • Kujaribu tena hatua ileile ya kimantiki kunatumia funguo na vigezo vilevile. Weka funguo ya operesheni iendelee katika simu tofauti za SDK au kuanzisha upya programu; hatua mpya kabisa inahitaji funguo yake mwenyewe.
  • Baada ya utekelezaji wa mwisho kuanza, Stripe API v1 huhifadhi hali na mwili wa ombi la kwanza, ikiwa ni pamoja na makosa 500, na hurudisha jibu hilo lililohifadhiwa kwa majaribio tena.
  • Vigezo vilivyobadilika na funguo ileile huleta kutolingana. Kushindwa kwa uthibitisho na migogoro ya utekelezaji wa wakati mmoja haihifadhi matokeo yoyote ya usawa kwa jaribio hilo na yanaweza kujaribiwa tena.
  • Stripe huhifadhi funguo za API v1 kwa angalau masaa 24 na inaweza kuziondoa baadaye. Punguza majaribio ya mtandao yasiyotatuliwa kwa masaa 24 ya kwanza, kisha simama na upatanishe kabla ya kurudia operesheni.
  • Hitilafu ya 500 iliyohifadhiwa inaweza kuendelea kujirudia baada ya muunganisho kurejea. Operesheni ya asili inaweza kuwa na madhara; tumia kitu husika, ombi la Dashboard na webhooks ili kuanzisha matokeo yake.
  • API v2 inatumia semantiki tofauti za kurudisha. Funguo haianzishi utoaji wa mara moja tu kwa barua pepe, hesabu na kila operesheni ya hifadhidata ya ndani.

Nakala iliyotafsiriwa

Imetafsiriwa kutoka simulizi asili ya Kiingereza. Sauti na manukuu yanayopatikana yanadhibitiwa na YouTube.

Je, muda uliopita ulighairi malipo yako?

0:00 Unafikiri muda uliopita unamaanisha malipo yako yameshindwa. Seva inaweza kumaliza wakati jibu linapotea, ikiacha malipo yako yakiwa yanaonyesha kabisa chochote. Kwa nini kujaribu tena kunaweza kutoza tena? Stripe inakumbuka vipi jaribio? Unapaswa kuacha kujaribu tena lini? Na kumbuka undani mmoja mbaya. Kosa lililokumbukwa linaweza kuishi muda mrefu kuliko tatizo la mtandao.

0:17 Tutarudi kwenye hilo. Huu ni The Daily Diff, chini ya kofia.

Funguo ya usawa inatambua nini?

0:21 Usawa unamaanisha kurudia operesheni kuna athari ileile iliyokusudiwa kama kufanya mara moja. Funguo ya usawa inaweka lebo ya hatua moja ya kimantiki. Toleo la kwanza la API ya Stripe linatambua lebo hiyo kwenye majaribio tena na hurudisha jibu lililohifadhiwa. Fikiria kununua kahawa. Stripe inakamilisha ombi lako la malipo, na jibu linapotea likirudi nyumbani. Mteja anaona kipanga. Benki yao inaweza kuwa na tafsiri ya kusisimua zaidi. Ombi la kuunda lisilolindwa linaweza kurudia athari.

Je, funguo ileile inafanyaje kujaribu tena salama?

0:45 Ambatisha funguo ya kipekee kabla ya jaribio la kwanza na uihifadhi kwa majaribio tena. Ikiwa programu yako itaanza upya, hifadhi funguo hiyo na operesheni katika rekodi zako. Kwa API ya toleo la kwanza la Stripe, mara utekelezaji wa mwisho unapoanza, hali na mwili wa ombi la kwanza huhifadhiwa. Tuma funguo na vigezo vilevile tena, na Stripe itarudisha jibu lililohifadhiwa. Kahawa inabaki mahali pake wakati risiti yake inasafiri tena.

Stripe huhifadhi nini hasa?

1:07 Huu hapa ni maneno halisi ya Stripe. Majaribio tena na funguo ileile hurudisha jibu lililohifadhiwa, ikiwa ni pamoja na makosa mia tano. Hati zinafanya kazi zaidi kuliko msaidizi wako wa kujaribu tena aliyepewa jina la matumaini. Mteja anagonga tena. Programu yako huamua kama hiyo inaendeleza ununuzi uliosubiriwa au inaanza mwingine. Kahawa mpya kabisa inapata funguo mpya. Funguo mpya kwa kila jaribio la mtandao inashinda ulinzi.

1:27 Vigezo tofauti na funguo ileile huleta kutolingana.

Nini hutokea wakati ombi linabadilika?

1:30 Ikiwa vigezo vitashindwa uthibitisho, au ombi lingine na funguo hiyo bado linaendelea kutekelezwa, Stripe haihifadhi matokeo yoyote ya usawa kwa jaribio hilo. Maombi hayo yanaweza kujaribiwa tena. Ombi linaloenda kasi hupata mgogoro. Hizi ni sheria za toleo la kwanza. Toleo la pili linatenda tofauti. Kichwa hakiwezi kuahidi utoaji wa mara moja tu katika mfumo wako. Barua pepe, hesabu na hifadhidata yako kila moja inahitaji utunzaji wa kushindwa.

1:52 Funguo inalinda operesheni ndani ya wigo wake uliotajwa. Stripe huhifadhi funguo za toleo la kwanza kwa angalau masaa ishirini na nne na inaweza kuzipunguza

Je, matokeo yaliyokumbukwa ni salama kujaribu tena kwa muda gani?

1:59 baadaye. Funguo iliyopunguzwa inaweza kutekeleza ombi jipya. Weka majaribio yasiyotatuliwa ndani ya siku ya kwanza. Zaidi ya hapo, simama na upatanishe matokeo ya asili. Tumia kurudi nyuma kwa exponential na jitter kutoa nafasi ya kupumua kwa seva. Vinginevyo majaribio tena huunda foleni nje ya duka la kahawa linalowaka. Maktaba za Stripe hushughulikia majaribio tena, lakini angalia mipangilio chaguo-msingi ya maktaba yako. Hitilafu hiyo ngumu ndiyo changamoto.

Kwa nini kosa lililokumbukwa linaweza kuendelea kurudi?

2:20 Jibu la mia tano lililohifadhiwa huendelea kujirudia baada ya muunganisho kurejea. Operesheni ya asili inaweza kuwa imetoa madhara. Tatua matokeo yake kwa kutumia vitu, Dashboard na webhooks. Funguo mpya inaweza kurudia hatua. Ikiwa ungependa kusoma hili badala ya kunisikia nikisema, diff inafika kwenye kikasha chako kila asubuhi, bila malipo kwenye the daily diff dot dev, kiungo hapa chini.

Je, ningetumia kitufe cha kujaribu tena na mkataba huu?

2:39 Uamuzi, chini ya kofia. ISAFIRISHE. Ningetumia funguo imara na majaribio machache na upatanisho, ili wateja wapate kahawa bila kufadhili elimu yako ya mifumo iliyosambazwa. Na hiyo ndiyo diff ya leo. Mimi ni Niko kutoka Axrisi. Unganisha kwa uwajibikaji.

Vyanzo

  1. Idempotent requestsStripe Docs
  2. Designing robust and predictable APIs with idempotencyStripe Engineering — Brandur Leach
  3. Advanced error handlingStripe Docs
  4. HTTP Semantics — RFC 9110 §9.2.2 Idempotent MethodsIETF / RFC Editor

Video zinazohusiana