Vent venligst ...


Loading...

Callbacks

Hvad er callbacks?

Det hænder ofte, at information om en gennemført betaling ikke når frem til netbutikken. Det er et problem, da ordren så ikke bliver oprettet, ordrestatussen ikke bliver opdateret og ordrebekræftelsen aldrig bliver sendt til kunden. 

For at undgå dette tilbyder Bambora en callback-service, som sørger for, at butikkens system altid modtager den vigtige information om betalingen.
Bamboras callback-service

Bamboras callback-service består af en Microsoft.NET-webklient (http://msdn2.microsoft.com/en-us/library/system.net.webclient.aspx). Webklienten er en simpel komponent, som ikke kan håndtere flash, JavaScript, frames, iframes eller andet avanceret logik, som en normal webbrowser kan håndtere. Komponenten aktiverer kun en webside med en række GET-parametre. Det er dit ansvar at fange parametrene og opdatere dit system med dem.

Hvordan defineres callbacks?

Callbacks dannes på to måder: Enten med parameteren callbackurl i betalingsformen eller gennem indstillingerne i Bambora-administrationen under Indstillinger -> Betalingssystemet. Hvis du bruger en af de to ovenstående metoder, sættes URL’en i kø med de samme GET-parametre som din accepturl

Bemærk: Callbacks virker kun på port: 80 og 443

Sådan virker callbacks

Bambora har en service, der kalder URL-destinationerne i callback-køen. Når callbacks er aktiveret, kalder denne service de URL’er, som endnu ikke er blevet kaldt, eller hvor det foregående kald har fejlet. Et callback sker asynkront i forhold til resten af betalingsforløbet, hvor det forventes, at butikkens accepturl kaldes før dens callbackurl.

Hvis der forekommer en fejl i callback’et – f.eks. hvis callback-serverne ikke kan få adgang til din URL, eller hvis din URL returnerer en fejl (400, 500, osv.) – vil Bambora forsøge at kalde din URL én gang i timen, men maksimalt 24 gange (1 døgn). 

Eksempel på callback

Nedenfor kan du se et illustrativt eksempel på et callback-forløb. 
Efterfølgende er der en beskrivelse af forløbet. 




1En kunde betaler i en online forretning. Betalingsoplysningerne sendes til Bamboras betalingsserver. Blandt betalingsoplysningerne er der en accepturl og en callbackurl. Det er vigtigt, at ordren lagres i forretningens database, inden betalingen hæves. Ellers mister du ordreinformationen i tilfælde af kommunikationsproblemer.
2Betalingen godkendes af Bambora, og der oprettes et svar til forretningens callbackurl, som sættes i kø på Bamboras server. Hvis instantcallback er sat til 0, sker kaldet asynkront, ellers vil det ske med det samme (inden kunden sendes til accepturl).
3Kunden sendes til forretningens accepturl og får vist en ordrebekræftelse. Det er nu ikke længere nødvendigt at opdatere ordren i systemet eller sende en ordrebekræftelse, da dette sker senere i processen gennem callbackurl'en.
4Hvert minut kalder Bamboras callback-server de modtagere, der er på kø. Der kan dog gå længere tid ved massiv trafik. Derfor er det vigtigt, at forretningen ikke forventer callbacks inden for et bestemt tidsinterval, eller inden accepturl’en kaldes. Sidstnævnte er værd at bemærke, da hele processen sker asynkront.  
5Callbacks sendes til forretningens callbackurl. Den samme information sendes som GET-parametre til forretningens accepturl. Informationen er bl.a. ordre-ID, tidsstempel, beløb, valutakode, svindelkontrol, MD5-tjek, m.m.
6Hvis der opstår en fejl i callback-forløbet, vil Bamboras server forsøge kaldet igen efter en time. Fejl kan f.eks. opstå, hvis serveren ikke kan få adgang til forretningens callbackurl, eller hvis der er en fejl i forretningens system (http-kode 404, 500, m.fl.). Generelt ser callback-serveren alt undtagen http-kode 200 som en fejl. Http-kode 200 betyder OK.


Ved hver fejlmelding sendes en mail til den e-mailadresse, som du i din Bambora-administration har sat op til at modtage systemfejl, herunder callback-fejl. Det er så op til forretningens webadministrator at undersøge, hvorfor fejlen opstår.

Instant callback

Hvis du vil modtage callback, inden kunden sendes til din accepturl, kan du tilføje parameteren instantcallback til betalingsformen som vist her:

<INPUT TYPE="HIDDEN" NAME="instantcallback" VALUE="1">

Bambora sender så callbacks, inden kunden sendes til din accepturl.

Dog sættes kaldet i kø, hvis der opstår en fejl (f.eks. hvis forretningens system returnerer fejl 500). Bambora vil forsøge kaldet én gang i timen op til 24 timer.

Blokering af IP-adresser

Mange udviklere blokerer af sikkerhedsmæssige årsager den IP-adresse, som et callback kommer fra. Dette er dog ikke en god ide, da den server, der foretager kaldet, kan skifte, f.eks. på grund af service, vedligeholdelse, m.v.

I stedet for at blokere IP-adressen bør du bruge MD5-sikkerhedstjek. Derudover kan du fjerne parameteren callbackurl fra betalingsformularen og derefter indtaste den skjulte URL, hvortil callback’en laves, i din Bambora-administration under Indstillinger -> Betalingssystemet