نمایش نتایج 1 تا 5 از 5

نام تاپیک: پَرباد - راهنمای اتصال و پیاده‌سازی درگاه‌های پرداخت اینترنتی (شبکه شتاب)

  1. #1

    پَرباد - راهنمای اتصال و پیاده‌سازی درگاه‌های پرداخت اینترنتی (شبکه شتاب)

    پَرباد چیست؟

    منبع مقاله: NetTips.

    همانطور که همه ما میدانیم، اتصال و راه اندازی درگاه‌های پرداخت اینترنتی (شبکه شتاب)، از همان ابتدا کاری مشکل و پر دردسر برای برنامه نویسان بود. هر بانک، سیستم متفاوت و مخصوص به خود را دارد و این بدان معنا است که برنامه نویسان باید کدهای کاملا متفاوت و همچنین پیاده سازی‌های متفاوتی را از روی فایل‌های PDF راهنمای بانکی، که در نهایت منجر به بی نظمی در پروژه‌ها می‌شود، بنویسند و البته مشکل بزرگتر آن است که پس از پیاده سازی هم اطمینان کاملی از صحت کدهای نوشته شده وجود ندارد؛ چه بسا که واحد‌های پشتیبانی درگاه‌های پرداخت هم افراد حرفه‌ای و آشنا با توسعه نرم افزار نیستند و اکثر اوقات نمی‌توان به آنها تکیه کرد.
    برای راحتی کار برنامه نویسان حوضه فریم ورک دات نت، سیستمی جامع، اوپن سورس و کاملا رایگان، بدون نیاز به اضافه کردن هیچ گونه وب سرویسی تهیه شده است که به برنامه نویسان اجازه می‌دهد تنها با نوشتن چند خط کد، وب سایت خود را به پرداخت اینترنتی مجهز کنند.
    این سیستم در حال حاضر متشکل از درگاه‌های پرداخت اینترنتی بانک‌های ملت، سامان، پارسیان، تجارت و پاسارگاد است.
    همچنین این سیستم در قالب یک Nuget Package برای نصب راحت در اپلیکیشن آماده شده است.

    آنچه که شما در این مطلب یاد خواهید گرفت:


    • طریقه نصب
    • ایجاد صورتحساب و ارسال کاربر به درگاه پرداخت
    • تایید صورتحساب
    • مردود کردن صورتحساب قبل از انتقال وجه از مشتری به فروشنده
    • برگشت وجه به حساب مشتری پس از تأیید صورتحساب
    • درگاه مجازی پرداخت (برای تست وب اپلیکیشن، بدون داشتن حساب واقعی در درگاه‌های بانکی)
    • تنظیمات
    • ذخیره سازی اطلاعات پرداخت



    طریقه نصب

    PM> Install-Package Parbad



    برای وب سایت‌های بر پایه فریم ورک MVC

     PM> Install-Package Parbad.MVC5



    ایجاد صورتحساب و ارسال کاربر به درگاه پرداخت

    ابتدا یک شیٔ صورتحساب را به صورت زیر ایجاد کنید

     var invoice = new Invoice( [Order Number], [Amount], [Verify URL]);



    - Order Number شماره صورتحساب است و باید همیشه یک عدد یکتا باشد (تکراری نباشد).
    - Amount مبلغ قابل پرداخت به ریال است.
    - Verify URL یک آدرس در وب سایت شما، برای بازگشت مشتری پس از پرداخت و تأیید صورتحساب است.

    برای مثال:

     var invoice = new Invoice(1, 30000, "http://www.mywebsite.com/payment/verify" );


    سپس صورتحساب را به درگاه مورد نظر ارسال میکنیم.

     var result = Payment.Request(Gateways.Mellat, invoice);



    شیٔ result حاوی شماره یکتا رجوع و وضعیت درخواست (موفقیت یا عدم موفقیت درخواست) است.

     if (result.Status == RequestResultStatus.Success)
    {
    // این متد، کاربر را به سمت وب سایت درگاه پرداخت هدایت میکند
    result.Process(Context);
    }
    else
    {
    // در صورت تمایل می‌توانید پیغام مورد نظر از درگاه پرداخت را نمایش دهید
    var msg = result.Message;
    }


    در وب سایت‌های MVC می‌توانید به روش زیر عمل کنید

     if (result.Status == RequestResultStatus.Success)
    {
    // کاربر را به سمت وب سایت درگاه پرداخت هدایت میکند
    return new RequestActionResult(result);
    }
    else
    {
    return View("Error");
    }




    تأیید صورتحساب

    پس از بازگشت کاربر از وب سایت بانک، باید از پرداخت صورتحساب توسط کاربر اطمینان حاصل کنید. کد زیر را باید در آدرسی که هنگام ساخت صورتحساب ذکر کرده بودید، قرار دهید.

     var result = Payment.Verify(System.Web.HttpContext.Current);


    شیٔ result در اینجا حاوی اطلاعاتی مانند: درگاه بانکی (که کاربر در آن صورتحساب را پرداخت کرده)، شماره رجوع، شماره تراکنش یکتای بانکی، وضعیت پرداخت و پیام درگاه است.
    شما می‌توانید با بررسی این شیٔ، تصمیمات لازم را بگیرید.

     if(result.Status == VerifyResultStatus.Success)
    {
    // کاربر، صورتحساب را پرداخت کرده است و شما میتوانید ادامه عملیات خرید را انجام دهید
    }
    else
    {
    // کاربر بنا به دلایلی صورتحساب را پرداخت نکرده است
    // شما همچنین میتوانید علت را در قالب یک پیام از پراپرتی پیام مشاهده کنید

    // بنابراین شما میتوانید این صورتحساب را در پایگاه داده خود مردود اعلام کنید
    }



    مردود کردن صورتحساب قبل از انتقال وجه از مشتری به فروشنده

    در بعضی شرایط، پس از پرداخت صورتحساب توسط مشتری، شما متوجه می‌شوید که باید عملیات را لغو کنید.

    سناریو زیر را در نظر بگیرید:

    در زمانیکه مشتری در وب سایت بانکی، صورتحساب را پرداخت میکرده است، موجودی کالای خریداری شده توسط او در فروشگاه شما، به پایان رسیده ! حال باید این وجه پرداخت شده را فورا مردود اعلام کنید.
    برای این منظور متد تأیید صورتحساب را به روش زیر بازنویسی کنید



    همانطور که در تصویر می‌بینید، در هنگام بازگشت مشتری به وب سایت شما و تأیید کردن صورتحساب، شما می‌توانید اطلاعات تراکنش مورد نظر را که شامل، درگاه پرداخت بانکی، شماره سفارش و شماره رجوع است را دریافت کنید و سپس با استفاده از این اطلاعات، پایگاه داده خود را بررسی کرده و در صورت لزوم، متد Cancel را فراخوانی کنید. به این ترتیب به درگاه بانکی، هیچگونه تأییدیه ای اعلام نمی‌شود و این بدان معناست که اگر وجهی به حساب فروشگاه واریز شده باشد، پس از چند دقیقه (معمولا ۱۵ دقیقه) به حساب مشتری برگشت داده خواهد شد.

    برگشت وجه به حساب مشتری پس از تأیید صورتحساب

     var refundResult = Payment.Refund(new RefundInvoice([Order Number], [Amount]));


    در اینجا، Order Number همان شماره سفارش صورتحساب و Amount مقداری از وجه و یا کل وجه برای برگشت به حساب مشتری است.
    پس از آن شما می‌توانید نتیجه این عملیات را در شیٔ refundResult بررسی کنید.


    درگاه مجازی پرداخت

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

     var result = Payment.Request(Gateways.ParbadVirtualGateway, invoice);



    در نتیجه در هنگام هدایت کاربر به درگاه پرداخت، کاربر به درگاه مجازی هدایت خواهد شد.



    اما قبل از کار با درگاه مجازی باید در فایل web.config وب اپلیکیشن خود، تنظیمات زیر را قرار دهید:

     <system.webServer>
    <handlers>
    <add name="ParbadGatewayPage" verb="*" path="Parbad.axd" type="Parbad.Web.Gateway.ParbadVirtualGatewayHandl er" />
    </handlers>
    </system.webServer>


    در اینجا، درگاه مجازی به عنوان یک HttpHandler معرفی شده است. مقداری که در مشخصه path ذکر شده، در واقع آدرس درگاه مجازی است که شما می‌توانید به دلخواه خود آن را وارد کنید. ما در این مثال از آدرس parbad.axd استفاده کرده ایم.
    و در نهایت در وب اپلیکیشن خود، مسیر ذکر شده را به صورت زیر معرفی کنید:

     ParbadConfiguration.Gateways.ConfigureParbadVirtua  lGateway(new ParbadVirtualGatewayConfiguration("Parbad.axd"));


    در نتیجه در هنگام هدایت کاربر به درگاه مجازی، شما باید در نوار آدرس مرورگر خود، مقداری را که تنظیم کرده اید مشاهده کنید.



    نکته مهم: فراموش نکنید، قبل از انتشار نهایی وب سایت بر روی سرور (نمایش عمومی)، تنظیمات HttpHandler مربوط به این درگاه مجازی را از درون فایل web.config حذف کنید. بدین صورت، این درگاه از دسترس عموم خارج خواهد بود.

    تنظیمات پَرباد

    بهترین مکان برای درج این تنظیمات در اپلیکیشن‌های ASP.NET WebForms فایل Global.asax.cs و در اپلیکیشن‌های ASP.NET MVC فایل Startup.cs است.
    ASP.NET Web Forms

     public class Global : HttpApplication
    {
    void Application_Start(object sender, EventArgs e)
    {
    // configurations
    }
    }


    ASP.NET MVC

     public class Startup
    {
    public void Configuration(IAppBuilder app)
    {
    // configurations
    }
    }


    تنظیمات درگاه‌های پرداخت

    قبل از ارتباط با درگاه‌های بانکی شبکه شتاب، باید مشخصات درگاه بانکی را که استفاده می‌کنید، تنظیم کنید.

    برای مثال: تنظیم درگاه پرداخت بانک ملت




    تنظیمات ذخیره سازی اطلاعات پرداخت

    پَرباد برای ذخیره و بازیابی اطلاعات پرداخت، نیاز به یک منبع ذخیره سازی دارد.
    منبع پیش فرض پَرباد، کلاس TemporaryMemoryStorage است که همانطور که از نام آن پیداست، اطلاعات را به صورت موقت در حافظه رَم سرور ذخیره میکند. اگر شما خودتان اطلاعات پرداخت را در پایگاه داده ذخیره میکنید، این منبع، گزینه مناسبی است به دلیل سرعت بسیار بالای حافظه رَم.
    توجه: در نظر داشته باشید که اگر به هر دلیلی سرور و یا وب سایت شما، ری‌استارت شود، کلیه اطلاعات موجود در این منبع هم از بین خواهد رفت.

    ذخیره و بازیابی توسط SQL Server

    برای این منظور در قسمت تنظیمات، کد زیر را قرار داده و رشته اتصال و نام جدول پرداخت را معرفی کنید.

     ParbadConfiguration.Storage = new SqlServerStorage("Connection String", "MyPaymentTableName");



    فیلد‌های مورد نیاز در این جدول:



    ذخیره و بازیابی اطلاعات توسط روش مورد نظر شما:

    در صورتیکه مایلید ذخیره و بازیابی را به روش خود انجام دهید، کلاس Storage را پیاده سازی کنید

     public class MyStorage : Storage
    {
    // Implement methods here...
    }


    و کلاس مورد نظر را در تنظیمات به عنوان منبع، معرفی کنید.

     ParbadConfiguration.Storage = new MyStorage();



    لازم به ذکر است که این کلاس شامل متد‌های synchronous و همچنین asynchronous است. بنابراین در صورتیکه برای مثال در هنگام ارسال درخواست به بانک، از متد‌های async استفاده می‌کنید، نیازی به پیاده سازی کردن متد‌های synchronous نیست.

    در صورتیکه هر گونه پیشنهاد یا انتقاد نسبت به کارکرد این سیستم دارید، صمیمانه منتظر شنیدن آن در راستای توسعه این سیستم هستم.
    همچنین در صورت تمایل به توسعه آن، می‌توانید آن را در گیت هاب دنبال کنید.

    با توجه به دارا بودن پَرباد به لایسنس، در صورت استفاده و یا کپی از کدهای این پروژه و بازنشر آن، مراتب به گیت هاب و سایر منابع گزارش خواهد شد.

    با تشکر.

    منبع مقاله: NetTips.

    آخرین ویرایش به وسیله SinaSoltani : یک شنبه 28 بهمن 1397 در 16:56 عصر

  2. #2

    نقل قول: پَرباد - راهنمای اتصال و پیاده‌سازی درگاه‌های پرداخت اینترنتی (شبکه شتاب)

    پکیج رو .net core کار نمیکنه یعنی اصلا ساپورتش نمیکنه

  3. #3

    نقل قول: پَرباد - راهنمای اتصال و پیاده‌سازی درگاه‌های پرداخت اینترنتی (شبکه شتاب)

    نقل قول نوشته شده توسط stormaref مشاهده تاپیک
    پکیج رو .net core کار نمیکنه یعنی اصلا ساپورتش نمیکنه


    نسخه جدید در حال توسعه هست که شامل .net core هم هست.
    طی چند روز آینده منتشر میشه.

  4. #4
    کاربر دائمی آواتار شرلوک هلمز
    تاریخ عضویت
    مرداد 1387
    محل زندگی
    تهران
    پست
    258

    نقل قول: پَرباد - راهنمای اتصال و پیاده‌سازی درگاه‌های پرداخت اینترنتی (شبکه شتاب)

    برای بانک پارسیان من یک آموزش تهیه کرده ام که در آدرس زیر قابل دریافت است.
    https://masoudpart.ir/Subjects.aspx?id=OQ%3d%3d

  5. #5

    نقل قول: پَرباد - راهنمای اتصال و پیاده‌سازی درگاه‌های پرداخت اینترنتی (شبکه شتاب)

    نسخه جدید آماده استفاده شد.
    با قابلیت پشتیبانی از:
    • ASP.NET CORE
    • ASP.NET MVC
    • ASP.NET WebForms


    لینک جهت نصب

تاپیک های مشابه

  1. سوال: اتصال به درگاه پرداخت اینترنتی بانک اقتصاد نوین
    نوشته شده توسط jmajid در بخش برنامه‌نویسی جاوا
    پاسخ: 9
    آخرین پست: چهارشنبه 07 خرداد 1399, 15:01 عصر
  2. پاسخ: 14
    آخرین پست: یک شنبه 20 اسفند 1391, 10:34 صبح
  3. اتصال به درگاه پرداخت اینترنتی بانک پارسیان
    نوشته شده توسط leila_mahyanet در بخش ASP.NET Web Forms
    پاسخ: 0
    آخرین پست: سه شنبه 15 شهریور 1390, 13:45 عصر

برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •