[asp/xml]Bibit response parsen

Pagina: 1
Acties:

  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 25-08 20:26
Hoi,

Ben bezig om Bibit netjes aan te sluiten op een "shopje" van ons.

Mensen die bibit kennen weten dat bibit een XML response naar een [OK] page sturen. (kan 2 seconden, uren of dagen duren)

Nu wil ik dus op die [ok] page een aantal Database updates / Email confirmations laten starten. Dus ben ik aan het testen hoe dat voor elkaar te krijgen.

De XML die Bibit stuurt is:
XML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?xml version="1.0"?>
<!DOCTYPE paymentService PUBLIC "-//Bibit//DTD Bibit PaymentService v1//EN" 
"http://dtd.bibit.com/paymentService_v1.dtd">
<paymentService version="1.4" merchantCode="YOURCODE">
<notify>
<orderStatusEvent orderCode="1234">
<payment>
<paymentMethod>VISA-SSL</paymentMethod>
<amount value="205" currencyCode="GBP" 
exponent="2" debitCreditIndicator="credit"/>
<lastEvent>AUTHORISED</lastEvent>
<balance accountType="IN_PROCESS_CAPTURED">
<amount value="205" currencyCode="GBP" exponent="2" debitCreditIndicator="credit"/>
</balance>
<riskScore value="0"/>
</payment>
<journal journalType="AUTHORISED">
<bookingDate><date dayOfMonth="11" month="12" year="2002"/></bookingDate></journal>
</orderStatusEvent>
</notify>
</paymentService>


Getest om de response netjes op te vangen:
ASP:
1
2
3
4
5
6
7
8
9
10
11
12
13
<%
<<knip, zelfde xml als hierboven!>>

Set xmlhttp =  Server.CreateObject("Msxml2.ServerXMLHTTP")
xmlHttp.open "POST", "http://domain/xmlgetter.asp", false
xmlHttp.send(xml)
response.Write "sending XML " & server.HTMLEncode(xml) & "<HR>" ' check what you're sending
        
    Response.Write "Send Status (200 = OK) : " & xmlhttp.status & "<BR>Response : <BR>"
    Response.write "Headers :" & "<BR>" & xmlhttp.getAllResponseHeaders
    Response.Write "Send Status : " & xmlhttp.status & "<BR>"   

%>


Dit omdat ik niet echt duidelijk die response van Bibit kan simuleren. Dus ik dacht laat ik zelf die response simuleren om het parsen goed te testen. Welnu, dat lukt al helemaal niet. Ik krijg namelijk het volgende:

HTML:
1
2
3
4
5
6
7
8
9
<<knip ivm layout!>> maar die response is goed!!!
--------------------------------------------------------------------------------
Send Status (200 = OK) : 500
Response : 
Headers :
Server: Microsoft-IIS/5.0 Date: Wed, 11 Dec 2002 13:33:17 
GMT Connection: keep-alive Connection: Keep-Alive Content-Length: 308 
Content-Type: text/html Set-Cookie: ASPSESSIONIDCATDARBT=DPBGCOIDDIIIPKCIODHNHLAO; 
path=/ Cache-control: private Send Status : 500



Nu wil ik dus op die [OK] page die response gaan parsen middels:
ASP:
1
2
3
4
5
6
7
8
<%
set xmldoc = Server.CreateObject("Microsoft.XMLDOM")
xmldoc.async=false
xmldoc.load(request)

ordercode = xmlDoc.getElementsByTagName("orderstatusEvent").item(0).text
response.write ordercode
%>


Dan krijg ik dus een Send status van 500.

Is er iemand die zo'n {ok] page wel eens meer gemaakt heeft, of iemand die me verder op weg kan helpen in het "parsen" van een XML response vanaf een andere server.

Let wel, dit gaat niet om browser xml response. Die server stuurt op een ander tijdstip een response naar ons!


/edit: Zodra ik een heel simpel voorbeeldje neem (die van W3schools, note.xml) en die laat ik senden, dan krijg ik wel netjes een Status 200.

Laat ik dan iets uitvoeren OP die [ok] pagina, dus de pagina die de response moet parsen, dan krijg ik dus een Status 500

[ Voor 36% gewijzigd door TeeDee op 11-12-2002 14:54 ]

Heart..pumps blood.Has nothing to do with emotion! Bored


  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 25-08 20:26
hmm... hoe ranziger hoe beter lijkt het wel...

ASP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
set xmldoc = Server.CreateObject("Microsoft.XMLDOM")
xmldoc.async=false
xmldoc.load(request)
XMLalsString = xmldoc.xml

if (instr(XMLalsString,"orderCode=") > 0) then
dim i
dim orderCode
i=(instr(XMLalsString,"orderCode=") + 11) '(eerste 11 tekens zijn orderCode=" )
While( mid(XMLalsString,i,1)<>"""")
    orderCode = orderCode & mid(XMLalsString,i,1)
    i=i+1
wend 
end if


Raar hoor :)

Heart..pumps blood.Has nothing to do with emotion! Bored