آموزش نحوه راه اندازی درگاه پی لاین در Asp.Net
آموزش نحوه راه اندازی درگاه پی لاین در Asp.Net
در این پست به صورت کامل به آموزش نحوه راه اندازی درگاه پرداخت پی لاین در Asp.Net می پدازیم.
درگاه های پرداخت زیادی در اینترنت وجود دارد مانند: پی لاین ، زین پال ، جهان پی و ... این درگاه ها ، درگاه های واسط هستند که عمل پرداخت را بین سایت شما و بانک انجام می دهند.
استفاده از این درگاه ها خیلی راحت و بی دردسر می باشد. در کنار این درگاه ها درگاه مستقیم مانند: درگاه بانک ملت،پارسیان،سامان و... وجود دارد. که باید خودتان از بانک مورد نظر درخواست درگاه کنید.
پیاده سازی این درگاه ها کمی سخت تر و دردسر خود را دارند. نحوه راه اندازی درگاه بانک ملت با Asp.Net رو می توانید در سایت کارکو مشاهده کنید.
نحوه راه اندازی درگاه پی لاین
ابتدا dll پی لاین را به پوشه bin خود اضافه کنید.
سپس یک صفحه به نام Default.aspx ایجاد و قسمت کدهای Html را به صورت زیر کد نویسی کنید.
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>درگاه پی لاین-یران گنج</title> <link href="Content/style.css" rel="stylesheet" /> </head> <body> <form id="form1" runat="server"> <div class="main"> <table class="tbl"> <tr> <td colspan="2"> <h2>درگاه پی لاین</h2> </td> </tr> <tr> <td>مبلغ:</td> <td> <asp:TextBox runat="server" ID="txtPrice"></asp:TextBox></td> </tr> <tr> <td colspan="2" style="text-align: left;"> <asp:Button runat="server" ID="btnPayment" Text="پرداخت" OnClick="btnPayment_Click" /></td> </tr> <tr> <td colspan="2"> <asp:Label runat="server" ID="lblMessage" ForeColor="red"></asp:Label> </td> </tr> <tr> <td colspan="2"> <a href="http://iranganj.ir" target="_blank">www.iranganj.ir</a> </td> </tr> </table> </div> </form> </body> </html>
حالا روی دکمه پرداخت کیک کنید و کدهای زیر را بنوسید
try { // در این قسمت میتوانید اطلاعات مورد نظر را در دیتابیس ذخیره کنید int saleOrderId = 1; string redirectPage = "http://localhost:5875/Return.aspx?SaleOrderId=" + saleOrderId.ToString(); //test Api string api = "adxcv-zzadq-polkjsad-opp13opoz-1sdf455aadzmck1244567"; PayLine pay=new PayLine(); double amount = double.Parse(txtPrice.Text) * 10; string result = pay.Send("http://payline.ir/payment-test/gateway-send", api, amount, redirectPage); if (int.Parse(result) > 0) { Response.Redirect("http://payline.ir/payment-test/gateway-" + result); } else { switch (result) { case "-1": lblMessage.Text= "api ارسالی با نوع api تعریف شده در payline ;'.سازگار نیست"; break; case "-2": lblMessage.Text = " مقدار amount ;'.داده عددي نمی باشد و یا کمتر از 1000 ریال است"; break; case "-3": lblMessage.Text = " مقدار redirect رشته null ;.است"; break; case "-4": lblMessage.Text = ".درگاهی با اطلاعات ارسالی شما یافت نشده و یا در حالت انتظار می باشد"; break; } lblMessage.Text = "مشکلی در برقراری ارتباط بوجود آمد لطفا بعدا تلاش کنید"; } } catch { lblMessage.Text = "پاسخی از درگاه دریافت نشد"; }
زمانی که شما درگاه پرداخت در سایت خود راه اندازی می کنید باید توجه کنید که برای چه هدفی این کار انجام می دهید.
یک جدول در دیتابیس خود طراحی کنید برای ذخیره اطلاعاتی پرداختی در نظر بگیرید.
فیلد های زیر را می توانید در جدول پرداخت در نظر بگیرید:
- شماره فاکتور که بهتر است همان کلید اصلی جدول باشد
- شماره تراکنش
- شماره پیگیری
- وضعیت پرداخت
- آی دی کاربر در صورت نیاز
- آی پی کاربر هنگام پرداخت
- تاریخ پرداخت
ذخیره اطلاعات در دیتابیس و دریافت کد فاکتور
در کدهای بالا ابتدا می توانید زمانی که روی دکمه پرداخت کلیک می شود اطلاعات را در دیتابیس ذخیره و سپس شماره فاکتور را که ما 1 قرار دادیم شما باید شماره فاکتور خود را قرار دهید.
آدرس برگشت
سپس آدرس صفحه برگشت را مشخص می کنیم و همچنین شماره فاکتور را به صورت QueryString در آدرس قرار دادیم.
Api
در اینجا ما از Api تست استفاده کردیم و شما به جای این Api می توانید Api خود را که سایت پی لاین به شما می دهد قرار دهید.
Dll پی لاین
ایجاد شی از کلاس پی لاین
مبلغ
در اینجا ما قیمت را در 10 ضرب کردیم تا به صورت ریال ارسال کنیم.
ارسال اطلاعات
اطلاعات مورد نیاز را توسط تابع send ارسال می کنیم و سپس نتیجه را مورد بررسی قرار می دهیم در صورتی که result بزرگتر از صفر باشد دوباره توسط دستور Response.Redirect به درگاه پی لاین ارسال می کنیم.
در صورتی که خطای رخ دهد نمایش می دهیم.
بعد از اتصال به درگاه و برگشت به صفحه Return.aspx
کدهای Html صفحه Return.aspx به صورت زیر می باشد.
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Return.aspx.cs" Inherits="Return" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>درگاه پی لاین-ایران گنج</title> <link href="Content/style.css" rel="stylesheet" /> </head> <body> <form id="form1" runat="server"> <div class="main"> <table class="tbl"> <tr> <td colspan="2"> <h2>درگاه پی لاین</h2> </td> </tr> <tr> <td>شماره تراکنش</td> <td> <asp:Label runat="server" ID="lblTransId" ForeColor="yellow"></asp:Label></td> </tr> <tr> <td>کد پیگیری</td> <td> <asp:Label runat="server" ID="lblRefId" ForeColor="yellow"></asp:Label></td> </tr> <tr> <td>وضعیت پرداخت</td> <td> <asp:Label runat="server" ID="lblStatus" ForeColor="yellow"></asp:Label></td> </tr> <tr> <td colspan="2"> <a href="http://iranganj.ir" target="_blank">www.iranganj.ir</a> </td> </tr> </table> </div> </form> </body> </html>
حالا در Page_Load صفحه Return.aspx کدهای زیر را بنوسید.
try { string transId = Request.Form["trans_id"]; string idGet = Request.Form["id_get"]; string SaleOrderId = Request.QueryString["SaleOrderId"]; if (!String.IsNullOrEmpty(transId) && !String.IsNullOrEmpty(idGet)) { PayLine GetPayline = new PayLine(); //test Api string api = "adxcv-zzadq-polkjsad-opp13opoz-1sdf455aadzmck1244567"; //GetPayline.Get(url,"Your-API", trans_id, id_get) string result = GetPayline.Get("http://payline.ir/payment-test/gateway-result-second", api, transId, idGet); switch (result) { case "-1": lblTransId.Text = transId; lblRefId.Text = idGet; lblStatus.Text = "api ارسالی با نوع api تعریف شده در payline .سازگار نیست"; break; case "-2": lblTransId.Text = transId; lblRefId.Text = idGet; lblStatus.Text = "trans_id .ارسال شده معتبر نمی باشد"; break; case "-3": lblTransId.Text = transId; lblRefId.Text = idGet; lblStatus.Text = "id_get .ارسالی معتبر نمی باشد"; break; case "-4": lblTransId.Text = transId; lblRefId.Text = idGet; lblStatus.Text = ".چنین تراکنشی در سیستم وجود ندارد و یا موفقیت آمیز نبوده است "; break; case "1": lblTransId.Text = transId; lblRefId.Text = idGet; lblStatus.Text = ".تراکنش موفقیت آمیز بوده است"; break; } // در این قسمت می توانید اطلاعات دریافتی را در دیتابیس ذخیره کنید } else { lblStatus.Text = "دسترسی امکانپذیر نیست"; } } catch { lblStatus.Text = "پاسخی دریافت نشد"; }
در کدهای بالا ابتدا اطلاعات ارسال از پی لاین را دریافت کردیم و سپس بررسی کردیم تا در صورت وجود اطلاعات ارسالی از پی لاین وارد شرط می شویم و سپس اطلاعاتی دریافتی را جهت بررسی توسط تابع Get به درگاه پی لاین ارسال می کنیم و سپس نتیجه دریافتی را بررسی می کنیم و به کاربر نمایش می دهیم و در نهایت اطلاعات دریافتی را در دیتابیس ذخیره می کنیم.
نکته: با دریافت شماره فاکتور توسط QueryString می توانید در جدول پرداخت ها جستجو کنید و اطلاعات پرداختی را پیدا و ویرایش کنید.
نکته بسیار مهم: ما از آدرس تست درگاه پی لاین استفاده کردیم و شما باید در سایت خود در آدرس های ارسالی به جای payment-test در فقط payment را بنویسید.
در پست بعدی نحوه راه اندازی درگاه پی لاین در Asp.Net MVC و PHP نیز خواهیم پرداخت.
نظر / سوال