[asp][bibit]redirect werkt niet!

Pagina: 1
Acties:

  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 11:02
Hoi,

ik ben bezig om bibit te "implementeren". Ik weet dat dit XML gestuurd is. Nu is normaal de persoon die XML afhandelt bij ons voor een lange tijd op vakantie, en nu is mij gevraagd om er verder aan te werken. (Ben nu al ongeveer 1 hele week bezig om het werkend te krijgen).

Ik werk op basis van hun ASP voorbeeldje:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
<%
'------------------------------------------------------------------------------
' mod 010628 - a3

sUser   = "YOUR MERCHANTCODE"
sPass   = "PASSWORD"
sURL    = "https://secure-test.bibit.com/jsp/merchant/xml/paymentService.jsp"
sXML     = makeXMLorder("37482")        ' 37482 is the orderID in the database
call XML2Bibit(sXML)

'================================================================================

sub XML2Bibit(sXML)

'Response.Write "sending XML " & server.HTMLEncode(sXML) & "<HR>" ' check what you're sending
'Send the XML--------------------------------------------------------------
    Set xmlhttp =  Server.CreateObject("Msxml2.ServerXMLHTTP") ' the MS parser HTTP component
    ' use ServerXMLHTTP - Check http://support.microsoft.com/support/kb/articles/Q237/9/06.ASP
    ' if you get 'Err = Access is denied.' then try Msxml2.XMLHTTP (less reliable)
        
    xmlhttp.Open "POST",sURL, false, sUser, sPass
    xmlhttp.setRequestHeader "Content-Type", "text/xml"

    on error resume next
    xmlhttp.Send(sXML)

    if err then
        Response.Write "Err = " & err.description & "<BR>"
        Response.Write "Send Status : " & xmlhttp.status & "<BR>"
        Response.End
    end if
        
    Response.Write "Send Status (200 = OK) : " & xmlhttp.status & "<BR>Response : <BR>" ' Display the Response
    'Response.write "Headers :" & "<BR>" & xmlhttp.getAllResponseHeaders
    
    sUrl = ParseResponse(xmlhttp.responseText)
    if instr(sUrl,"ERROR") then 
        Response.Write sURL
    else
        Response.Write "<BR>Redirect URL : <A HREF=" & sUrl & ">" & sUrl & "</A>" 
        'Response.redirect url ' go to BIBIT payment selection page 
    end if  
        
end sub
'------------------------------------------------------------------------------

function ParseResponse(sXML)
    Set xmldoc = CreateObject("msxml2.domdocument")
    xmldoc.async = False : xmldoc.validateOnParse = true
    xmldoc.setProperty "ServerHTTPRequest", true ' may not be needed - see http://support.microsoft.com/support/kb/articles/Q281/1/42.ASP

    If Not xmldoc.loadxml(sXML) Then
        tmp =        "ERROR - XML load failed ! <BR>" 
        tmp = tmp & "errorcode : " & xmldoc.parseError.errorcode & ", " & xmldoc.parseError.reason & "<BR>"
        tmp = tmp & "srctext : " & xmldoc.parseError.srctext & "<BR>"
        tmp = tmp & "url : " &xmldoc.parseError.url & "<BR><BR>"
        tmp = tmp & "XML received : " & Server.HTMLEncode(sXML)
        ParseResponse = tmp
    else
        Set oCurrNode = xmldoc.documentElement.selectSingleNode("/paymentService/reply/orderStatus/reference")
        if oCurrNode is nothing then
            ParseResponse = "ERROR - no URL found"
        else
            ParseResponse = oCurrNode.text
        end if
    end if
end function
'------------------------------------------------------------------------------

