1) Payment Request Page (ASPX)
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<script src="../../RESOURCES/js/accordion/jquery.min.js"
type="text/javascript"></script>
<title>Redirecting...</title>
<script type="text/javascript">
$(document).ready(function () {
$('#FName').val($('#hdnFname').val());
$('#LName').val($('#hdnLname').val());
$('#Email').val($('#hdnEmail').val());
$('#Address').val($('#hdnAddress').val());
$('#City').val($('#hdnCity').val());
$('#AddressZip').val($('#hdnZip').val());
$('#State').val($('#hdnState').val());
$('#Mobile').val($('#hdnMobile').val());
$('#returnUrl').val($('#hdnReturnUrl').val());
//alert($('#FName').val());
merchantURLPart = $('#hdnPaymentURL').val();
$('#btnSubmit').click();
});
var merchantURLPart = '';
//"https://sandbox.citruspay.com/CLIENTID";
-- CLIENTID WILL BE PROVIDED BY CITRUS
var vanityURLPart = "";
var reqObj = null;
function generateHMAC() {
if (window.XMLHttpRequest) {
reqObj = new XMLHttpRequest();
} else {
reqObj = new ActiveXObject("Microsoft.XMLHTTP");
}
if (merchantURLPart.lastIndexOf("/") != -1) {
vanityURLPart = merchantURLPart.substring(merchantURLPart.lastIndexOf("/") + 1)
}
var orderAmount = document.getElementById("orderAmount").value;
var merchantTxnId = document.getElementById("merchantTxnId").value;
var currency = document.getElementById("currency").value;
var param = "merchantId="
+ vanityURLPart + "&orderAmount="
+ orderAmount
+ "&merchantTxnId=" +
merchantTxnId + "¤cy=" +
currency;
reqObj.onreadystatechange = process;
reqObj.open("POST", "hmac_signature.aspx?" + param, false);
reqObj.send(null);
}
function process() {
if (reqObj.readyState == 4) {
document.getElementById("secSignature").value
= reqObj.responseText;
submitForm();
}
}
function submitForm() {
document.paymentForm.action = merchantURLPart;
document.paymentForm.method = 'POST';
document.paymentForm.submit();
}
</script>
</head>
<body>
<form name="paymentForm" runat="server" id="paymentForm">
<div>
<div>
<div style="text-align:center;">
<br />
<center>
<b>Please wait... Redirecting...</b>
</center>
</div>
<ul style="display:none;">
<li class="clearfix">
<label width="125px;">
Transaction Number:</label>
<input type="text" id="merchantTxnId"
runat="server"
name="merchantTxnId"
value=""
/>
</li>
<li class="clearfix">
<label width="125px;">
Order
Amount:</label>
<input type="text" id="orderAmount" runat="server" name="orderAmount" value="" />
</li>
<li class="clearfix">
<label width="125px;">
Currency:</label>
<input type="text" id="currency" name="currency" value="INR" />
</li>
<li class="clearfix">
<label width="125px;">
First
Name :</label>
<input type="text" id="FName" name="firstName"
value=""
/>
</li>
<li class="clearfix">
<label width="125px;">
Last
Name :</label>
<input type="text" id="LName" name="lastName"
value=""
/>
</li>
<li class="clearfix">
<label width="125px;">
Email
:</label>
<input type="text" id="Email" name="email"
value=""
/>
</li>
<p>
Address
Details</p>
<li class="clearfix">
<label width="125px;">
Address :</label>
<input type="text" id="Address"
name="addressStreet1"
value=""
/>
</p>
<li class="clearfix">
<label width="125px;">
City
:</label>
<input type="text" id="City" name="addressCity"
value=""
/>
</li>
<li class="clearfix">
<label width="125px;">
Zip
Code :</label>
<input type="text" id="AddressZip"
name="addressZip"
value=""
/>
</li>
<li class="clearfix">
<label width="125px;">
State
:</label>
<input type="text" id="State" name="addressState" value="" />
</li>
<!-- <input type="hidden"
class="text" name="addressCountry" value="INDIA"
/> -->
<li class="clearfix">
<label width="125px;">
Mobile No:</label>
<input type="text" id="Mobile" name="phoneNumber" value="" />
</li>
<input type="hidden"
name="paymentMode"
value="NET_BANKING"
/>
<input type="hidden"
name="issuerCode"
value="ISS008"
/>
<%--<input type="hidden"
id="ReturnUrl" name="returnUrl" runat="server"
value="http://localhost:1463/sample-site/TestMotoResponse.aspx"
/>--%>
<input type="text" id="returnUrl"
name="returnUrl"
value=""
/>
<input type="hidden"
id="secSignature"
name="secSignature"
value=""
/>
<input type="hidden"
name="reqtime"
id="reqtime"
value="<%=System.DateTime.Now.Ticks / 10000 %>" />
<input id="btnSubmit"
type="button"
value="Make
Payment" onclick="JavaScript:generateHMAC();"></input>
<input type="hidden"
id="hdnFname"
runat="server"/>
<input type="hidden"
id="hdnLname"
runat="server"/>
<input type="hidden"
id="hdnEmail"
runat="server"/>
<input type="hidden"
id="hdnAddress"
runat="server"/>
<input type="hidden"
id="hdnCity"
runat="server"/>
<input type="hidden"
id="hdnZip"
runat="server"/>
<input type="hidden"
id="hdnState"
runat="server"/>
<input type="hidden"
id="hdnMobile"
runat="server"/>
<input type="hidden"
id="hdnReturnUrl"
runat="server"/>
<input type="hidden"
id="hdnPaymentURL"
value="123"
runat="server"/>
</ul>
</div>
</div>
</form>
</body>
</html>
1) Payment Resquest Page (ASPX.CS)
protected void Page_Load(object sender, EventArgs
e)
{
try
{
int pos = Request.Url.AbsoluteUri.LastIndexOf('/');
string strURL = Request.Url.AbsoluteUri.Substring(0,
pos + 1) + "PaymentResponseCITRUS.aspx";
merchantTxnId.Value = YOUR TRANSACTION ID;
orderAmount.Value
= PAYMENT AMOUNT;
hdnFname.Value = FIRST NAME OF CLIENT;
hdnLname.Value = LAST NAME OF CLIENT;
hdnEmail.Value = EMAIL OF CLIENT;
hdnAddress.Value = ADDRESS OF CLIENT;
hdnCity.Value = CITY OF CLIENT;
hdnZip.Value = ZIPCODE OF CLIENT;
hdnState.Value = STATE OF CLIENT;
hdnMobile.Value = MOBILE OF CLIENT;
hdnReturnUrl.Value = strURL; // RESPONSE URL
//Payment URL
hdnPaymentURL.Value = https://sandbox.citruspay.com/CLIENTID;
}
catch (Exception
ex)
{
// LOG THE ERROR
}
}
hmac_signature.aspx
<%@ Page
Language="C#" AutoEventWireup="true" %>
<%
string key = CITRUS SECRET KEY (PROVIDED BY CITRUS)
string merchantId = Request["merchantId"];
string orderAmount = Request["orderAmount"];
string merchantTxnId = Request["merchantTxnId"];
string currency = Request["currency"];
string data = merchantId + orderAmount + merchantTxnId +
currency;
try {
%>
<%= CitrusPay.MerchantKit.Infrastructure.CitrusPaySignatureRequestor.GenerateHMAC(data,
key)%>
<%
}catch(Exception
e){
}
%>
2) Payment Response Page
protected void Page_Load(object sender, EventArgs e)
{
try
{
String key = CITRUS SECRET KEY (PROVIDED BY CITRUS)
String data = "";
String txnId = Request["TxId"];
String txnStatus = Request["TxStatus"];
String amount = Request["amount"];
String pgTxnId = Request["pgTxnNo"];
String issuerRefNo = Request["issuerRefNo"];
String authIdCode = Request["authIdCode"];
String firstName = Request["firstName"];
String lastName = Request["lastName"];
String pgRespCode = Request["pgRespCode"];
String zipCode = Request["addressZip"];
String reqSignature = Request["signature"];
String signature = "";
bool flag = true;
if (txnId != null)
{
data
+= txnId;
}
if (txnStatus != null)
{
data
+= txnStatus;
}
if (amount != null)
{
data
+= amount;
}
if (pgTxnId != null)
{
data
+= pgTxnId;
}
if (issuerRefNo != null)
{
data
+= issuerRefNo;
}
if (authIdCode != null)
{
data
+= authIdCode;
}
if (firstName != null)
{
data
+= firstName;
}
if (lastName != null)
{
data
+= lastName;
}
if (pgRespCode != null)
{
data
+= pgRespCode;
}
if (zipCode != null)
{
data
+= zipCode;
}
signature = CitrusPay.MerchantKit.Infrastructure.CitrusPaySignatureRequestor.GenerateHMAC(data,
key);
if (reqSignature != null
&& !signature.Equals(reqSignature))
{
flag
= false;
}
if (flag)
{
try
{
//Check the Status
if (txnStatus.Trim().ToUpper() == "SUCCESS")
{
// UPDATE THE TRANSACTION STATUS IN DB
//
// CODE FOR UPDATE STATUS
//
// REDIRECT TO SUCCESS PAGE OR SHOW THE PAYMENT RESPONSE ON
SAME PAGE
}
else
{
// PAYMENT IS NOT SUCCESSFUL
// REDIRECT TO ERROR PAGE
}
}
catch (Exception ex)
{
// ERROR OCCURED WHILE PAYMENT
// REDIRECT TO ERROR PAGE
}
}
else
{
// SIGNATURE VALIDATION IS WRONG
// REDIRECT TO ERROR PAGE
}
}
catch (Exception ex)
{
// ERROR OCCURED WHILE PAYMENT
// REDIRECT TO ERROR PAGE
}
}
No comments:
Post a Comment