- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
GetTransactionDetails XML web service call sample
I have reviewed the XML sample code, and wanted to know if there was any C# sample code to actually make the call (HTTP POST).
This is the XML that I want to send:
<?xml version="1.0" encoding="utf-8"?> <getTransactionDetailsRequest xmlns="AnetApi/xml/v1/schema/AnetApiSchema.xsd"> <merchantAuthentication> <name>YourUserLogin</name> <transactionKey>YourTranKey</transactionKey> </merchantAuthentication> <transId>1111111111</transId> </getTransactionDetailsRequest>
So in other words, how do I package and send this code in my C# web application.
โ01-13-2015 10:31 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
You mean how to do xml call in c#?
http://developer.authorize.net/downloads/samplecode/
have example on how to do xml call.
โ01-13-2015 02:12 PM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
It seems to show good examples of how to process the XML response, but not seeing any sample code on how to take a piece of existing XML code, and send it as a request. For example, PostRequest method takes ApiRequest of type Object as one of it's parameters, and then serializes it . I'm new to C# so I'm not sure how serializer works, and whether it really matters in this situation.
I'm not sure how to process a XDocument using PostRequest or similar.
โ01-13-2015 03:12 PM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
It as simple as sending it as a string.
http://stackoverflow.com/questions/1228976/xdocument-tostring-drops-xml-encoding-tag
โ01-13-2015 03:54 PM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thanks much. Just to make sure, would the following be correct:
public const String API_URL = "https://apitest.authorize.net/xml/v1/request.api"; public static void Main() { XNamespace ns = "AnetApi/xml/v1/schema/AnetApiSchema.xsd"; XDocument doc = new XDocument( new XElement(ns + "getTransactionDetailsRequest", new XAttribute("xmlns", "AnetApi/xml/v1/schema/AnetApiSchema.xsd"), new XElement(ns + "merchantAuthentication", new XElement(ns + "name", TEST_NAME), new XElement(ns + "transactionKey", TEST_TRANS_KEY)), new XElement(ns + "transId", TEST_TRANS_ID)) ); System.Xml.XmlDocument response_xml = null; PostRequest(doc.ToString(), out response_xml); } public static bool PostRequest(object ApiRequest, out XmlDocument xmldoc) { bool bResult = false; XmlSerializer serializer; xmldoc = null; try { HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(API_URL); webRequest.Method = "POST"; webRequest.ContentType = "text/xml"; webRequest.KeepAlive = true; // Serialize the request serializer = new XmlSerializer(ApiRequest.GetType()); XmlWriter writer = new XmlTextWriter(webRequest.GetRequestStream(), Encoding.UTF8); serializer.Serialize(writer, ApiRequest); writer.Close(); if (PRINT_POST) { Console.WriteLine("\r\n\r\n"); StreamWriter consoleOutput = new StreamWriter(Console.OpenStandardOutput()); consoleOutput.AutoFlush = true; serializer.Serialize(consoleOutput, ApiRequest); consoleOutput.Close(); Console.WriteLine("\r\n\r\n"); } // Get the response WebResponse webResponse = webRequest.GetResponse(); // Load the response from the API server into an XmlDocument. xmldoc = new XmlDocument(); xmldoc.Load(XmlReader.Create(webResponse.GetResponseStream())); if (PRINT_POST) { XmlWriterSettings settings = new XmlWriterSettings(); settings.Indent = true; settings.Encoding = Encoding.ASCII; XmlWriter consoleWriter = XmlWriter.Create(Console.Out, settings); xmldoc.WriteTo(consoleWriter); consoleWriter.Close(); Console.WriteLine("\r\n\r\n"); } bResult = true; } catch (Exception ex) { Console.WriteLine(ex.GetType().ToString() + ": " + ex.Message); bResult = false; } return bResult; }
โ01-13-2015 04:07 PM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Try it and debug it.
โ01-14-2015 04:20 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Since I'm not familiar with serializer, I modified the PostRequest method in the API to meet my needs. It seems like I am getting the response from Authorize.NET, and can see some XML, but I am having trouble capturing the responseReasonCode node's value (or for that matter -- I can't even get the node as it says it is NULL in the code below).
XNamespace ns = "AnetApi/xml/v1/schema/AnetApiSchema.xsd"; XDocument doc = new XDocument( new XElement(ns + "getTransactionDetailsRequest", new XAttribute("xmlns", "AnetApi/xml/v1/schema/AnetApiSchema.xsd"), new XElement(ns + "merchantAuthentication", new XElement(ns + "name", TEST_NAME), new XElement(ns + "transactionKey", TEST_TRANS_KEY)), new XElement(ns + "transId", TEST_TRANS_ID)) ); MemoryStream stream = new MemoryStream(); doc.Save(stream); byte[] postBytes = new byte[stream.Length]; stream.Seek(0, SeekOrigin.Begin); stream.Read(postBytes, 0, postBytes.Length); WebClient WC = new WebClient(); ServicePointManager.ServerCertificateValidationCallback = TrustAllCertificateCallback; HttpWebRequest wrequest = (HttpWebRequest)WebRequest.Create(IsLive ? LIVE_URL : TEST_URL); wrequest.Timeout = 300000; wrequest.Method = "POST"; wrequest.ContentType = "text/xml"; wrequest.ContentLength = stream.Length; Stream lilriver = wrequest.GetRequestStream(); lilriver.Write(postBytes, 0, postBytes.Length); WebResponse webResponse = wrequest.GetResponse(); XDocument xdoc = XDocument.Load(XmlReader.Create(webResponse.GetResponseStream())); //var node = xdoc.Descendants().Where(n => n.Name == "responseReasonCode").FirstOrDefault(); var node = xdoc.Descendants("responseReasonCode").FirstOrDefault(); if (node != null) { reason = node.Value; }
โ01-14-2015 08:35 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Why not just use the soap/web service? then you don't have to deal with xml at all.
โ01-14-2015 09:09 AM