function makeXMLorder(orderid) ' Read Record from a (very simple) example Access DB 
' DB record : id, prodid, desc, price, nr, cardnr, exp, cardname 
' of course you can also change this function and hardcode the order details 
' but don't forget to generate a unique ordercode each time
    
    'create ADO connection and recordset Set 
    Set cnOrders = Server.CreateObject("ADODB.Connection") 
    cnOrders.Open "ProductsDB" 
    
    Set rs = cnOrders.Execute("select * from orders where prodid = '" & orderid & "'")
    if Not rs.EOF then 
        xml = "<?xml version='1.0'?>" & vbcrlf 
        xml = xml & "<!DOCTYPE paymentService PUBLIC '-//Bibit/DTD Bibit PaymentService v1//EN' 'http://dtd.bibit.com/paymentService_v1.dtd'>" & vbCRLF     
        xml = xml & "<paymentService version='1.0' merchantCode='" &  sUser & "'>"  & vbcrlf
        xml = xml & "<submit>"  & vbcrlf
        xml = xml & "<order  orderCode = 'A" & "-" & datepart("s",now) & "'>" & vbCRLF
        xml = xml & "<description>" & rs("desc") & "</description>" & vbCRLF
        xml = xml & "<amount exponent='2' currencyCode = 'NLG' value = '" & rs("price") & "'/>" & vbCRLF
        xml = xml & "<orderContent>" &rs("prodid")& "</orderContent>" & vbCRLF
        xml = xml & "<paymentMethodMask><include code='ALL'/></paymentMethodMask>" & vbCRLF 
        xml = xml & "</order>" & vbCRLF 
        xml = xml & "</submit>"  & vbcrlf
        xml = xml & "</paymentService>" 
    else 'record not found 
        Response.Write "No record found"
    end if 
        
    rs.close : cnOrders.close 'close and release DB objects 
    makeXMLorder = xml 
end function 
%>

Nu ben ik eindelijk zover dat ik:
- verbinding heb met Bibit
- een order bij hun in het (test)systeem kan zetten
- de pagina krijg waarop de gebruiker zijn credit card gegevens kan invoeren

En nu komt het: er moet een redirect komen naar ons systeem terug. Alleen dat werkt dus niet...

Kan iemand mij (die meer met bibit gewerkt heeft) vertellen waar ik de "redirect" in bovenstaand voorbeeldje moet plaatsen? Ik heb namelijk veel met bibit gemaild en na 1 week erachter gekomen dat ze
a: geen support op "zelfgemaakte" dingen leveren
b: geen asp programmeurs voorhanden hebben

Dus dacht ik, als laatste redmiddel, laat ik het hier eens proberen...

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


Verwijderd

Dat is vaag, in principe parse je gewoon een XML pagina naar hun toe. Dus je blijft op je eigen pagina, en dan krijg je toch een response terug? Wat is de foutmelding dan die je krijgt?

  • Devil
  • Registratie: Oktober 2001
  • Niet online

Devil

King of morons

[search=Bibit]

Iemand heeft al eens een kant en klare bibit class gemaakt, daar kun je vast je antwoord vinden. Het werk volgens mij met 2 pagina's die je moet opgeven, namelijk succes en failure of iets dergelijks. Bij een goede afhandeling redirect hij naar de succes pagina en bij een fout naar failure.

After all, we are nothing more or less than what we choose to reveal.


  • j_du_pee
  • Registratie: Maart 2000
  • Laatst online: 23-09-2024

j_du_pee

du pain, du vin, du pee

ik heb niet alles doorgelezen maar ik zie je dit doen:

response.write(sURL)

'response.redirect(url)

moet die s er dan niet voor staan :?

kaart != map && bottel != fles
Wacht op antwoord


  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 11:02
Op maandag 18 maart 2002 15:16 schreef voetenzalf het volgende:
Dat is vaag, in principe parse je gewoon een XML pagina naar hun toe. Dus je blijft op je eigen pagina, en dan krijg je toch een response terug? Wat is de foutmelding dan die je krijgt?
Ik krijg in principe geen foutmelding. Het werkt allemaal wel, maar dit gebeurt er dus:

Zodra de gebruiker zijn kaartgegevens ingevoerd heeft, drukt ie op submit, wordt de kaart gechecked en zou hij/zij terug gestuurd moeten worden naar een bepaalde site. Hij blijft nu dus gewoon heel stom op hun site hangen met,
code:
1
You have paid

terwijl dat al weer op onze site zou moeten zijn.

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


  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 11:02
Op maandag 18 maart 2002 15:17 schreef Devil het volgende:
[search=Bibit]

Iemand heeft al eens een kant en klare bibit class gemaakt, daar kun je vast je antwoord vinden. Het werk volgens mij met 2 pagina's die je moet opgeven, namelijk succes en failure of iets dergelijks. Bij een goede afhandeling redirect hij naar de succes pagina en bij een fout naar failure.
Klopt, die geef ik ook op, alleen ik denk niet dat ik dat op de goede plaats doe. ;)

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


  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 11:02
Op maandag 18 maart 2002 15:17 schreef j_du_pee het volgende:
ik heb niet alles doorgelezen maar ik zie je dit doen:

