Sådan bruger du callbacks
![Sådan bruger du callbacks](/_next/image?url=https%3A%2F%2Fcdn.sanity.io%2Fimages%2Fvnojb4xs%2Fproduction%2F9f145325bb1942de1d28fd106f4e9483d736e3cb-450x450.png%3Ffit%3Dmax%26auto%3Dformat&w=828&q=75)
I en moderne webshop er det afgørende at sikre, at alle betalingsprocesser fungerer gnidningsfrit og effektivt.
En af de mest almindelige udfordringer er, at information om fuldførte betalinger ikke når frem til webshoppen, hvilket kan føre til manglende ordreoprettelser, forkerte ordrestatusser og manglende ordrebekræftelser.
For at løse dette problem tilbyder ePay en robust callback-service. Vi vil i artiklen her kigge på, hvad et callback er, hvordan du kan bruge det i din webshop, og hvorfor det er vigtigt at håndtere callbacks korrekt uden at belaste dem med al din forretningslogik.
Hvad er et callback?
Et callback er en funktion, hvor en server (i dette tilfælde ePay) sender en HTTP-forespørgsel til en foruddefineret URL (webshoppens server), efter en specifik begivenhed har fundet sted – i dette tilfælde en fuldført betaling.
Callbacks sikrer, at webshoppen modtager alle nødvendige betalingsinformationer, selvom der skulle opstå kommunikationsproblemer i processen.
Dette betyder, at ordreinformationer kan opdateres, ordrebekræftelser kan sendes til kunderne, og andre essentielle handlinger kan udføres korrekt.
ePays callback service består af en simpel Microsoft .NET WebClient komponent, der kun kan aktivere en webside med en række GET-parametre.
Det er webshoppens ansvar at fange disse parametre og opdatere systemet korrekt.
Hvorfor bruge callback og ikke bare acceptURL?
Det kan måske være fristende, blot at lægge ens forretningslogik i acceptURL’en, i stedet for at skulle ”døje” med at håndtere callbacks.
Når alt kommer til alt, så kan begge to bruges til at trigge en eller flere processor. Der er bare et stort ”men” – og det er sikkerhed.
Når acceptURL’en bliver kaldt, er den synlig for brugeren i deres browser. Det betyder også, at den er mulig at manipulere med.
Herudover kan du også risikere, at kundens browser blokerer acceptURL’en, og du derved aldrig får besked om gennemført betaling.
Callbacks derimod bliver sendt direkte fra ePays servere til jeres webshop, uden om brugeren, og er derfor ikke synlig for dem.
Vi anbefaler derfor altid at lægge forretningslogik i callbackURL’en og ikke i acceptURL’en.
Sådan virker callbacks
Når en betaling er gennemført, kalder ePay den definerede callbackURL med de nødvendige betalingsinformationer. Denne proces er asynkron, hvilket betyder, at kunden kan blive sendt til accepturl, mens callback-processen kører i baggrunden.
Hvis en fejl opstår (f.eks. hvis URL'en ikke kan tilgås eller returnerer en fejl som 404 eller 500), forsøger ePay at sende callback'en igen hver time i op til 24 timer.
ePay kalder du fra følgende IP-adresser:
- 34.248.199.226
- 52.212.176.122
- 52.31.100.119
Herunder kan du se en illustration for hvordan det asynkrone callback flow fungerer i ePay.
Sådan opsættes callbacks
![ePays asynkrone callback flow](https://cdn.sanity.io/images/vnojb4xs/production/cd38190e8a0514cb61a5936987e0377e3cb89491-800x1600.png?fit=max&auto=format)
Callbacks kan opsættes på to måder:
- Ved at bruge parameteren callbackurl i betalingsformularen.
- Ved at definere URL'en i ePays administration under Indstillinger -> Betalingssystem.
Det er vigtigt at bemærke, at callbacks kun fungerer på portene 80 og 443.
Når du opsætter callbacks i din webshop med ePay, er det vigtigt at sikre, at de fungerer korrekt og effektivt uden at overbelaste ePays systemer. Her er en trin-for-trin guide til korrekt opsætning af callbacks:
#1 - Definer callback URL:
Brug en af de to metoder nævnt ovenfor til at definere din callback URL. Sørg for, at URL'en peger på en side i din webshop, der kan håndtere de modtagne GET-parametre korrekt.
#2 - Modtag og valider data:
Når din callback URL modtager en anmodning fra ePay, skal du først validere de modtagne data. Dette inkluderer at tjekke MD5-hashen for at sikre, at dataene ikke er blevet manipuleret.
Du kan læse mere om MD5-hashen her: https://docs.epay.dk/integration/payment-window/specification#hash
#3 - Giv hurtigt svar tilbage til ePay:
Det er afgørende at sende et hurtigt svar tilbage til ePay for at bekræfte modtagelsen af callback’en. Dette sikrer, at din webshop ikke bliver sat i en "slow lane", hvilket kan forsinke efterfølgende callbacks. Returnér en simpel HTTP 200 OK status.
OBS: Callbacks har en timeout på 3 sekunder.
#4 - Håndter forretningslogik separat:
Efter at have sendt et hurtigt svar til ePay, bør du håndtere al din forretningslogik separat. Dette kan inkludere opdatering af ordrestatus, afsendelse af ordrebekræftelser, opdatering af lagerbeholdning, m.v. Ved at udføre disse handlinger i en separat proces eller job, sikrer du, at callback-håndteringen forbliver hurtig og effektiv.
#5 - Instant Callback:
Hvis du ønsker at modtage callback'en før brugeren sendes til accepturl, kan du tilføje parameteren instantcallback i betalingsformularen:
<input type="HIDDEN" name="instantcallback" value="1" />
OBS: Callbacks har en timeout på 3 sekunder.
Dette vil få ePay til at sende callback'en inden kunden sendes til accepturl. Hvis der opstår en fejl, sættes callback'en i kø og forsøges sendt igen hver time i op til 24 timer.
Bemærk at MobilePay betalinger altid vil køre asynkront. Dette betyder at brugeren vil blive sendt til jeres accepturl inden ePay fremsender callback til jeres callbackurl.
Grunden til dette skyldes, at hvis MobilePay ikke får svar hurtigt nok (pga. callbackurl’en er langsom om at svare, så vil brugeren modtage en besked om teknisk fejl i app’en, hvorved brugeren formodentlig vil prøve igen. Dette vil resultere i dobbeltbetalinger.
#6 - Fejlhåndtering:
Implementér fejlhåndtering, så du kan logge og overvåge eventuelle problemer, der opstår under callback-processen. Sørg for, at systemet er indstillet til at modtage fejlmeddelelser via e-mail fra ePay, så du hurtigt kan reagere på eventuelle problemer. Du indtaster din e-mailadresse i ePay administrationen under ”Indstillinger” -> ”Betalingssystemet” -> ”Callback error e-mail”.
Eksempler på hvad du kan bruge callbacks til i din webshop
Når du modtager et callback fra ePay, kan du bruge det til at automatisere og optimere en række processor i din webshop. Her er en række simple eksempler på hvad dette kunne være.
Opdatering af ordrestatus
Når betalingen er bekræftet via callback, kan webshoppen automatisk opdatere ordrestatus til "Betalt" i jeres system. Dette sikrer, at ordren hurtigt kan behandles og sendes til kunden.
Afsendelse af ordrebekræftelse
Med de modtagne betalingsdetaljer kan webshoppen sende en ordrebekræftelse til kunden via e-mail. Dette giver kunden en bekræftelse på, at deres betaling er modtaget, og at ordren er ved at blive behandlet.
Opdatering af lagerbeholdning
Når en betaling er gennemført, kan webshoppen justere lagerbeholdningen for de solgte varer. Dette hjælper med at undgå over-salg og sikrer nøjagtig lagerstyring.
Bogføring og regnskab
Betalingsoplysningerne kan automatisk overføres til virksomhedens regnskabssystem. Dette letter bogføringen og sikrer, at alle transaktioner er korrekt bogført.
Aktivering af abonnementer
Hvis webshoppen tilbyder abonnementstjenester, kan callback'en bruges til at aktivere eller forny abonnementer. Informationer som abonnement-ID og betalingsstatus kan opdateres i systemet.
Håndtering af mulig svindel
Callbacks kan inkludere svindelindikatorer (fraud notifications). Webshoppen kan bruge disse oplysninger til at markere mistænkelige transaktioner og evt. iværksætte yderligere verificering før endelig ordrebehandling.
Automatisering af forsendelsesprocesser
Webshoppen kan integrere callback-data med forsendelsessystemer for at generere forsendelsesetiketter og informere logistikpartnere om nye ordrer, hvilket accelererer forsendelsesprocessen.