Showing posts with label ATOM. Show all posts
Showing posts with label ATOM. Show all posts

Wednesday, April 9, 2014

C# ATOM Payment Gateway Implementation

  1. Payment Request Page

    protected void Page_Load(object sender, EventArgs e)
    {
    try
    {           
        string ATOMPaymentIP = ATOMPaymentIP // PROVIDED BY ATOM //203.114.240.183--Stage
        string ATOMLogin = ATOMLogin // PROVIDED BY ATOM
        string ATOMPassword = ATOMPassword // PROVIDED BY ATOM
        string ATOMTransactionType = ATOMTransactionType // PROVIDED BY ATOM
        string ATOMProductId = ATOMProductId // PROVIDED BY ATOM

        HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://" + ATOMPaymentIP + "/paynetz/epi/fts");

        request.Method = "POST";

        request.ContentType = "application/x-www-form-urlencoded";
        request.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; CK={CVxk71YSfgiE6+6P6ftT7lWzblrdvMbRqavYf/6OcMIH8wfE6iK7TNkcwFAsxeChX7qRAlQhvPWso3KI6Jthvnvls9scl+OnAEhsgv+tuvs=}; .NET CLR 1.1.4322; .NET CLR 2.0.50727)";
        int pos = Request.Url.AbsoluteUri.LastIndexOf('/');
       
        // PAYMENT RESPONSE PAGE
        string strURL = Request.Url.AbsoluteUri.Substring(0, pos + 1) + "PaymentResponseATOM.aspx";
       
        string postData = "custacc=1234567890&login=" + ATOMLogin + "&pass=" + ATOMPassword + "&ttype=" + ATOMTransactionType + "&prodid=" + ATOMProductId + "&amt=" + PAYMENT AMOUNT + "&txncurr=INR&txnscamt=0&clientcode=" + CLIENT CODE(USER DEFINED) + "=&txnid=" + TRANSACTION ID + "&date=" + DateTime.Now.ToString("dd/mm/yyyy hh:mm:ss") + "&ru=" + strURL + "&udf1=" + FIRST NAME + "&udf2=" + EMAIL OF CUSTOMER + "&udf3=" + CUSTOMER MOBILE + "&udf4=" + CUSTOMER ADDRESS + "&udf5=" + EMI OPTION IF REQUIRED(BANK NAME) + "&udf6=" + EMI OPTION IF REQUIRED;

        byte[] byteArray = Encoding.UTF8.GetBytes(postData);

        request.ContentType = "application/x-www-form-urlencoded";

        request.ContentLength = byteArray.Length;
        request.AllowAutoRedirect = true;

        request.Proxy.Credentials = CredentialCache.DefaultCredentials;

        Stream dataStream = request.GetRequestStream();

        dataStream.Write(byteArray, 0, byteArray.Length);

        dataStream.Close();

        WebResponse response = request.GetResponse();

        XmlDocument objXML = new XmlDocument();

        dataStream = response.GetResponseStream();

        objXML.Load(dataStream);

        string TxnId = objXML.DocumentElement.ChildNodes[0].ChildNodes[0].ChildNodes[2].InnerText;

        string Token = objXML.DocumentElement.ChildNodes[0].ChildNodes[0].ChildNodes[3].InnerText;
        string txnData = "ttype=NBFundTransfer&txnStage=1&tempTxnId=" + TxnId + "&token=" + Token;

        dataStream.Close();
        response.Close();
        Response.Redirect("http://" + ATOMPaymentIP + "/paynetz/epi/fts?" + txnData);
    }
    catch (Exception ex)
    {
        HANDLE ERROR   
    }
    }
  2. Payment Response Page

    protected void Page_Load(object sender, EventArgs e)
    {
    try
    {
        if (!IsPostBack)
        {
        NameValueCollection nvc = Request.Form;
        string mmp_Transaction = nvc["mmp_txn"].ToString();
        string PaymentStatus = nvc["f_code"].ToString();
        string MerchantTransactionId = Request.Form["mer_txn"];

        string Amount = Request.Form["amt"];
        string Product = Request.Form["prod"];
        string TransactionDate = Request.Form["date"];
        string BankTransactionId = Request.Form["bank_txn"];
        string ClientCode = Request.Form["clientcode"]; // Encrypted User Information
        string BankName = Request.Form["bank_name"];

        //User Details
        string Udf1 = Request.Form["udf1"]; //First Name
        string Udf2 = Request.Form["udf2"]; //Email
        string Udf3 = Request.Form["udf3"]; //Mobile
        string Udf4 = Request.Form["udf4"]; //Address
        string Udf5 = Request.Form["udf5"]; //Bank Name
        string Udf6 = Request.Form["udf6"]; //EMI Option

        string strResponceIP = HttpContext.Current.Request.UserHostAddress;
        string strRemarks = "txnId:" + MerchantTransactionId + ", txnStatus:" + PaymentStatus + ", amount:" + Amount + ", pgTxnId:" + mmp_Transaction + ", BankTransactionId:" + BankTransactionId + ", Udf1:" + Udf1 + ", Udf2:" + Udf2 + ", Udf3:" + Udf3 + ", Udf4:" + Udf4 + ", Udf5:" + Udf5 + ", Udf6:" + Udf6;

       
        string ATOMPaymentIP = ConfigurationManager.AppSettings["ATOMPaymentIP"].ToString();//203.114.240.183--Stage
        //Verify the Response Server
        if (Request.UrlReferrer.Host.Trim() != ATOMPaymentIP)
        {
            // REDIRECT TO ERROR PAGE IF RESPONSE IP IS NOT VERIFIED
        }

        // CHECK THE PAYMENT STATUS AND VALIDATE THE TRANSACTION ID
        if (PaymentStatus.ToUpper().Trim() == "OK" && transactionid.Trim()==MerchantTransactionId.Trim())
        {
            //"Transaction proceed successfully."

            // UPDATE THE TRANSACTION STATUS IN DB
            //
            // CODE FOR UPDATE STATUS
            //
            //
           
            // REDIRECT TO SUCCESS PAGE OR SHOW THE PAYMENT RESPONSE ON SAME PAGE   

        }
        else
        {
            // PAYMENT STATUS IS NOT SUCCESS OR TRANSACTION ID IS NOT VERIFIED
            // REDIRECT TO ERROR PAGE
        }
        }
    }
    catch (Exception ex)
    {
        // HANDLE ERROR
    }
    }