جب جواب غائب ہو جائے تو Stripe آپ کی درخواست کو یاد رکھتا ہے
ایک ٹائم آؤٹ سرور کے آپریشن مکمل کرنے کے بعد چیک آؤٹ کو غیر یقینی بنا سکتا ہے۔
ایک ٹائم آؤٹ سرور کے آپریشن مکمل کرنے کے بعد چیک آؤٹ کو غیر یقینی بنا سکتا ہے۔ یہ "انڈر دی ہڈ" ایکسپلینر Stripe API v1 کے دستاویزی آڈی پوتینسی کنٹریکٹ کا استعمال کرتے ہوئے مستحکم آپریشن کیز، محفوظ رسپانس ری پلے، پیرامیٹر اور بیک وقت عمل درآمد کی حدود، برقرار رکھنے کی مدت اور نتائج کی مفاہمت کو ظاہر کرتا ہے۔
تحریری ایڈیشن پڑھیں (انگریزی) ↗
اس ویڈیو میں کیا شامل ہے
- آڈی پوتینسی کا تعلق کسی آپریشن کو دہرانے کے مطلوبہ اثر سے ہے۔ Stripe API v1 ایک دستاویزی محفوظ رسپانس ری پلے کنٹریکٹ کا اضافہ کرتا ہے۔
- اسی منطقی عمل کی دوبارہ کوشش کے لیے وہی کلید اور پیرامیٹرز استعمال ہوتے ہیں۔ آپریشن کی کلید کو الگ SDK کالز یا ایپلیکیشن کے دوبارہ شروع ہونے کے دوران برقرار رکھیں؛ ایک حقیقی نئے عمل کے لیے اپنی کلید کی ضرورت ہوتی ہے۔
- اینڈ پوائنٹ کے عمل درآمد شروع ہونے کے بعد، Stripe API v1 پہلی درخواست کی حیثیت اور باڈی کو محفوظ کرتا ہے، بشمول 500 ایررز، اور دوبارہ کوششوں پر وہ محفوظ جواب واپس کرتا ہے۔
- اسی کلید کے ساتھ تبدیل شدہ پیرامیٹرز ایک مماثلت پیدا کرتے ہیں۔ توثیق کی ناکامیاں اور بیک وقت عمل درآمد کے تنازعات اس کوشش کے لیے کوئی آڈی پوتینٹ نتیجہ محفوظ نہیں کرتے اور انہیں دوبارہ کوشش کی جا سکتی ہے۔
- Stripe API v1 کیز کو کم از کم 24 گھنٹوں تک برقرار رکھتا ہے اور اس کے بعد انہیں ہٹا سکتا ہے۔ حل نہ ہونے والی نیٹ ورک کی دوبارہ کوششوں کو پہلے 24 گھنٹوں تک محدود رکھیں، پھر آپریشن کو دہرانے سے پہلے رکیں اور مفاہمت کریں۔
- ایک کیشڈ 500 کنیکٹیوٹی بحال ہونے کے بعد بھی دوبارہ چلتا رہ سکتا ہے۔ اصل آپریشن کے ضمنی اثرات ہو سکتے ہیں؛ اس کے نتیجے کو معلوم کرنے کے لیے متعلقہ آبجیکٹ، ڈیش بورڈ کی درخواست اور ویب ہکس کا استعمال کریں۔
- API v2 مختلف ری پلے سیمینٹکس استعمال کرتا ہے۔ ایک کلید ای میل، انوینٹری اور ہر مقامی ڈیٹا بیس آپریشن کے لیے عالمی طور پر "بالکل ایک بار" ڈیلیوری قائم نہیں کرتی ہے۔
ترجمہ شدہ ٹرانسکرپٹ
اصل انگریزی بیان سے ترجمہ کیا گیا۔ دستیاب آڈیو اور کیپشنز یوٹیوب کے زیر انتظام ہیں۔
کیا ٹائم آؤٹ نے آپ کی ادائیگی منسوخ کر دی؟
0:00 آپ سوچتے ہیں کہ ٹائم آؤٹ کا مطلب ہے کہ آپ کی ادائیگی ناکام ہو گئی ہے۔ سرور جواب غائب ہونے کے دوران کام مکمل کر سکتا ہے، آپ کے چیک آؤٹ کو اعتماد کے ساتھ بالکل کچھ نہیں دکھاتا ہے۔ ایک دوبارہ کوشش دوبارہ چارج کیوں کر سکتی ہے؟ Stripe ایک کوشش کو کیسے یاد رکھتا ہے؟ آپ کو دوبارہ کوشش کرنا کب بند کر دینا چاہیے؟ اور ایک گندی تفصیل کو ذہن میں رکھیں۔ ایک یاد رکھی ہوئی خرابی نیٹ ورک کے مسئلے سے زیادہ دیر تک رہ سکتی ہے۔
0:17 ہم اس پر واپس آئیں گے۔ یہ The Daily Diff ہے، پردے کے پیچھے سے۔
ایک آڈی پوتینسی کلید کس چیز کی شناخت کرتی ہے؟
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 کنیکٹیوٹی بحال ہونے کے بعد ایک کیشڈ پانچ سو رسپانس دوبارہ چلتا رہتا ہے۔ اصل آپریشن نے ضمنی اثرات پیدا کیے ہوں گے۔ آبجیکٹس، ڈیش بورڈ اور ویب ہکس کا استعمال کرتے ہوئے اس کے نتیجے کو حل کریں۔ ایک نئی کلید عمل کو دہرا سکتی ہے۔ اگر آپ اسے سننے کے بجائے پڑھنا چاہتے ہیں، تو ڈیف ہر صبح آپ کے ان باکس میں مفت آتا ہے daily diff dot dev پر، لنک نیچے دیا گیا ہے۔
کیا میں اس کنٹریکٹ کے ساتھ دوبارہ کوشش کا بٹن بھیجوں گا؟
2:39 فیصلہ، پردے کے پیچھے سے۔ SHIP IT۔ میں محدود دوبارہ کوششوں اور مفاہمت کے ساتھ مستحکم کیز بھیجوں گا، تاکہ صارفین کو آپ کے تقسیم شدہ سسٹمز کی تعلیم کے لیے فنڈنگ کیے بغیر کافی ملے۔ اور آج کا ڈیف یہی ہے۔ میں Axrisi سے نیکو ہوں۔ ذمہ داری سے ضم کریں۔
ذرائع
- 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



