- 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> - 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){
}
%> - 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
}
}
Showing posts with label CITRUS Payment Gateway. Show all posts
Showing posts with label CITRUS Payment Gateway. Show all posts
Wednesday, April 9, 2014
C# CITRUS Payment Gateway Implementation
Subscribe to:
Posts (Atom)