TGViewer
DevTwitter | توییت برنامه نویسی DevTwitter | توییت برنامه نویسی @devtwitter · 32.2K subscribers
Post #13307 5.18K
یه کلیک، دو تا برداشت پول — این یه باگ نیست، یه چیزیه که همه‌ی API‌ها دیر یا زود باهاش روبرو می‌شن

سناریو: کاربر روی "پرداخت ۵۰ دلار" می‌زنه. شبکه قطع‌ومتصل می‌شه. کلاینت response رو نمی‌بینه، فکر می‌کنه fail شده، دوباره همون request رو می‌فرسته. نتیجه بدون محافظت؟ ۱۰۰ دلار برداشت شده. نتیجه با Idempotency Key؟ همون ۵۰ دلار — دقیقاً یه بار.

راه‌حل تو Laravel: کلاینت یه UUID به اسم Idempotency-Key می‌فرسته که برای هر عملیات یه بار تولید می‌شه و روی retry هم عوض نمی‌شه. یه middleware قبل از رسیدن به بیزینس‌لاجیک چک می‌کنه این key قبلاً دیده شده یا نه:
— اگه جدیده → پردازش می‌کنه و نتیجه رو ذخیره می‌کنه.
— اگه تکراریه → همون response قبلی رو دقیقاً عیناً برمی‌گردونه، بدون اجرای دوباره‌ی هندلر.

این دقیقاً همون الگوییه که Stripe، GitHub و PayPal روی endpoint‌های حساسشون پیاده کردن.

@DevTwitter | <Seyed taha Aghamir/>
  • 🍌 34
  • 👍 26
  • 👎 1
More from @devtwitter
  1. Sep 26, 2026🔥 بین مدل ML و یه محصول واقعی، یه مسیر مهم وجود داره: MLOps. ✔️ ساختن یه مدل خوب تازه شرو…
  2. Sep 26, 2026یجا درمورد dsl خوندم یاد dsl خودم افتادم که تو عصر gpt-4o ساختم برای tool call های موازی و…
  3. Sep 26, 2026Post #13342
  4. Sep 26, 2026کدهای پرشتاب | Go؛ از یک ترند تازه تا رقابت با زبان‌های بزرگ💥 📍ایونت آنلاین و رایگان اخی…
  5. Sep 26, 2026Post #13340
  6. Sep 26, 2026اتفاقاً منم دقیقاً لایا رو بردم زیر فشار تست بنچمارک سنگین! انداختمش جای مغز متفکر یه بازی…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →