Avatar billede soelle Nybegynder
15. april 2008 - 22:34 Der er 3 kommentarer og
1 løsning

Problem med sessions i betalingssystem

Jeg forsøger at integrere en betalingsløsning fra dandomain på en shop, og har fuldt deres eksempler, men jeg har problemer med at sessions ikke kommer med fra serveren til deres secure server hver gang. Hvis man trykker F5 nogle gange på den secure server kommer og forsvinder sessions variablerne på siden. Jeg har integreret med flg. kode:

fil1 (min server):

    <b>OrderNumber. : <%=Session("OrderNumber")%></b><br><br>
    TestProductNumber 1 - <%=Session("TotalPrice")%> DKK

    <form method="post" action="https://pay.dandomain.dk/securetunnel.asp?merchantnumber=<%=Session("MerchantID")%>&sessionid=<%=Server.URLEncode(Request.ServerVariables("HTTP_COOKIE"))%>&tunnelurl=<%=Server.URLEncode(tunnelpage)%>" name="Form" autocomplete="off">
    <input type="hidden" name="TestMode" value="1">
    <input type="submit" value="Send">
    </form>

Fil2:

<form method="post" action="https://pay.dandomain.dk/securecapture.asp" name="Form" autocomplete="off">
<input type="hidden" name="OKURL" value="http://<%=Request.ServerVariables("server_name")%>/main/ok.asp?ok=1">
<input type="hidden" name="FAILURL" value="https://pay.dandomain.dk/securetunnel.asp?merchantnumber=4216433&sessionid=<%=Server.URLEncode(Request.ServerVariables("HTTP_COOKIE"))%>&tunnelurl=http://<%=Request.ServerVariables("server_name")%>/main/ex2.asp?DankortFejl=1">
<input type="hidden" name="SessionID" value="<%=Request.ServerVariables("HTTP_COOKIE")%>">
<input type="hidden" name="OrderID" value="<%=Session("OrderNumber")%>">
<input type="hidden" name="CurrencyID" value="208">
<input type="hidden" name="Amount" value="<%=Session("TotalPrice")%>">
<input type="hidden" name="MerChantNumber" value="<%=Session("MerChant")%>">
<input type="hidden" name="TestMode" value="1">


Problemet er som skrevet at session ikke altid kommer med over. Nogle gode forslag? dandomain mener det er fordi urlstrengen bliver for lang og har leveret nedenstående kode:

sessionIDStr    = Request.ServerVariables("HTTP_COOKIE")

pos  = inStr(sessionIDStr, "ASPSESSION")

If pos > 0 then

sessionIDStr = Mid(sessionIDStr, pos)

End If

men det hjælper ikke.
Avatar billede cpufan Juniormester
18. april 2008 - 12:47 #1
i stedet for at lægge dem i url'en
kan du sende dem med som input type hidden felter

så er du da ovre det med lange urls - og kan fejlsøge derfra.
Avatar billede soelle Nybegynder
19. april 2008 - 00:17 #2
Ja, det virker desværre ikke. Problemet er nu at sessionen ikke kommer over  hver gang man lander på dandomains side. Altså securetunnel.asp siden. Hvis man klikker F5 nogle gange kommer den med, og forsvinder også igen hvis man fortsat klikker F5. Nogle kreative forslag? Dandomain mener det er et problem med den server hvor mine sider ligger, men kan det være det når det er på securetunnel.asp at den ikke vises hver gang (med mindre man refresher)?
Avatar billede cpufan Juniormester
20. april 2008 - 10:36 #3
du kan ikke være sikker på session-variabler - så du må kode dig igennem på en anden måde.
når der kommer en ny server indover som kalder en side, kan den starte en ny session.
(Dandomains)

læg al info i en tabel og send id med over til dandomain, og på retursiden samler du info op igen via det samme id.

brug evt et id der ikke kan "crackes"

og slet recordsettet straks efter load igen - så kan det ikke genbruges.
eller sæt en kontrolmarker som f.eks. "er-brugt" så kan du altid bruge det
i noget fejlsøgning/statistik eller lign.
Avatar billede soelle Nybegynder
20. april 2008 - 10:53 #4
Jeg fandt ud af at trække alle variablerne med over i hidden fields, og det virkede. Bare underligt at de eksempelfiler de har liggende til download ikke virker, synes jeg. Du får point, da du trods alt var inde på noget af det :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester