Stripe پورسانت وابستهها را ایدمپوتنت کرد تا از پرداخت مضاعف در اجرای مجدد webhook جلوگیری شود
استرایپ سیستم ارسال وبهوک رو بهصورت «حداقل یکبار» طراحی کرده. یعنی اگه اندپوینت شما باخطا مواجه بشه یا حتی بدون خطا هم باشه، ممکنه رویداد `invoice.paid` چندبار برسه. اگه منطق پرداخت کمیسیون وابستهها روی هر بار دریافت رویداد، ردیف جدیدی اضافه کنه، یه پرداخت ممکنه دو، سه یا پنجبار کمیسیون به وابستهها بده.
چرا مهمه؟
استرایپ وبهوکها رو عمداً چندبار ارسال میکنه. اگه اندپوینت شما تایماوت بخوره یا خطای ۵۰۰ برگردونه، همون رویداد دوباره فرستاده میشه — گاهی تا سه روز. حتی وقتی همهچیز سالمه، امکان تکرار وجود داره. هر بار که رویداد `invoice.paid` بدون بررسی تکرارپذیری پردازش بشه، یه ردیف کمیسیون جدید اضافه میشه. نتیجه؟ پول واقعی از حساب شما خارج میشه و وابستهها بیش از حقشون دریافت میکنن.
به درد کی میخوره؟
توسعهدهندههای بکاند که با API استرایپ کار میکنن تیمهای مالی و حسابداری پلتفرمهای همکاری در فروش مدیران فنی استارتاپهای SaaS مهندسین نرمافزار که سیستم وبهوک طراحی میکنن
تو عمل چی کار کنیم؟
اگه سیستم پرداخت کمیسیون وابسته داری، باید منطق برابرسازی (idempotency) به کدت اضافه کنی. یعنی قبل از درج ردیف جدید، چک کنی رویداد قبلاً پردازش شده یا نه. رایجترین روش، استفاده از `event.id` بهعنوان کلید یکتاست. بدون این کار، هر وبهوک تکراری مستقیماً به ضرر مالی شما تموم میشه.
نظر Blue IT News
خیلی از تیمها وبهوکها رو فکر میکنن فقط یکبار میرسن و این باگ سکوتدار رو سالها حمل میکنن. اگه الان کمیسیون وابستهها رو دستی با صورتحسابها تطبیق میدی، وقت اونه که یه بار دقیق حساب کنی چند ردیف اضافه افتاده.