//Example created VS2010 using 4.0 framework but shouldn't matter. Nothing exotic here.
//Disclaimer: This worked for me but I don't profess to be a coding guru. Not optimised and I don't work for E-xact.
//don't forget to include XML
using System.XML
public void request CC(object sender, EventArgs e)
{
String post_url = "https://api-demo.e-xact.com/transaction"; //<----"https://api.e-xact.com/transaction" for non demo
String strFirstName = "";
String strLastName = "";
String StrCreditCardNumber = "";
String strAmount = "";
String encoded="";
String redirectUrl = "";
strFirstName = TextBoxFirstName.Text;
strLastName = TextBoxLastName.Text;
StrCreditCardNumber = TextBoxCCNum.Text;
strAmount = TBAmount.Text;
//Create the request Transaction. Form(nodes)will depend on transaction type
XmlDocument requestXML = new XmlDocument();
XmlNode docNode = requestXML.CreateXmlDeclaration("1.0", "UTF-8", null);
requestXML.AppendChild(docNode);
XmlNode transactionNode = requestXML.CreateElement("Transaction");
requestXML.AppendChild(transactionNode);
XmlNode node = requestXML.CreateElement("ExactID");
node.InnerText = "ADXXXX-01";
transactionNode.AppendChild(node);
node = requestXML.CreateElement("Password");
node.InnerText = "password";
transactionNode.AppendChild(node);
//Request Type. Set to blank which is default for CC request and capture
node = requestXML.CreateElement("Transaction_Type");
node.InnerText = "00";
transactionNode.AppendChild(node);
//Amount
node = requestXML.CreateElement("DollarAmount");
node.InnerText = HttpUtility.UrlEncode(strAmount); //DD.CC
transactionNode.AppendChild(node);
//Card Number
node = requestXML.CreateElement("Card_Number");
node.InnerText = StrCreditCardNumber; //4111111111111111
transactionNode.AppendChild(node);
//Expiry
node = requestXML.CreateElement("Expiry_Date");
node.InnerText = ListBox1.SelectedValue + ListBox2.SelectedValue; //MMYY
transactionNode.AppendChild(node);
//Cardholders Name
node = requestXML.CreateElement("CardHoldersName");
node.InnerText = strFirstName+" "+ strLastName; //Go Canucks
transactionNode.AppendChild(node);
/*
//CVV
node = requestXML.CreateElement("VerificationStr2");
node.InnerText = TextBoxCCV.Text;
transactionNode.AppendChild(node);
//CVV
node = requestXML.CreateElement("CVD_Presence_Ind");
node.InnerText = "1";
transactionNode.AppendChild(node);
*/
//convert to XML string
string post_string = requestXML.OuterXml;
//if you want basic authentication instead of sending ID and Pass in message body
// create an HttpWebRequest object to communicate with E-xact
byte[] encbuff = System.Text.Encoding.UTF8.GetBytes("ADXXXX-01:password");
encoded = Convert.ToBase64String(encbuff);
HttpWebRequest objRequest = (HttpWebRequest)WebRequest.Create(post_url);
objRequest.Method = "POST";
//objRequest.Accept = "application/xml; charset=utf-8";
objRequest.ContentLength = post_string.Length;
objRequest.ContentType = "application/xml";
//objRequest.Headers["Authorization"] = "Basic " + encoded; //if you want basic authentication //don't do both Authenticate OR xml body
// post data is sent as a stream
StreamWriter myWriter = null;
myWriter = new StreamWriter(objRequest.GetRequestStream());
myWriter.Write(post_string);
myWriter.Close();
// returned values are returned as a stream, then read into a string
String post_response;
try
{
HttpWebResponse objResponse = (HttpWebResponse)objRequest.GetResponse();
using (StreamReader responseStream = new StreamReader(objResponse.GetResponseStream()))
{
post_response = responseStream.ReadToEnd();
responseStream.Close();
}
//if post response is XML
System.Xml.XmlDocument doc = new XmlDocument();
doc.LoadXml(post_response);
//get data for response
XmlNode root = doc.DocumentElement;
XmlNode responseParser = root.SelectSingleNode("Transaction_Approved");
if (responseParser.InnerText.Equals("true"))
{
responseParser = root.SelectSingleNode("Authorization_Num");
string strAuthNum = responseParser.InnerText;
responseParser = root.SelectSingleNode("DollarAmount");
string amount = responseParser.InnerText;
}
else
{
responseParser = root.SelectSingleNode("Bank_Message");
string serverMessage = responseParser.InnerText;
}
}
}
0 Comments