1

I have a controller that's getting data back from an external payment portal in this format:

status=%3CportalRes+xmlns%3D%22http%3A%2F%2Fwww.e-paycapita.com%2Fportal%22%3E%3CrequestID%3E7%3C%2FrequestID%3E%3CreqStatus%3E%3CstatusCode%3E0%3C%2FstatusCode%3E%3Cmessage%3EPayment+-+Sale+-+Processing+completed+successfully.%3C%2Fmessage%3E%3C%2FreqStatus%3E%3CauthDetail%3E%3CresponseCode%3E00%3C%2FresponseCode%3E%3Cmessage%3E%26quot%3BAUTH+CODE%3A100955%26quot%3B%3C%2Fmessage%3E%3CauthCode%3E100955%3C%2FauthCode%3E%3Camount%3E10000%3C%2Famount%3E%3Ccan%3E2506%3C%2Fcan%3E%3C%2FauthDetail%3E%3Csurcharge%3E%3CfundCode%3ECSRCH%3C%2FfundCode%3E%3Creference%3EA15009581%3C%2Freference%3E%3Camount%3E175%3C%2Famount%3E%3C%2Fsurcharge%3E%3Cmop%3E51%3C%2Fmop%3E%3Ccart%3E%3Citems%3E%3Citem%3E%3Creference%3EA7000%3C%2Freference%3E%3Creference2%3E1234%3C%2Freference2%3E%3Ccan%3E2506%3C%2Fcan%3E%3CfundCode%3E8%3C%2FfundCode%3E%3Camount%3E10000%3C%2Famount%3E%3C%2Fitem%3E%3C%2Fitems%3E%3C%2Fcart%3E%3C%2FportalRes%3E

How do I get this into an XmlDocument object in C#?

Liam
  • 27,717
  • 28
  • 128
  • 190
markp3rry
  • 724
  • 10
  • 26

3 Answers3

2

If the status contains the string:

var xml = new XmlDocument();
xml.LoadXml(HttpUtility.UrlDecode(status));

The data (status) was lik this:

<portalRes xmlns="http://www.e-paycapita.com/portal">
  <requestID>7</requestID>
  <reqStatus>
    <statusCode>0</statusCode>
    <message>Payment - Sale - Processing completed successfully.</message>
  </reqStatus>
  <authDetail>
    <responseCode>00</responseCode>
    <message>&quot;AUTH CODE:100955&quot;</message>
    <authCode>100955</authCode>
    <amount>10000</amount>
    <can>2506</can>
  </authDetail>
  <surcharge>
    <fundCode>CSRCH</fundCode>
    <reference>A15009581</reference>
    <amount>175</amount>
  </surcharge>
  <mop>51</mop>
  <cart>
    <items>
      <item>
        <reference>A7000</reference>
        <reference2>1234</reference2>
        <can>2506</can>
        <fundCode>8</fundCode>
        <amount>10000</amount>
      </item>
    </items>
  </cart>
thomas
  • 1,399
  • 1
  • 17
  • 32
1

You need to call Server.UrlDecode and so parse the xml content.

Liam
  • 27,717
  • 28
  • 128
  • 190
alfdev
  • 1,039
  • 1
  • 10
  • 23
1

Simply include System.Web in your references (if it isn't already).. then use the HttpUtility.UrlDecode method.

var result = HttpUtility.UrlDecode(input);
Simon Whitehead
  • 63,300
  • 9
  • 114
  • 138