
بررسی کنید تکرار پیام، باعث دریافت وجه یا تحویل دوباره نشود
ممکن است یک درخواست چند بار ارسال شود یا یک اعلان چند بار برسد. سامانه باید بتواند تشخیص دهد این پیامها به یک عملیات مربوطاند یا به چند عملیات مستقل. منظور از جلوگیری از ثبت دوبارهٔ اثر مالی این است که تکرار همان رویداد معتبر، بدهی، اعتبار، تحویل یا استرداد تازه ایجاد نکند. این ویژگی در طراحی اتصال امن پرداخت اهمیت دارد.
شناسه پیام و شناسه عملیات را یکی فرض نکنید. ممکن است دو پیام متفاوت درباره یک پرداخت باشند یا یک پیام چند تغییر وضعیت را بازتاب دهد. منبع هویت عملیات و قواعد تکرار را از قرارداد فنی خدمت بگیرید. کلید ساختگی که هر بار عوض میشود، لزوماً از اجرای دوباره جلوگیری نمیکند.
موقعیت: دو پردازش همزمان برای یک تراکنش
هر دو پیام یک پرداخت را دریافت میکنند و هر دو هنوز وضعیت را «پردازش نشده» میبینند. اگر هرکدام مستقل اعتبار بدهند، کنترل ظاهری بررسی وضعیت شکست میخورد. طراحی باید هنگام ثبت نتیجهٔ مالی، سازگاری و یکتایی لازم را حفظ کند؛ برای این کار، بررسی و ثبت نتیجه باید به شکلی هماهنگ انجام شوند که دو پردازش نتوانند هر دو یک مبلغ را ثبت کنند. این ویژگی را «ثبت اتمی» مینامند. قید یکتا در پایگاه داده نیز میتواند از ثبت چند رکورد برای یک شناسه جلوگیری کند. انتخاب و ترکیب این روشها به معماری سامانه بستگی دارد.
اثرهای بعدی را هم ببینید. ثبت یک پرداخت تنها مرحله حساس نیست. ایمیل تکراری شاید آزاردهنده باشد، اما ارسال دوباره کالا یا افزایش دوباره موجودی مالی خسارت دیگری دارد. هر اثر وابسته باید به هویت عملیات و وضعیت ثبتشده متصل شود. قرارگرفتن درخواستها در صف، بهتنهایی از ثبت دوبارهٔ نتیجهٔ مالی جلوگیری نمیکند.
سه آزمون ضروری در محیط مجاز
همان رویداد را دوباره پردازش کنید؛ دو پردازش همزمان را شبیهسازی کنید؛ قطع شدن اجرا میان ثبت وضعیت و اثر بعدی را بررسی کنید. معیار موفقیت، فقط نبود خطای نرمافزار نیست؛ باید تعداد و مبلغ اثرهای مالی درست باشد و تلاشهای تکراری قابل پیگیری بمانند.
در تکرار، داده ناسازگار را نادیده نگیرید. اگر همان شناسه با مبلغ یا سفارش متفاوت دیده شد، آن را صرفاً «قبلاً انجام شده» فرض نکنید. تناقض باید ثبت و بررسی شود. پاسخ به درخواست تکراری معتبر با پاسخ به درخواست دارای داده متناقض تفاوت دارد.
خودتان را بیازمایید: وجود یک شناسه پیگیری در گزارش، بهتنهایی تضمین میکند اعتبار دوبار ثبت نشده است؟ پاسخ: خیر؛ باید یکتایی در نقطه ایجاد اثر مالی و حالت همزمان آزموده شود.
این نکته را در کسبوکار خود اجرا کنید
در محیط آزمایشی مجاز، دو پیام همزمان دربارهٔ یک تراکنش و قطع ارتباط هنگام ثبت نتیجه را امتحان کنید. بررسی کنید فقط یک اثر مالی ایجاد شده باشد.
خروجی تمرین: شناسه عملیات، اثرهای ثبتشده و قید یا تراکنش داده.
مستندات و راهنماهای مرتبط
مستندات تأیید تراکنش درگاهجزئیات فنی دریافت و بررسی نتیجهٔ تأیید تراکنش.مستندات برداشت در پرداخت خودکارثبت و پیگیری درخواست برداشت مرتبط با مجوز مشتری.یک پرداخت معتبر دو بار اعلان شده و دو پردازش همزمان آماده افزایش موجودیاند. کدام طراحی از اثر مالی تکراری جلوگیری میکند؟
مطالعهٔ این درس را ثبت کنید.
با ثبت مطالعه، ادامهٔ مسیر را راحتتر پیدا میکنید.