نحوه نوشتن verification در سیستم پرداخت آنلاین بانک ملی (دامون)

شروع موضوع توسط persepolise7 ‏22 نوامبر 2011 در انجمن برنامه‌نویسی با ASP.NET

  1. persepolise7

    persepolise7 New Member

    ارسال‌ها:
    13
    تشکر شده:
    2
    امتیاز دستاورد:
    1
    سلام به همه دوستان. من یه مشکلی در نوشتن verification پرداخت آنلاین بانک ملی برام پیش اومده که اگر کمک کنین خیلی ممنون میشم. من دارم این سیستم رو با asp کلاسیک پیاده سازی می کنم.
    سیستم به این شکل کار میکنه : من باید یه مقادیری رو که مربوط به یک تراکنش هست رو به سایت بانک ملی (دامون) پاس بدم و سپس اونها اطلاعات مربوط به همون تراکنش رو از دیتابیس شون استخراج کنن و به من پاس بدن و من هم این اطلاعات رو برای کاربر چاپ کنم.
    این سیستم در واقع یک برنامه پیگیری پرداخت آنلاین هست که به کاربر میگه وضعیت پرداختی که انجام داده در سایت بانک ملی چگونه است (موفقیت آمیز بوده، یا پرداخت با شکست مواجه شده و دوباره باید انجام بشه). کاربر ابتدا شماره پیگیری رو که پس از اتمام مراحل پرداخت آنلاین بهش داده شده رو توی یک textbox وارد میکنه و روی دکمه submit کلیک میکنه و مراحلی که در بالا توضیح داده اتفاق میافته.
    حالا مشکل کجاست :
    من اطلاعات مورد نظر رو به صورت یک فرم با متد پست به بانک ملی میفرستم. کارشناس بانک ملی میگه که من برای این کار نباید این اطلاعات رو به صورت مستقیم برای بانک بفرستم. یعنی در بخش action فرم نباید آدرس سایت بانک ملی (دامون) رو قرار بدم. بلکه باید این کار رو به صورت یک کلاس (class) که در .net مرسوم هست انجام بدم.
    بانک ملی یک sample برای این موضوع ارائه کرده که با C#‎‎‎ هست و من نمیتونم از اون در ASP کلاسیک استفاده کنم.
    آیا کسی از دوستان هست که بتونه این کلاس C#‎‎‎ رو در جاوا اسکریپت یا ASP کلاسیک پیاده کنه؟
    -------------------------------------------------------------------

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Text;
    using System.Net.Security;
    using System.Collections;
    using System.Net.Sockets;
    using System.Security.Authentication;
    using System.Security.Cryptography.X509Certificates;
    using System.Net;
    using System.Security.Cryptography;

    namespace ResiptPage
    {
    public partial class ChechSSL : System.Web.UI.Page
    {



    protected void Page_Load(object sender, EventArgs e)
    {

    }
    private string createfpHash(string signacher)
    {
    string key = "eoXaEm2LUnz2OiyQ";
    System.Text.ASCIIEncoding encoding = new System.Text.ASCIIEncoding();

    byte[] keyByte = encoding.GetBytes(key);

    HMACMD5 hmacmd5 = new HMACMD5(keyByte);

    byte[] messageBytes = encoding.GetBytes(signacher);

    byte[] hashmessage = hmacmd5.ComputeHash(messageBytes);

    return signacher = ByteToString(hashmessage);



    }
    private string ByteToString(byte[] buff)
    {
    string sbinary = "";

    for (int i = 0; i < buff.Length; i++)
    {
    sbinary += buff.ToString("X2"); // hex format
    }
    return (sbinary);
    }


    protected void Button2_Click(object sender, EventArgs e)
    {
    using (var client = new WebClient())
    {
    var datatopost = Encoding.Default.GetBytes(""); //encoding.default.getbytes("param1=value1&param2=value2");
    string emza =
    createfpHash("737218180013^577^1265011576^1^Rial");
    var result = client.UploadData

    (@"https://Damoon.bsi.ir/DamoonVerificationController?x_description=damoon
    test&x_login=737218180013&x_fp_sequence=577&x_fp_timestamp=1265011576&x_amount=1&x_currency_code=Rial&x_fp_hash="
    +
    emza, "post", datatopost);
    // do something with the result
    string dd = Encoding.ASCII.GetString(result);
    Response.Write("<Div>");

    Response.Write(dd.Remove(dd.IndexOf("<")));

    Response.Write("</Div>");
    string[] arrayofdata =
    dd.Remove(dd.IndexOf("<")).Split(new char[2] { '&','=' });
    foreach (string ssss in arrayofdata)
    {
    Response.Write(ssss);
    Response.Write("</br>");
    }
    }
    }
    }
    }

    -------------------------------------------------------------------
    با استفاده از کلاس بالا ارسال اطلاعات به سایت بانک ملی به صورت مخفی اتفاق میافته و کاربر در آدرس بار Browser تغییری رو مشاهده نمیکنه. (یعنی همه وقایع در همان یک صفحه اتفاق میافته)
    اطلاعاتی که من باید برای سایت بانک ملی ارسال کنم تا نتیجه یک تراکنش رو بفهمم اینها هستند:
    x_currency_code
    x_amount
    x_login
    x_description
    x_fp_sequence
    x_fp_timestamp
    x_fp_hash
    و آدرسی که باید این اطلاعات رو بهش ارسال کنم:
    https://Damoon.bankmelli-iran.com/DamoonVerificationController
     
    نوشته شده توسط persepolise7 در ‏22 نوامبر 2011
  2. royan222

    royan222 New Member

    ارسال‌ها:
    6
    تشکر شده:
    0
    امتیاز دستاورد:
    1
    بهم کمک کرد ممنون
     
    نوشته شده توسط royan222 در ‏21 سپتامبر 2012

به اشتراک بگذارید