پرش به محتوای اصلی
مدیریت دانشبهسازان ملت
دانش فنی و تخصصیراهنمای تخصصیمنتشرشدهداخلی

راهنمای استاندارد طراحی API در سامانه‌های بانکی

مالک دانش
مهسا کریمی
تاریخ انتشار
۲۰ شهریور ۱۴۰۵
آخرین به‌روزرسانی
۱۲ آبان ۱۴۰۵
زمان مطالعه
۱۴ دقیقه
بازدید
۱٬۲۸۴
پیشنهاد اصلاح

خلاصه مدیریتی

اصول، قراردادها و الزامات امنیتی طراحی APIهای REST در سامانه‌های بانکی بهسازان ملت؛ از نام‌گذاری منابع و نسخه‌بندی تا مدیریت خطا، صفحه‌بندی و Idempotency در تراکنش‌های مالی.

هدف و دامنه کاربرد

یکسان‌سازی طراحی رابط‌های برنامه‌نویسی همه سامانه‌های بانکی شرکت، به‌گونه‌ای که هر تیم بتواند APIهای تیم‌های دیگر را بدون مستند جداگانه و با کمترین خطا مصرف کند.

دامنه کاربرد

این راهنما برای همه APIهای REST داخلی و بیرونی در سامانه‌های همراه‌بانک، اینترنت‌بانک، بانکداری شرکتی و سرویس‌های پرداخت الزامی است. رابط‌های پیام‌محور مانند Kafka در مستند جداگانه‌ای پوشش داده می‌شوند.

پیش‌نیازها

  • آشنایی با اصول HTTP و قالب JSON
  • دسترسی به درگاه مدیریت API و محیط آزمایشی
  • مطالعه چک‌لیست امنیتی پیش از استقرار سرویس‌ها

شرح دانش

نام‌گذاری منابع و مسیرها

مسیرها بر پایه منبع و با اسم جمع و حروف کوچک نوشته می‌شوند و نوع عملیات با فعل HTTP بیان می‌شود، نه در خود مسیر. از ساختار تودرتوی بیش از دو سطح پرهیز کنید تا مسیرها خوانا و قابل نگهداری بمانند.

  • درست: GET /v1/accounts/{accountId}/transactions
  • نادرست: POST /v1/getAccountTransactions
  • شناسه‌ها همیشه در مسیر و فیلترها در پارامترهای پرس‌وجو قرار می‌گیرند

نسخه‌بندی و سازگاری

نسخه اصلی در ابتدای مسیر قرار می‌گیرد (v1، v2). تغییرات ناسازگار فقط در نسخه اصلی جدید منتشر می‌شوند و نسخه قبلی دست‌کم شش ماه پس از اعلام، با سرآیند Deprecation پشتیبانی می‌شود. افزودن فیلد اختیاری به پاسخ، تغییر سازگار به شمار می‌رود.

قالب استاندارد پاسخ خطا

همه خطاها با کد وضعیت HTTP مناسب و بدنه‌ای با ساختار یکسان بازگردانده می‌شوند. فیلد code برای پردازش ماشینی و فیلد message برای نمایش به کاربر نهایی است و هرگز نباید جزئیات فنی یا داده حساس را افشا کند.

json
{
  "code": "ACCOUNT_INSUFFICIENT_BALANCE",
  "message": "موجودی حساب برای انجام این تراکنش کافی نیست.",
  "traceId": "7f3a9c2e41b84d0e",
  "timestamp": "2026-11-03T08:15:42Z",
  "details": [
    { "field": "amount", "reason": "EXCEEDS_AVAILABLE_BALANCE" }
  ]
}

Idempotency در تراکنش‌های مالی

هر درخواست ایجاد تراکنش، مانند انتقال وجه، پرداخت قبض یا خرید شارژ، باید سرآیند Idempotency-Key را دریافت کند. سرویس با نگهداری کلید و نتیجه تا ۲۴ ساعت، در صورت تکرار درخواست همان پاسخ قبلی را بازمی‌گرداند و تراکنش دوباره ثبت نمی‌شود.

