Stripe သည် တုံ့ပြန်မှု ပျောက်ဆုံးသွားသည့်အခါ သင်၏ တောင်းဆိုမှုကို မှတ်မိနေပါသည်။
ဆာဗာသည် လုပ်ဆောင်ချက် ပြီးစီးပြီးနောက် အချိန်ကုန်သွားခြင်းကြောင့် ငွေရှင်းခြင်းကို မသေချာစေနိုင်ပါသည်။
ဆာဗာသည် လုပ်ဆောင်ချက် ပြီးစီးပြီးနောက် အချိန်ကုန်သွားခြင်းကြောင့် ငွေရှင်းခြင်းကို မသေချာစေနိုင်ပါသည်။ ဤ Under the Hood ရှင်းလင်းချက်သည် တည်ငြိမ်သော လုပ်ဆောင်ချက်သော့များ၊ သိမ်းဆည်းထားသောတုံ့ပြန်မှု ပြန်လည်ဖွင့်ခြင်း၊ ကန့်သတ်ချက်များနှင့် တစ်ပြိုင်နက်တည်း ကန့်သတ်ချက်များ၊ ထိန်းသိမ်းမှုအချိန်ကာလနှင့် ရလဒ်ပေါင်းစပ်ညှိနှိုင်းမှုတို့ကို ပြသရန် Stripe API v1 ၏ မှတ်တမ်းတင်ထားသော idempotency စာချုပ်ကို အသုံးပြုထားပါသည်။
ရေးသားထားသော ထုတ်ဝေမှု (အင်္ဂလိပ်) ကို ဖတ်ရန် ↗
ဤဗီဒီယိုတွင် ဖော်ပြထားသောအရာများ
- Idempotency သည် လုပ်ဆောင်ချက်တစ်ခုကို ထပ်ခါတလဲလဲ လုပ်ဆောင်ခြင်း၏ ရည်ရွယ်ထားသော အကျိုးသက်ရောက်မှုကို ရည်ညွှန်းပါသည်။ Stripe API v1 သည် မှတ်တမ်းတင်ထားသော သိမ်းဆည်းထားသည့် တုံ့ပြန်မှု ပြန်လည်ဖွင့်ခြင်း စာချုပ်ကို ထပ်ထည့်ထားပါသည်။
- တူညီသော ယုတ္တိတန်သော လုပ်ဆောင်ချက်ကို ပြန်လည်ကြိုးစားခြင်းသည် တူညီသောသော့နှင့် ကန့်သတ်ချက်များကို အသုံးပြုပါသည်။ သီးခြား SDK ခေါ်ဆိုမှုများ သို့မဟုတ် အပလီကေးရှင်း ပြန်လည်စတင်မှုများတွင် လုပ်ဆောင်ချက်သော့ကို ဆက်လက်ထိန်းသိမ်းထားပါ။ အမှန်တကယ် အသစ်ဖြစ်သော လုပ်ဆောင်ချက်တစ်ခုသည် ၎င်း၏ကိုယ်ပိုင်သော့ လိုအပ်ပါသည်။
- အဆုံးမှတ် လုပ်ဆောင်မှု စတင်ပြီးနောက် Stripe API v1 သည် ပထမဆုံး တောင်းဆိုမှု၏ အခြေအနေနှင့် ကိုယ်ထည်ကို 500 အမှားများအပါအဝင် သိမ်းဆည်းထားပြီး ပြန်လည်ကြိုးစားမှုများတွင် သိမ်းဆည်းထားသော တုံ့ပြန်မှုကို ပြန်ပို့ပေးပါသည်။
- တူညီသောသော့ဖြင့် ပြောင်းလဲထားသော ကန့်သတ်ချက်များသည် ကိုက်ညီမှုမရှိခြင်းကို ဖြစ်ပေါ်စေပါသည်။ အတည်ပြုခြင်း ပျက်ကွက်မှုများနှင့် တစ်ပြိုင်နက်တည်း လုပ်ဆောင်မှု ပဋိပက္ခများသည် ထိုကြိုးစားမှုအတွက် အိုင်ဒမ်ပိုတန်ရလဒ်ကို မသိမ်းဆည်းဘဲ ပြန်လည်ကြိုးစားနိုင်ပါသည်။
- Stripe သည် API v1 သော့များကို အနည်းဆုံး 24 နာရီကြာ သိမ်းဆည်းထားပြီး ထို့နောက်တွင် ၎င်းတို့ကို ဖျက်ပစ်နိုင်ပါသည်။ မဖြေရှင်းနိုင်သော ကွန်ရက်ပြန်လည်ကြိုးစားမှုများကို ပထမဆုံး 24 နာရီအတွင်း ကန့်သတ်ထားပြီး လုပ်ဆောင်ချက်ကို ပြန်လည်မလုပ်ဆောင်မီ ရပ်တန့်၍ ညှိနှိုင်းပါ။
- ကွန်ရက်ချိတ်ဆက်မှု ပြန်လည်ကောင်းမွန်လာပြီးနောက် သိမ်းဆည်းထားသော 500 အမှားသည် ဆက်လက်ပြန်လည်ဖွင့်နိုင်ပါသည်။ မူရင်းလုပ်ဆောင်ချက်တွင် ဘေးထွက်ဆိုးကျိုးများ ရှိနိုင်ပါသည်။ ၎င်း၏ရလဒ်ကို စစ်ဆေးရန် သက်ဆိုင်ရာ object၊ Dashboard တောင်းဆိုမှုနှင့် webhooks များကို အသုံးပြုပါ။
- API v2 သည် မတူညီသော ပြန်လည်ဖွင့်ခြင်း အဓိပ္ပာယ်ဖွင့်ဆိုချက်များကို အသုံးပြုပါသည်။ သော့တစ်ခုသည် အီးမေးလ်၊ ကုန်ပစ္စည်းစာရင်းနှင့် ဒေသတွင်းဒေတာဘေ့စ် လုပ်ဆောင်ချက်တိုင်းအတွက် အမြဲတမ်း တစ်ကြိမ်တည်း ပေးပို့ခြင်းကို သတ်မှတ်မပေးနိုင်ပါ။
ဘာသာပြန်ထားသော စာသားမှတ်တမ်း
မူရင်း အင်္ဂလိပ်စကားပြောမှ ဘာသာပြန်ထားသည်။ ရရှိနိုင်သော အသံနှင့် စာတန်းထိုးများကို YouTube မှ ထိန်းချုပ်ထားသည်။
အချိန်ကုန်သွားခြင်းက သင့်ငွေပေးချေမှုကို ဖျက်သိမ်းလိုက်ပါသလား။
0:00 အချိန်ကုန်သွားရင် သင့်ငွေပေးချေမှု ပျက်ကွက်သွားပြီလို့ သင်ထင်နေပါတယ်။ ဆာဗာက အဖြေပြန်မလာခင်မှာ ပြီးသွားနိုင်ပါတယ်၊ သင့်ငွေရှင်းကောင်တာမှာ ဘာမှမပြဘဲ ဖြစ်နေပါလိမ့်မယ်။ ဘာကြောင့် ပြန်လည်ကြိုးစားရင် ထပ်ပြီး ကောက်ခံနိုင်တာလဲ။ Stripe က ကြိုးစားမှုတစ်ခုကို ဘယ်လိုမှတ်မိထားတာလဲ။ ဘယ်အချိန်မှာ ပြန်လည်ကြိုးစားတာကို ရပ်သင့်သလဲ။ ပြီးတော့ ဆိုးရွားတဲ့ အသေးစိတ်အချက်တစ်ခုကို သတိရပါ။ မှတ်မိနေတဲ့ အမှားက ကွန်ရက်ပြဿနာထက် ပိုကြာရှည်နိုင်တယ်။
0:17 အဲဒါကို ပြန်လာကြည့်ပါမယ်။ ဒါက The Daily Diff ပါ၊ အတွင်းပိုင်းကို လေ့လာခြင်းပါ။
idempotency key က ဘာကို ဖော်ထုတ်ပေးပါသလဲ။
0:21 Idempotency ဆိုတာ လုပ်ဆောင်ချက်တစ်ခုကို ထပ်ခါတလဲလဲ လုပ်ဆောင်တာဟာ တစ်ကြိမ်လုပ်ဆောင်တာနဲ့ တူညီတဲ့ ရည်ရွယ်ချက်ရှိတယ်ဆိုတာကို ဆိုလိုတယ်။ Idempotency သော့တစ်ခုက ယုတ္တိတန်တဲ့ လုပ်ဆောင်ချက်တစ်ခုကို မှတ်သားပေးတယ်။ Stripe ရဲ့ API ဗားရှင်းတစ်က အဲဒီမှတ်သားချက်ကို ပြန်လည်ကြိုးစားမှုတွေမှာ မှတ်မိပြီး သိမ်းဆည်းထားတဲ့ တုံ့ပြန်မှုကို ပြန်လည်ထုတ်လွှင့်တယ်။ ကော်ဖီဝယ်တာကို မြင်ယောင်ကြည့်ပါ။ Stripe က သင့်ငွေပေးချေမှု တောင်းဆိုချက်ကို ပြီးမြောက်စေပြီး တုံ့ပြန်မှုက ပြန်လာရင်းနဲ့ ပျောက်သွားတယ်၊ ဖောက်သည်က လည်နေတဲ့ သင်္ကေတကို မြင်နေရတယ်။ သူတို့ဘဏ်က ပိုပြီး စိတ်လှုပ်ရှားစရာ ကောင်းတဲ့ အဓိပ္ပာယ်ဖွင့်ဆိုချက် ရှိနိုင်တယ်။ ကာကွယ်မှုမရှိတဲ့ ဖန်တီးမှု တောင်းဆိုချက်က ဘေးထွက်ဆိုးကျိုးကို ထပ်ခါတလဲလဲ လုပ်ဆောင်နိုင်တယ်။
တူညီသောသော့က ပြန်လည်ကြိုးစားခြင်းကို ဘယ်လိုလုံခြုံစေပါသလဲ။
0:45 ပထမဆုံး ကြိုးစားမှုမတိုင်ခင် ထူးခြားတဲ့ သော့တစ်ခုကို ချိတ်ပြီး ပြန်လည်ကြိုးစားမှုတွေအတွက် သိမ်းထားပါ။ သင့်အပလီကေးရှင်း ပြန်လည်စတင်ရင် အဲဒီသော့ကို လုပ်ဆောင်ချက်နဲ့အတူ သင့် မှတ်တမ်းတွေမှာ သိမ်းထားပါ။ Stripe ရဲ့ ဗားရှင်းတစ် API အတွက် အဆုံးမှတ် လုပ်ဆောင်မှု စတင်ပြီးတာနဲ့ ပထမဆုံး တောင်းဆိုမှုရဲ့ အခြေအနေနဲ့ ကိုယ်ထည်ကို သိမ်းဆည်းထားတယ်။ တူညီတဲ့သော့နဲ့ ကန့်သတ်ချက်တွေကို ထပ်ပို့လိုက်ရင် Stripe က သိမ်းဆည်းထားတဲ့ တုံ့ပြန်မှုကို ပြန်ပေးတယ်။ ကော်ဖီက သူ့နေရာမှာပဲ ရှိနေပြီး ပြေစာက ထပ်ပြီး သွားလာတယ်။
Stripe က ဘာကို အတိအကျသိမ်းဆည်းထားပါသလဲ။
1:07 ဒီမှာ Stripe ရဲ့ အမှန်တကယ် စကားလုံးတွေပါ။ တူညီတဲ့သော့နဲ့ ပြန်လည်ကြိုးစားမှုတွေက သိမ်းဆည်းထားတဲ့ တုံ့ပြန်မှုကို ပြန်ပေးတယ်၊ ၅၀၀ အမှားတွေ အပါအဝင်ပေါ့။ မှတ်တမ်းက သင့်ရဲ့ အကောင်းမြင်စိတ်နဲ့ နာမည်ပေးထားတဲ့ ပြန်လည်ကြိုးစားတဲ့ အကူအညီထက် ပိုပြီး အလုပ်လုပ်ပါတယ်။ ဖောက်သည်က ထပ်ပြီး နှိပ်တယ်။ သင့်အက်ပ်က အဲဒါက ဆိုင်းငံ့ထားတဲ့ ဝယ်ယူမှုကို ပြန်စတာလား ဒါမှမဟုတ် နောက်တစ်ခုကို စတာလားဆိုတာ ဆုံးဖြတ်တယ်။ အမှန်တကယ် အသစ်ဖြစ်တဲ့ ကော်ဖီက အသစ်သော့ ရတယ်။ ကွန်ရက်ပြန်လည်ကြိုးစားမှုတိုင်းအတွက် သော့အသစ်တစ်ခုက ကာကွယ်မှုကို ပျက်စီးစေတယ်။
1:27 တူညီတဲ့သော့နဲ့ မတူညီတဲ့ ကန့်သတ်ချက်တွေက ကိုက်ညီမှုမရှိခြင်းကို ဖြစ်စေတယ်။
တောင်းဆိုမှု ပြောင်းလဲသွားတဲ့အခါ ဘာဖြစ်သွားပါသလဲ။
1:30 ကန့်သတ်ချက်တွေ အတည်ပြုမှု မအောင်မြင်ရင် ဒါမှမဟုတ် အဲဒီသော့နဲ့ တခြားတောင်းဆိုမှုတစ်ခုက လုပ်ဆောင်နေဆဲဆိုရင် Stripe က အဲဒီကြိုးစားမှုအတွက် အိုင်ဒမ်ပိုတန်ရလဒ်ကို မသိမ်းဆည်းဘူး။ အဲဒီတောင်းဆိုမှုတွေကို ပြန်လည်ကြိုးစားနိုင်တယ်။ ယှဉ်ပြိုင်နေတဲ့ တောင်းဆိုမှုတစ်ခုက ပဋိပက္ခတစ်ခု ရတယ်။ ဒါတွေက ဗားရှင်းတစ် စည်းမျဉ်းတွေပါ။ ဗားရှင်းနှစ်က မတူညီစွာ လုပ်ဆောင်တယ်။ ခေါင်းစီးတစ်ခုက သင့်စနစ်တစ်လျှောက်လုံးမှာ အတိအကျ တစ်ကြိမ်တည်း ပေးပို့ခြင်းကို ကတိမပေးနိုင်ဘူး။ အီးမေးလ်၊ ကုန်ပစ္စည်းစာရင်းနဲ့ သင့်ဒေတာဘေ့စ်တစ်ခုစီက ချို့ယွင်းချက်ကို ကိုင်တွယ်ဖို့ လိုအပ်တယ်။
1:52 သော့က ၎င်းရဲ့ မှတ်တမ်းတင်ထားတဲ့ နယ်ပယ်အတွင်းက လုပ်ဆောင်ချက်ကို ကာကွယ်ပေးတယ်။ Stripe က ဗားရှင်းတစ် သော့တွေကို အနည်းဆုံး ၂၄ နာရီကြာ သိမ်းဆည်းထားပြီး
မှတ်မိထားတဲ့ ရလဒ်ကို ဘယ်လောက်ကြာကြာ ပြန်လည်ကြိုးစားဖို့ လုံခြုံပါသလဲ။
1:59 နောက်ပိုင်းမှာ ဖြုတ်ပစ်နိုင်တယ်။ ဖြုတ်ပစ်ထားတဲ့ သော့က တောင်းဆိုမှုအသစ်တစ်ခုကို လုပ်ဆောင်နိုင်တယ်။ မဖြေရှင်းနိုင်တဲ့ ပြန်လည်ကြိုးစားမှုတွေကို ပထမဆုံးရက်အတွင်းမှာပဲ ထားပါ။ အဲဒီထက် ကျော်လွန်ရင် ရပ်ပြီး မူရင်းရလဒ်ကို ညှိနှိုင်းပါ။ ဆာဗာကို အသက်ရှူစရာနေရာပေးဖို့ exponential backoff နဲ့ jitter ကို သုံးပါ။ မဟုတ်ရင် ပြန်လည်ကြိုးစားမှုတွေက မီးလောင်နေတဲ့ ကော်ဖီဆိုင်အပြင်ဘက်မှာ တန်းစီနေလိမ့်မယ်။ Stripe ရဲ့ libraries တွေက ပြန်လည်ကြိုးစားမှုတွေကို ကိုင်တွယ်ပေမယ့် သင့် library ရဲ့ မူရင်းအခြေအနေတွေကို စစ်ဆေးပါ။ အဲဒီတွယ်ကပ်နေတဲ့ အမှားက အတားအဆီးပဲ။
မှတ်မိနေတဲ့ အမှားက ဘာကြောင့် ဆက်ဖြစ်နေရပါသလဲ။
2:20 သိမ်းဆည်းထားတဲ့ ၅၀၀ တုံ့ပြန်မှုက ကွန်ရက်ချိတ်ဆက်မှု ပြန်လည်ကောင်းမွန်ပြီးနောက်မှာ ဆက်လက်ပြန်လည်ဖွင့်နေတယ်။ မူရင်းလုပ်ဆောင်ချက်က ဘေးထွက်ဆိုးကျိုးတွေ ဖြစ်ပေါ်စေနိုင်တယ်။ ၎င်းရဲ့ရလဒ်ကို object တွေ၊ Dashboard နဲ့ webhooks တွေသုံးပြီး ဖြေရှင်းပါ။ သော့အသစ်တစ်ခုက လုပ်ဆောင်ချက်ကို ထပ်ခါတလဲလဲ လုပ်ဆောင်နိုင်တယ်။ ကျွန်တော်ပြောတာကို နားထောင်တာထက် ဒါကို ဖတ်ချင်တယ်ဆိုရင်တော့ The Daily Diff က မနက်တိုင်း သင့်ဝင်စာပုံးထဲကို အခမဲ့ရောက်လာမှာပါ daily diff dot dev မှာ အောက်ကလင့်ခ်မှာပါ။
ဒီစာချုပ်နဲ့ ပြန်လည်ကြိုးစားတဲ့ ခလုတ်ကို ထုတ်လုပ်မှာလား။
2:39 စီရင်ချက်၊ အတွင်းပိုင်းကို လေ့လာခြင်း။ SHIP IT။ ကန့်သတ်ထားတဲ့ ပြန်လည်ကြိုးစားမှုတွေနဲ့ ညှိနှိုင်းမှုတွေနဲ့ တည်ငြိမ်တဲ့သော့တွေကို ထုတ်လုပ်မယ်၊ ဒါမှ ဖောက်သည်တွေက သင့်ဖြန့်ဝေထားတဲ့ စနစ်များပညာရေးအတွက် ငွေမထည့်ဘဲ ကော်ဖီရနိုင်မယ်။ ဒီနေ့အတွက် The Daily Diff ပါ။ ကျွန်တော်က Axrisi က Niko ပါ။ တာဝန်ယူမှုရှိစွာ ပေါင်းစပ်ပါ။
ရင်းမြစ်များ
- Idempotent requestsStripe Docs
- Designing robust and predictable APIs with idempotencyStripe Engineering — Brandur Leach
- Advanced error handlingStripe Docs
- HTTP Semantics — RFC 9110 §9.2.2 Idempotent MethodsIETF / RFC Editor