response.write(sURL)

'response.redirect(url)

moet die s er dan niet voor staan :?
maakt niet uit... die 2e response redirect is als commentaar (')

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


  • Devil
  • Registratie: Oktober 2001
  • Niet online

Devil

King of morons

Kwam dit tegen, misschien heb je er iets aan?
code:
1
2
3
4
5
6
7
8
9
10
$extraData can contain these variables (or any additional ones):
*           -"SuccessURL"   : url to go to when the shopper successfully payed up
*           -"failureURL"   : url to go to when the shopper fails to payed up
*           -"pendingURL"   : url to go to when the shopper fails to payed up
*           -"BodyAttr"     : body tag variables in the bibit checkout
*           -"FontAttr"     : font attributes for the bibit checkout
*           -"language"     : standard choosen language in the bibit checkout
*           -"country"      : standard choosen country in the bibit checkout
*           ** For exact description & codes for the last 2 fields, see Bibit technical manual @
*           ** http://documentation.bibit.nl

After all, we are nothing more or less than what we choose to reveal.


Verwijderd

Het spijt me om te zeggen dat dit niks met Bibit te maken heeft. Je POST alleen de gegevens naar Bibit en krijgt daarna een response van hun. Dus je wordt helemaal niet naar huun server gestuurd, je post alleen wat. Je moet gewoon weten wat voor responses je allemaal terugkrijgt.

Het ligt dus wel degelijk aan je afvangen van de response van Bibit, ik zou gewoon eens kijken wat voor response je van Bibit kan terugverwachten

  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 11:02
Dat heb ik ook voor mijn neus... maar dit is natuurlijk php, en ik heb ASP (niet dat veel zal uitmaken maar goed)

Ik ben ermee bekend dat ik de waardes voor die succes en failure url's mee moet geven. Verder weet ik ook dat die URL encoded moeten zijn (heb ik getest, en die zijn valid) Alleen krijg ik het idee dat die niet op de juiste plek staan.

/edit:

voetenzalf, ik weet wat voor responses ik terug kan verwachten van bibit, maar het gaat me nu om de succes en failure url. Die moeten ergens daar ingezet worden. Alleen waar??? Die moet dmv request variables verwerkt worden...

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


  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 11:02
subtiel schopje... mag nou wel he.. ;)

ben er nog steeds niet uit...

/edit: wat ik dus wil, iemand die meer met bibit gewerkt heeft, die mij kan vertellen waar ik in bovenstaand voorbeeldje de string moet zetten voor successurl en failureurl...

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


  • chem
  • Registratie: Oktober 2000
  • Laatst online: 27-08 13:53

chem

Reist de wereld rond

Op woensdag 20 maart 2002 09:25 schreef TeeDee het volgende:
subtiel schopje... mag nou wel he.. ;)

ben er nog steeds niet uit...

/edit: wat ik dus wil, iemand die meer met bibit gewerkt heeft, die mij kan vertellen waar ik in bovenstaand voorbeeldje de string moet zetten voor successurl en failureurl...
bel BIBIT?

ze reageren best snel, maar bellen is sneller dan mailen..

Klaar voor een nieuwe uitdaging.


  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 11:02
Op woensdag 20 maart 2002 09:37 schreef chem het volgende:

[..]

bel BIBIT?

ze reageren best snel, maar bellen is sneller dan mailen..
Bellen, mailen whatever, ben ik al ruim 1 week mee bezig.. ze verwijzen mij constant door naar de manual. Ken die manual nu al uit mijn kop.

Nogmaals, het gaat alleen om die successurl / failureurl.

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


  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 11:02
hoppa, ook weer opgelost..

het blijkt dus dat je 2 urls moet gebruiken:
code:
1
sURL    = "https://secure-test.bibit.com/jsp/merchant/xml/paymentService.jsp"

deze is om de order in de order db te douwen
code:
1
aURL = "https://secure-test.bibit.com/jsp/shopper/SelectPaymentMethod.jsp?Orderkey=bladiebladie&successurl etc. etc.

is voor de redirect.. dus krijg je bij:
code:
1
Response.Write "<BR>Redirect URL : <A HREF=" & sUrl & ">" & sUrl & "</A>"

ipv sURL dus aURL

Fijn dat dat zo duidelijk uit hun example komt...

ook weer opgelost! ;)

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

Pagina: 1