چرخه اتصال یک پروژه MVC به درگاه پرداخت بانک
چرخه اتصال یک پروژه MVC به درگاه پرداخت بانک
مقدمه
یکی از بخشهای حیاتی هر وبسایت فروشگاهی یا سامانه آنلاین، امکان پرداخت اینترنتی امن است. کاربران انتظار دارند پس از انتخاب کالا یا خدمات، بتوانند هزینه را بهسادگی و با کارت بانکی خود پرداخت کنند. برای این کار، وبسایت باید به یک درگاه پرداخت بانکی متصل شود.
در ایران، بانکها از طریق درگاه پرداخت اینترنتی (IPG) این امکان را فراهم میکنند. بانک سامان نیز بهعنوان یکی از بانکهای پیشرو، درگاه پرداخت اختصاصی خود را ارائه میدهد. اتصال پروژههای تحت وب مثل ASP.NET MVC به این درگاه باعث میشود که فرآیند خرید آنلاین به صورت امن و مطمئن انجام شود.
نکته مهم این است که درگاه بانکی هیچگاه اطلاعات کارت را در اختیار سایت شما قرار نمیدهد. تمام عملیات حساس مثل ورود شماره کارت، رمز دوم و CVV2 در صفحه امن بانک انجام میشود. وظیفه پروژه شما فقط این است که کاربر را به درگاه هدایت کند، پاسخ پرداخت را دریافت کند و با تأیید نهایی از سمت بانک، نتیجه را در سیستم ثبت کند.
به این ترتیب، چرخه پرداخت شامل سه بخش اصلی است:
هدایت کاربر به درگاه بانک
دریافت نتیجه اولیه از درگاه
تأیید نهایی تراکنش از طریق وبسرویس بانک
۱. آمادهسازی و دریافت اطلاعات از بانک
شما به عنوان پذیرنده (Merchant) باید در بانک ثبتنام کنید.
بانک به شما Merchant ID (شناسه پذیرنده) و معمولاً یک رمز اختصاصی میدهد.
این اطلاعات برای احراز هویت شما در درگاه لازم است.
۲. مرحله ایجاد تراکنش در سمت وبسایت
کاربر در وبسایت شما (MVC) یک محصول یا خدمت انتخاب میکند و دکمه پرداخت را میزند.
سیستم شما یک شناسه تراکنش داخلی (OrderId) ایجاد میکند تا بتوانید بعداً پیگیری کنید.
شما مبلغ، شماره سفارش، شناسه پذیرنده و سایر اطلاعات لازم را آماده میکنید.
۳. هدایت کاربر به درگاه بانک
کاربر از سایت شما به صفحه پرداخت بانک هدایت میشود.
این کار معمولاً با ارسال پارامترهای تراکنش (مثل مبلغ، OrderId، MerchantId و ...) به درگاه انجام میشود.
در این مرحله، کنترل پرداخت به دست بانک است و اطلاعات کارت بانکی فقط در درگاه وارد میشود (نه در سایت شما).
۴. نتیجه پرداخت در درگاه بانک
بانک تراکنش را بررسی میکند (اطلاعات کارت، موجودی، رمز دوم و ...)
سپس نتیجه را به کاربر نشان میدهد: موفق یا ناموفق.
در هر صورت، بانک یک کد وضعیت (Status Code) تولید میکند.
۵. بازگشت کاربر به وبسایت شما
بعد از اتمام عملیات، بانک کاربر را به آدرس بازگشتی (Callback URL) که قبلاً به بانک دادهاید، منتقل میکند.
در این انتقال، اطلاعات مهمی مثل OrderId، شماره مرجع پرداخت (RefId یا ResCode) و وضعیت تراکنش ارسال میشود.
۶. تأیید نهایی تراکنش (Verification)
در این مرحله شما نباید فقط به اطلاعاتی که بانک در Callback فرستاده اکتفا کنید.
سایت شما باید یک درخواست تأیید نهایی (Verify) به وبسرویس بانک بفرستد.
بانک بررسی میکند که:
تراکنش واقعاً موفق بوده؟
مبلغ دقیقاً همان مقداری است که شما خواستهاید؟
دوبار مصرف نشده؟
اگر همهچیز درست باشد، بانک وضعیت "تأیید نهایی" را برمیگرداند.
۷. ثبت نتیجه در سیستم شما
پس از تأیید نهایی، شما باید در دیتابیس خود وضعیت تراکنش را به عنوان پرداخت موفق ذخیره کنید.
اگر پرداخت موفق نباشد یا تأیید نهایی رد شود، وضعیت باید به عنوان ناموفق ثبت شود و دسترسی به محصول/خدمت داده نشود.
۸. ارائه نتیجه به کاربر
در نهایت، سیستم شما صفحهای به کاربر نشان میدهد (موفق یا ناموفق بودن پرداخت).
اگر موفق بود، امکان دسترسی به سرویس یا محصول خریداریشده داده میشود.
نکته مهم:
چرخه پرداخت بانک در MVC مثل هر درگاه بانکی دیگر از سه گام اصلی تشکیل میشود:
ارسال کاربر به درگاه
بازگشت از درگاه به سایت شما
تأیید نهایی تراکنش از سمت سرور شما با بانک
جمعبندی
اتصال پروژههای تحت وب به درگاه بانکی مثل بانک سامان یک فرایند چندمرحلهای است که شامل ایجاد تراکنش در سایت، هدایت کاربر به درگاه، بازگشت کاربر با نتیجه اولیه و در نهایت تأیید نهایی تراکنش میشود. این چرخه باعث میشود پرداختها به صورت امن، قابل پیگیری و مطمئن انجام شوند و سایت بتواند وضعیت تراکنش را به درستی مدیریت کند.
در کنار درگاههای مستقیم بانکی مانند سامان، ملت یا پاسارگاد، روشهای دیگری نیز وجود دارند؛ مثل درگاههای تجمیعی از جمله زرینپال، نکستپی یا آیدیپی که کار با آنها سادهتر است و معمولاً یک رابط مشترک برای چند بانک مختلف ارائه میدهند.
تمام این مباحث، از جمله پرداخت با درگاه مستقیم بانک سامان و همچنین روشهای پرداخت غیرمستقیم مثل زرینپال، به طور کامل و کاربردی در دوره جامع برنامهنویسی وب مهندس بهمن آبادی آموزش داده شده است.