مراحل اجرا

  1. ۱

    تعریف قرارداد پیش از توسعه

    قرارداد API را با قالب OpenAPI 3 بنویسید و در مخزن قراردادها ثبت کنید. توسعه فقط پس از تأیید قرارداد آغاز می‌شود.

  2. ۲

    بازبینی در کمیته معماری

    قرارداد را برای بازبینی به تیم معماری سامانه‌ها ارسال کنید. بازبینی معمولاً ظرف دو روز کاری انجام می‌شود.

  3. ۳

    پیاده‌سازی و آزمون قرارداد

    آزمون‌های قرارداد را در خط استقرار فعال کنید تا هر انحراف از قرارداد پیش از انتشار شناسایی شود.

  4. ۴

    انتشار در درگاه API

    API را با سیاست‌های احراز هویت، محدودیت نرخ و ثبت رویداد در درگاه منتشر کنید و مستند آن را در فضای TECH پیوند دهید.

تصاویر و نمودارها

مسیر درخواست در معماری API سازمان
  1. ۱کانال‌هاهمراه‌بانک، اینترنت‌بانک
  2. ۲درگاه APIاحراز هویت، محدودیت نرخ
  3. ۳سرویس‌های دامنهحساب، پرداخت، کارت
  4. ۴هسته بانکیثبت نهایی تراکنش
شکل ۱: درخواست کانال‌ها پس از عبور از درگاه API و اعمال سیاست‌های امنیتی به سرویس‌های دامنه و سپس هسته بانکی می‌رسد.

نکات تخصصی

برای فهرست‌های بزرگ، صفحه‌بندی مبتنی بر نشانگر (Cursor) را به صفحه‌بندی عددی ترجیح دهید؛ در جدول‌های تراکنشی سریع‌تر و پایدارتر است.

مقادیر مالی را به‌صورت عدد صحیح و به کوچک‌ترین واحد پول منتقل کنید تا خطای گردکردن رخ ندهد.

شناسه رهگیری را در همه لاگ‌ها و پاسخ‌های خطا بازگردانید تا عیب‌یابی میان تیم‌ها سریع‌تر شود.

خطاهای رایج و راهکارها

راهکار:کد وضعیت HTTP باید نتیجه واقعی را نشان دهد؛ کلاینت‌ها و درگاه API بر اساس همین کد رفتار می‌کنند.

مستندات و منابع مرتبط

  • الگوی قرارداد OpenAPI سازمان

    ZIP · ۴۸ کیلوبایت

    پیوست
  • فهرست کدهای خطای استاندارد

    Excel · ۱۲۴ کیلوبایت

    پیوست
  • معماری مرجع میکروسرویس‌ها در سامانه‌های پرداخت

    صفحه دانش

    مشاهده
  • چک‌لیست امنیتی پیش از استقرار سرویس‌ها در محیط عملیاتی

    صفحه دانش

    مشاهده

آیا این محتوا مفید بود؟

۹۶ همکار این دانش را مفید دانسته‌اند.

پیشنهاد اصلاح محتوا

اطلاعاتی نادرست، قدیمی یا ناقص دیدید؟ به مالک دانش اطلاع دهید.

نظرات و بازخورد همکاران۳

    • امیرحسین طاهریراهبر فنی تیم سامانه‌های پرداخت· ۱۲ آبان ۱۴۰۵

      بخش Idempotency دقیقاً همان چیزی بود که در سرویس‌های پرداخت کم داشتیم. پیشنهاد می‌کنم مدت نگهداری کلید برای تراکنش‌های تسویه را هم مشخص کنید.

    • مهسا کریمیکارشناس ارشد معماری نرم‌افزار· ۱۲ آبان ۱۴۰۵

      ممنون از پیشنهاد. برای تسویه ۷۲ ساعت در نظر داریم و در نسخه بعدی اضافه می‌کنم.

    • علی شریفیراهبر فنی همراه‌بانک· ۱۰ مهر ۱۴۰۵

      تیم همراه‌بانک از قالب خطای جدید استفاده کرد و نمایش پیام‌ها به کاربر بسیار یکدست‌تر شد.

Made with Modulify