http://www.c-sharpcorner.com/uploadfile/c42694/integrate-payumoney-in-asp-net/
Or
Directly get values from db and send it to payumoney
**************************
In Webconfig
*******************************
<appSettings>
<add key="MERCHANT_KEY" value="gtKFFx"/>
<add key="SALT" value="eCwWELxi"/>
<add key="PAYU_BASE_URL" value="https://test.payu.in"/>
<add key="action" value=""/>
<add key="hashSequence" value="key|txnid|amount|productinfo|firstname|email|udf1|udf2|udf3|udf4|udf5|udf6|udf7|udf8|udf9|udf10"/>
</appSettings>
**************************
in C# Page
**************************
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Security.Cryptography;
using System.Configuration;
using System.Text;
using System.Data;
using DataLogicLayer;
public partial class paymentprocess : System.Web.UI.Page
{
cls_connection con = new cls_connection();
public string action1 = string.Empty;
public string hash1 = string.Empty;
public string txnid1 = string.Empty;
protected void Page_Load(object sender, EventArgs e)
{
try
{
//set merchant key from web.config or AppSettings
key.Value = ConfigurationManager.AppSettings["MERCHANT_KEY"];
processnow();
}
catch (Exception ex)
{
Response.Write("<span style='color:red'>" + ex.Message + "</span>");
}
}
/// <summary>
/// Generate HASH for encrypt all parameter passing while transaction
/// </summary>
/// <param name="text"></param>
/// <returns></returns>
public string Generatehash512(string text)
{
byte[] message = Encoding.UTF8.GetBytes(text);
UnicodeEncoding UE = new UnicodeEncoding();
byte[] hashValue;
SHA512Managed hashString = new SHA512Managed();
string hex = "";
hashValue = hashString.ComputeHash(message);
foreach (byte x in hashValue)
{
hex += String.Format("{0:x2}", x);
}
return hex;
}
private void processnow()
{
try
{
string qry;
if (Request.QueryString["chkid"] != null)
{
qry = "select a.NetAmount,b.Name,b.Email,b.MobileNo from dbo.Checkout as a inner join dbo.RegistrationCustomer as b on a.CustomerId=b.CustomerId where a.checkoutid=" + Request.QueryString["chkid"].ToString() + " and a.CustomerId=" + Session["OwnerId"].ToString() + " ";
DataSet ds = new DataSet();
ds = con.select_data_ds(qry);
string amountval = ds.Tables[0].Rows[0][0].ToString();
string nameval = "israr";// ds.Tables[0].Rows[0][1].ToString();
string emailval = ds.Tables[0].Rows[0][2].ToString();
string mobileNoval = ds.Tables[0].Rows[0][3].ToString();
string productinfo = "YourProductName";
string successurl = "http://localhost:62991/payumoneysuccess.aspx";
string failureurl = "http://localhost:62991/payumoneyfail.aspx";
string cancelurl = "http://localhost:62991/payumoneycancel.aspx";
string[] hashVarsSeq;
string hash_string = string.Empty;
if (string.IsNullOrEmpty(Request.Form["txnid"])) // generating txnid
{
Random rnd = new Random();
string strHash = Generatehash512(rnd.ToString() + DateTime.Now);
txnid1 = strHash.ToString().Substring(0, 20);
}
else
{
txnid1 = Request.Form["txnid"];
}
if (string.IsNullOrEmpty(Request.Form["hash"])) // generating hash value
{
if (
string.IsNullOrEmpty(ConfigurationManager.AppSettings["MERCHANT_KEY"]) ||
string.IsNullOrEmpty(txnid1) ||
string.IsNullOrEmpty(amountval) ||
string.IsNullOrEmpty(nameval) ||
string.IsNullOrEmpty(emailval ) ||
string.IsNullOrEmpty(mobileNoval) ||
string.IsNullOrEmpty(productinfo) ||
string.IsNullOrEmpty(successurl) ||
string.IsNullOrEmpty(failureurl)
)
{
//error
frmError.Visible = true;
return;
}
else
{
frmError.Visible = false;
hashVarsSeq = ConfigurationManager.AppSettings["hashSequence"].Split('|'); // spliting hash sequence from config
hash_string = "";
foreach (string hash_var in hashVarsSeq)
{
if (hash_var == "key")
{
hash_string = hash_string + ConfigurationManager.AppSettings["MERCHANT_KEY"];
hash_string = hash_string + '|';
}
else if (hash_var == "txnid")
{
hash_string = hash_string + txnid1;
hash_string = hash_string + '|';
}
else if (hash_var == "amount")
{
hash_string = hash_string + Convert.ToDecimal(amountval).ToString("g29");
hash_string = hash_string + '|';
}
else if (hash_var == "productinfo")
{
hash_string = hash_string + productinfo;
hash_string = hash_string + '|';
}
else if (hash_var == "firstname")
{
hash_string = hash_string + nameval;
hash_string = hash_string + '|';
}
else if (hash_var == "email")
{
hash_string = hash_string + emailval;
hash_string = hash_string + '|';
}
else
{
hash_string = hash_string + (Request.Form[hash_var] != null ? Request.Form[hash_var] : "");// isset if else
hash_string = hash_string + '|';
}
}
hash_string += ConfigurationManager.AppSettings["SALT"];// appending SALT
hash1 = Generatehash512(hash_string).ToLower(); //generating hash
action1 = ConfigurationManager.AppSettings["PAYU_BASE_URL"] + "/_payment";// setting URL
}
}
else if (!string.IsNullOrEmpty(Request.Form["hash"]))
{
hash1 = Request.Form["hash"];
action1 = ConfigurationManager.AppSettings["PAYU_BASE_URL"] + "/_payment";
}
if (!string.IsNullOrEmpty(hash1))
{
hash.Value = hash1;
txnid.Value = txnid1;
System.Collections.Hashtable data = new System.Collections.Hashtable(); // adding values in gash table for data post
data.Add("hash", hash.Value);
data.Add("txnid", txnid.Value);
data.Add("key", key.Value);
string AmountForm = Convert.ToDecimal(amountval).ToString("g29");// eliminating trailing zeros
amount.Text = AmountForm;
data.Add("amount", AmountForm);
data.Add("firstname", nameval );
data.Add("email", emailval);
data.Add("phone",mobileNoval);
data.Add("productinfo", productinfo );
data.Add("surl", successurl );
data.Add("furl", failureurl);
data.Add("lastname", "");
data.Add("curl", cancelurl);
data.Add("address1", "");
data.Add("address2", "");
data.Add("city", "");
data.Add("state", "");
data.Add("country","");
data.Add("zipcode", "");
data.Add("udf1", "");
data.Add("udf2", "");
data.Add("udf3", "");
data.Add("udf4", "");
data.Add("udf5", "");
data.Add("pg", pg.Text.Trim());
string strForm = PreparePOSTForm(action1, data);
Page.Controls.Add(new LiteralControl(strForm));
}
else
{
//no hash
}
}
}
catch (Exception ex)
{
Response.Write("<span style='color:red'>" + ex.Message + "</span>");
}
}
private string PreparePOSTForm(string url, System.Collections.Hashtable data) // post form
{
//Set a name for the form
string formID = "PostForm";
//Build the form using the specified data to be posted.
StringBuilder strForm = new StringBuilder();
strForm.Append("<form id=\"" + formID + "\" name=\"" +
formID + "\" action=\"" + url +
"\" method=\"POST\">");
foreach (System.Collections.DictionaryEntry key in data)
{
strForm.Append("<input type=\"hidden\" name=\"" + key.Key +
"\" value=\"" + key.Value + "\">");
}
strForm.Append("</form>");
//Build the JavaScript which will do the Posting operation.
StringBuilder strScript = new StringBuilder();
strScript.Append("<script language='javascript'>");
strScript.Append("var v" + formID + " = document." +
formID + ";");
strScript.Append("v" + formID + ".submit();");
strScript.Append("</script>");
//Return the form and the script concatenated.
//(The order is important, Form then JavaScript)
return strForm.ToString() + strScript.ToString();
}
}
*******************************
On Sucess page
******************************
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace PayUDemo
{
public partial class payumoneysuccess: System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
try
{
string[] merc_hash_vars_seq;
string merc_hash_string = string.Empty;
string merc_hash = string.Empty;
string order_id = string.Empty;
string hash_seq = "key|txnid|amount|productinfo|firstname|email|udf1|udf2|udf3|udf4|udf5|udf6|udf7|udf8|udf9|udf10";
if (Request.Form["status"] == "success")
{
merc_hash_vars_seq = hash_seq.Split('|');
Array.Reverse(merc_hash_vars_seq);
merc_hash_string = ConfigurationManager.AppSettings["SALT"] + "|" + Request.Form["status"];
foreach (string merc_hash_var in merc_hash_vars_seq)
{
merc_hash_string += "|";
merc_hash_string = merc_hash_string + (Request.Form[merc_hash_var] != null ? Request.Form[merc_hash_var] : "");
}
merc_hash = Generatehash512(merc_hash_string).ToLower();
if (merc_hash != Request.Form["hash"])
{
//Value didn't match that means some paramter value change between transaction
Response.Write("Hash value did not matched");
}
else
{
//if hash value match for before transaction data and after transaction data
//that means success full transaction , see more in response
order_id = Request.Form["txnid"];
Response.Write("value matched");
//Hash value did not matched
}
}
else
{
Response.Write("Hash value did not matched");
// osc_redirect(osc_href_link(FILENAME_CHECKOUT, 'payment' , 'SSL', null, null,true));
}
}
catch (Exception ex)
{
Response.Write("<span style='color:red'>" + ex.Message + "</span>");
}
}
/// <summary>
/// Generate HASH for encrypt all parameter passing while transaction
/// </summary>
/// <param name="text"></param>
/// <returns></returns>
public string Generatehash512(string text)
{
byte[] message = Encoding.UTF8.GetBytes(text);
UnicodeEncoding UE = new UnicodeEncoding();
byte[] hashValue;
SHA512Managed hashString = new SHA512Managed();
string hex = "";
hashValue = hashString.ComputeHash(message);
foreach (byte x in hashValue)
{
hex += String.Format("{0:x2}", x);
}
return hex;
}
}
}
Or
Directly get values from db and send it to payumoney
**************************
In Webconfig
*******************************
<appSettings>
<add key="MERCHANT_KEY" value="gtKFFx"/>
<add key="SALT" value="eCwWELxi"/>
<add key="PAYU_BASE_URL" value="https://test.payu.in"/>
<add key="action" value=""/>
<add key="hashSequence" value="key|txnid|amount|productinfo|firstname|email|udf1|udf2|udf3|udf4|udf5|udf6|udf7|udf8|udf9|udf10"/>
</appSettings>
**************************
in C# Page
**************************
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Security.Cryptography;
using System.Configuration;
using System.Text;
using System.Data;
using DataLogicLayer;
public partial class paymentprocess : System.Web.UI.Page
{
cls_connection con = new cls_connection();
public string action1 = string.Empty;
public string hash1 = string.Empty;
public string txnid1 = string.Empty;
protected void Page_Load(object sender, EventArgs e)
{
try
{
//set merchant key from web.config or AppSettings
key.Value = ConfigurationManager.AppSettings["MERCHANT_KEY"];
processnow();
}
catch (Exception ex)
{
Response.Write("<span style='color:red'>" + ex.Message + "</span>");
}
}
/// <summary>
/// Generate HASH for encrypt all parameter passing while transaction
/// </summary>
/// <param name="text"></param>
/// <returns></returns>
public string Generatehash512(string text)
{
byte[] message = Encoding.UTF8.GetBytes(text);
UnicodeEncoding UE = new UnicodeEncoding();
byte[] hashValue;
SHA512Managed hashString = new SHA512Managed();
string hex = "";
hashValue = hashString.ComputeHash(message);
foreach (byte x in hashValue)
{
hex += String.Format("{0:x2}", x);
}
return hex;
}
private void processnow()
{
try
{
string qry;
if (Request.QueryString["chkid"] != null)
{
qry = "select a.NetAmount,b.Name,b.Email,b.MobileNo from dbo.Checkout as a inner join dbo.RegistrationCustomer as b on a.CustomerId=b.CustomerId where a.checkoutid=" + Request.QueryString["chkid"].ToString() + " and a.CustomerId=" + Session["OwnerId"].ToString() + " ";
DataSet ds = new DataSet();
ds = con.select_data_ds(qry);
string amountval = ds.Tables[0].Rows[0][0].ToString();
string nameval = "israr";// ds.Tables[0].Rows[0][1].ToString();
string emailval = ds.Tables[0].Rows[0][2].ToString();
string mobileNoval = ds.Tables[0].Rows[0][3].ToString();
string productinfo = "YourProductName";
string successurl = "http://localhost:62991/payumoneysuccess.aspx";
string failureurl = "http://localhost:62991/payumoneyfail.aspx";
string cancelurl = "http://localhost:62991/payumoneycancel.aspx";
string[] hashVarsSeq;
string hash_string = string.Empty;
if (string.IsNullOrEmpty(Request.Form["txnid"])) // generating txnid
{
Random rnd = new Random();
string strHash = Generatehash512(rnd.ToString() + DateTime.Now);
txnid1 = strHash.ToString().Substring(0, 20);
}
else
{
txnid1 = Request.Form["txnid"];
}
if (string.IsNullOrEmpty(Request.Form["hash"])) // generating hash value
{
if (
string.IsNullOrEmpty(ConfigurationManager.AppSettings["MERCHANT_KEY"]) ||
string.IsNullOrEmpty(txnid1) ||
string.IsNullOrEmpty(amountval) ||
string.IsNullOrEmpty(nameval) ||
string.IsNullOrEmpty(emailval ) ||
string.IsNullOrEmpty(mobileNoval) ||
string.IsNullOrEmpty(productinfo) ||
string.IsNullOrEmpty(successurl) ||
string.IsNullOrEmpty(failureurl)
)
{
//error
frmError.Visible = true;
return;
}
else
{
frmError.Visible = false;
hashVarsSeq = ConfigurationManager.AppSettings["hashSequence"].Split('|'); // spliting hash sequence from config
hash_string = "";
foreach (string hash_var in hashVarsSeq)
{
if (hash_var == "key")
{
hash_string = hash_string + ConfigurationManager.AppSettings["MERCHANT_KEY"];
hash_string = hash_string + '|';
}
else if (hash_var == "txnid")
{
hash_string = hash_string + txnid1;
hash_string = hash_string + '|';
}
else if (hash_var == "amount")
{
hash_string = hash_string + Convert.ToDecimal(amountval).ToString("g29");
hash_string = hash_string + '|';
}
else if (hash_var == "productinfo")
{
hash_string = hash_string + productinfo;
hash_string = hash_string + '|';
}
else if (hash_var == "firstname")
{
hash_string = hash_string + nameval;
hash_string = hash_string + '|';
}
else if (hash_var == "email")
{
hash_string = hash_string + emailval;
hash_string = hash_string + '|';
}
else
{
hash_string = hash_string + (Request.Form[hash_var] != null ? Request.Form[hash_var] : "");// isset if else
hash_string = hash_string + '|';
}
}
hash_string += ConfigurationManager.AppSettings["SALT"];// appending SALT
hash1 = Generatehash512(hash_string).ToLower(); //generating hash
action1 = ConfigurationManager.AppSettings["PAYU_BASE_URL"] + "/_payment";// setting URL
}
}
else if (!string.IsNullOrEmpty(Request.Form["hash"]))
{
hash1 = Request.Form["hash"];
action1 = ConfigurationManager.AppSettings["PAYU_BASE_URL"] + "/_payment";
}
if (!string.IsNullOrEmpty(hash1))
{
hash.Value = hash1;
txnid.Value = txnid1;
System.Collections.Hashtable data = new System.Collections.Hashtable(); // adding values in gash table for data post
data.Add("hash", hash.Value);
data.Add("txnid", txnid.Value);
data.Add("key", key.Value);
string AmountForm = Convert.ToDecimal(amountval).ToString("g29");// eliminating trailing zeros
amount.Text = AmountForm;
data.Add("amount", AmountForm);
data.Add("firstname", nameval );
data.Add("email", emailval);
data.Add("phone",mobileNoval);
data.Add("productinfo", productinfo );
data.Add("surl", successurl );
data.Add("furl", failureurl);
data.Add("lastname", "");
data.Add("curl", cancelurl);
data.Add("address1", "");
data.Add("address2", "");
data.Add("city", "");
data.Add("state", "");
data.Add("country","");
data.Add("zipcode", "");
data.Add("udf1", "");
data.Add("udf2", "");
data.Add("udf3", "");
data.Add("udf4", "");
data.Add("udf5", "");
data.Add("pg", pg.Text.Trim());
string strForm = PreparePOSTForm(action1, data);
Page.Controls.Add(new LiteralControl(strForm));
}
else
{
//no hash
}
}
}
catch (Exception ex)
{
Response.Write("<span style='color:red'>" + ex.Message + "</span>");
}
}
private string PreparePOSTForm(string url, System.Collections.Hashtable data) // post form
{
//Set a name for the form
string formID = "PostForm";
//Build the form using the specified data to be posted.
StringBuilder strForm = new StringBuilder();
strForm.Append("<form id=\"" + formID + "\" name=\"" +
formID + "\" action=\"" + url +
"\" method=\"POST\">");
foreach (System.Collections.DictionaryEntry key in data)
{
strForm.Append("<input type=\"hidden\" name=\"" + key.Key +
"\" value=\"" + key.Value + "\">");
}
strForm.Append("</form>");
//Build the JavaScript which will do the Posting operation.
StringBuilder strScript = new StringBuilder();
strScript.Append("<script language='javascript'>");
strScript.Append("var v" + formID + " = document." +
formID + ";");
strScript.Append("v" + formID + ".submit();");
strScript.Append("</script>");
//Return the form and the script concatenated.
//(The order is important, Form then JavaScript)
return strForm.ToString() + strScript.ToString();
}
}
*******************************
On Sucess page
******************************
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace PayUDemo
{
public partial class payumoneysuccess: System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
try
{
string[] merc_hash_vars_seq;
string merc_hash_string = string.Empty;
string merc_hash = string.Empty;
string order_id = string.Empty;
string hash_seq = "key|txnid|amount|productinfo|firstname|email|udf1|udf2|udf3|udf4|udf5|udf6|udf7|udf8|udf9|udf10";
if (Request.Form["status"] == "success")
{
merc_hash_vars_seq = hash_seq.Split('|');
Array.Reverse(merc_hash_vars_seq);
merc_hash_string = ConfigurationManager.AppSettings["SALT"] + "|" + Request.Form["status"];
foreach (string merc_hash_var in merc_hash_vars_seq)
{
merc_hash_string += "|";
merc_hash_string = merc_hash_string + (Request.Form[merc_hash_var] != null ? Request.Form[merc_hash_var] : "");
}
merc_hash = Generatehash512(merc_hash_string).ToLower();
if (merc_hash != Request.Form["hash"])
{
//Value didn't match that means some paramter value change between transaction
Response.Write("Hash value did not matched");
}
else
{
//if hash value match for before transaction data and after transaction data
//that means success full transaction , see more in response
order_id = Request.Form["txnid"];
Response.Write("value matched");
//Hash value did not matched
}
}
else
{
Response.Write("Hash value did not matched");
// osc_redirect(osc_href_link(FILENAME_CHECKOUT, 'payment' , 'SSL', null, null,true));
}
}
catch (Exception ex)
{
Response.Write("<span style='color:red'>" + ex.Message + "</span>");
}
}
/// <summary>
/// Generate HASH for encrypt all parameter passing while transaction
/// </summary>
/// <param name="text"></param>
/// <returns></returns>
public string Generatehash512(string text)
{
byte[] message = Encoding.UTF8.GetBytes(text);
UnicodeEncoding UE = new UnicodeEncoding();
byte[] hashValue;
SHA512Managed hashString = new SHA512Managed();
string hex = "";
hashValue = hashString.ComputeHash(message);
foreach (byte x in hashValue)
{
hex += String.Format("{0:x2}", x);
}
return hex;
}
}
}
post design code also here
ReplyDeletethere is no pay u money failure.aspx in this
ReplyDeletehello everyone,Could any one help me in integration of payumoney in mvc 4.
ReplyDeleteThank you
Please share if you get any solution for MVC
Deleteplease share MVC integration of payumoney
Deleteu have to pay for code
DeleteWhen i checkout then it redirect to PayuBiz instead of payumoney. Pls Help
ReplyDeleteThis blog is so informative for providing a valuable information about send c# sms gateway integration. Get ready to use integrated Bulk SMS API and easily integrate it into your software to Send SMS in a single click.
ReplyDeleteHow to return in Web API?
ReplyDeletePage.Controls.Add(new LiteralControl(strForm));
Thanks for sharing this blog. We have now started providing csharp sms gateway integration that is very powerful and easy to integrate into your own software/application/website. As it saves your lot of valuable time in logging our interface again and again.
ReplyDeletec# sms
This code is working fine in separate project. while merging with project it is not working. Actually no error and it is not redirecting to payumoney for transaction. Do you have any idea?
ReplyDeleteThis comment has been removed by the author.
ReplyDeleteIs there refund and cancell method?
ReplyDeleteplz post that methods
Please share the code for webhook in payu or to check the status of transaction whether success or failure
ReplyDeleteif code is available then please share, we also try to integrate but not understanding how to implement
Delete