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