26
jul

xml notificatie iDeal Basic

Zodra er via iDeal Basic afgerekend gaat worden, verlaat de bezoeker jouw website om naar de iDeal website van de aangesloten bank te gaan. Jij wilt uiteraard het resultaat van de betaling in combinatie met het juiste ordernummer in de database terugzien, om te weten of je deze klant daadwerkelijk moet gaan leveren. Hieronder staan 2 manieren om dit voor elkaar te krijgen (uitgaande van PHP als programmeertaal).

sessie

Je kunt het ordernummer in een sessie zetten en de status van de betaling uitlezen via de return URL die je in het iDeal Dashboard OF in je code hebt opgegeven. Als je voor je success URL, je fout URL en je annuleer URL dezelfde pagina gebruikt, maar met een verschillende querystring, dan gebruik je deze querystring in combinatie met de sessie. Voorbeeld:

  • Je maakt een uniek ordernummer (van bijv. 12 karakters) aan:
    $_SESSION["ordernumber"] = substr($GLOBALS["order_prefix"].mt_rand(),0,12);
  • Dit stuur je mee naar iDeal als (verplicht!) hidden veld:
    <input type="hidden" name="purchaseID" value="<echo $_SESSION["ordernumber"]; ?>”>
  • De return URL’s die je hebt opgegeven zijn bijvoorbeeld:
    idealbetaling.php?result=success“, “idealbetaling.php?result=failure” en “idealbetaling.php?result=cancelled
  • In het script idealbetaling.php lees je uiteindelijk $_SESSION["ordernumber"] in combinatie met $_GET["result"] uit, om daarmee je database te updaten

Er zijn 2 absolute nadelen aan deze methode:

  • sessies kennen timeouts: als de klant besluit zijn bestelling pas af te rekenen, nadat hij een heel lange lunchpauze heeft gehad, dan is de inhoud van $_SESSION["ordernumber"] leeg.
  • als de klant na de afronding van zijn betaling NIET op de knop “Naar winkel” drukt, maar zijn browser afsluit, dan komt hij niet op de return URL terecht.

xml notificatie

Een nettere manier om het ordernummer (oftwel: purchaseID) te vangen is via xml notificatie. iDeal stuurt een XML bericht naar een door jouw opgegeven pagina. In dit bericht staan zowel het ordernummer als het resultaat van de betaling. Helaas kunnen iDeal helpdesken je niet altijd wat een dergelijke bericht inhoudt.

Na lang zoeken, vond ik uiteindelijk een pagina op Whelp.nl van Theo Bakker, die mij een heel stuk op weg heeft geholpen.

  • Download dit bestand, pas het aan met de juiste database verbinding en upload het naar jouw webserver.
  • Login op het iDeal Dashboard en geef onder de “Configuratie”-tab aan dat je notificatie via XML moet plaatsvinden. In het veld “notificatie URL” verwijs je naar het script dat je zojuist hebt geupload.
  • Bij elke betaling die gedaan wordt, stuurt iDeal nu een ruw XML bericht naar de notificatie URL, die daar automatisch de status en het purchaseID uitpeutert en inleest in jouw database.

Het script is in een live situatie getest. Mocht je problemen tegenkomen, laat het even weten.

1 post

Post een opmerking

Opmerkingen RSS Feed   TrackBack URL