Deze tutorial/handleiding geeft een wat ruimere kijk op de internet betaalmethode "iDEAL" die wordt aangeboden door verschillende grote banken in Nederland. Bij het schrijven van deze tutorial hebben de volgende banken zich reeds aangesloten bij iDEAL.
Verwacht wordt dat de SNS bank zich ook snel zal aansluiten bij iDEAL.
Alle klanten van de aangesloten banken die gebruik kunnen maken van 'internetbankieren' kunnen ook gebruik maken van iDEAL.
iDEAL is de nieuwe internet betaalmethode van de grootste Nederlandse banken. Het voordeel van iDEAL is dat deze met dezelfde interface werkt als "internetbankieren". Hierdoor denkt men de drempel van het online betalen te verlagen.
iDEAL komt in 3 verschillende versies. De basisversie is het meest interessant als je iDEAL zo veel mogelijk wil integreren in je eigen webshop/winkelwagen systeem. Er worden echter ook 2 uitgebreidere versies geboden waarin o.a. een winkelwagen systeem zit verweven. Omdat er aan deze uitgebreidere iDEAL versies ook 'uitgebreidere prijskaartjes' zitten, behandel ik hier alleen iDEAL basis.
Voor meer (algemene) informatie over iDEAL en de verschillende mogelijkheden verwijs ik je graag door naar de website http://www.ideal.nl of http://www.rabobank.nl/ideal.
Ik heb me verdiept in iDEAL voor een klant die een contract heeft gesloten met de Rabobank. Alle voorbeelden richten zich dan ook op de Rabobank omgeving. De classes en functies zouden met het aanpassen van enkele URL's in het configuratiebestand moeten werken bij andere banken.
Na dat je iDEAL hebt geintegreerd op je website, zou voor klanten de 'workflow' als volgt zijn:
Verschillende banken bieden betalingen via iDEAL op verschillende manieren aan. Afhankelijk van de bank kost dit zo'n 50 tot 90 cent per transactie. Sommige banken rekenen bovenop de kosten per transactie een vast bedrag per maand. Het is dus noodzaak om goed uit te zoeken wat voor jou website het goedkoopste is.
Voor een klant heb ik via de Rabobank een iDEAL contract gesloten. De voorbeelden zouden (na een juiste configuratie) direct moeten werken binnen de Rabobank testomgeving.
Vraag bij je bank een iDEAL account aan. Van de bank krijg je vervolgens een gebruikersnaam, wachtwoord en een 'merchant id' (verkoper id). Met je gebruikersnaam en wachtwoord kun je inloggen op het 'ideal dashboard'. Dit 'dashboard' toont o.a. informatie over de status van jou iDEAL account. De URL van het dashboard van de Rabobank testlocatie is http://idealtest.rabobank.nl.
Note: Er worden in feite 2 accounts voor je klaar gemaakt. 1 op de live-locatie, en 1 op de testlocatie. Zorg er voor dat je alleen op de testlocatie werkt!!
Download de benodigde php classes/scripts van http://www.pholeron.nl/projects/ideal/ideal.zip.
Note: De classes heb ik NIET zelf gemaakt, maar via via verkregen van de Rabobank. Ik heb de classes wél deels aangepast zodat deze makkelijker en veiliger te gebruiken zijn. Ook heb ik pagina's toegevoegd om de functionaliteit van de classes te kunnen weergeven.
Voor je de bestanden upload naar je server moet je nog 2 dingen doen:
M.b.v. je privatekey (1024bit) en je certificaat kan je script zich identificeren bij de server. Hierdoor is de 'veiligheid' van het dataverkeer gewaarborgd. Een certificaat kan aangevraagd worden bij VeriSign (tegen betaling natuurlijk), of zelf gegenereerd worden met openssl. Zie hiervoor een van de vele handleidingen online, bijvoorbeeld 'http://slacksite.com/apache/certificate.html'. Noem je privatekey-bestand "priv.pem" en je certificaat-bestand "cert.cer".
Meer informatie over openssl vind je (ook) op http://www.openssl.org.
Note: Suggesties voor betere (Nederlandstalige) websites m.b.t. het maken van certificaten graag als reactie posten :)
Nu je privatekey en je certificaat zijn gemaakt, moet je deze bestanden plaatsen in de map "ideal/security/". In deze map bevinden zich al enkele certificaten van iDEAL. Deze certificaten zijn o.a. nodig voor het identificeren van/aan de ideal server.
Je certificaat moet je vervolgens ook uploaden in je iDEAL dasboard. Zorg er voor dat je het certificaat upload op de test locatie http://idealtest.rabobank.nl (en vergeet niet deze straks ook op de live locatie http://ideal.rabobank.nl te plaatsen).
Voor de configuratie van iDEAL moeten we nu het bestand "ideal/Settings.php" openen. Vul de volgende gegevens in of vul ze aan:
Upload de iDEAL bestanden naar je webserver. Geef het bestand "ideal/logs/ideal.log" lees- en schrijfrechten. Dit bestand registreert de communicatie tussen het script en de iDEAL server.
Ik heb een simpel voorbeeld bijgevoegd om de iDEAL activiteiten te demonstreren. Deze voorbeelden vind je terug in de bestanden "step1.php", "step2.php" en "step3.php". Een werkend voorbeeld vind je op http://www.pholeron.nl/projects/ideal/step1.php.
Step1.php
Deze pagina bevat een formulier waarin de ordergegevens staan. Ook wordt op deze pagina de mogelijkheid geboden om een bank te selecteren die iDEAL ondersteund. Deze 'lijst met banken' wordt opgevraagd van de iDEAL server.
Step2.php
Deze pagina communiceert de transactie met de iDEAL server. Wanneer de transactie wordt geaccepteerd, wordt de bezoeker doorverwezen naar de login-pagina van de geselecteerde bank (In de testomgeving zie je in plaats van de login pagina een simpel 'bevestig transactie' scherm). Als de transactie niet wordt geaccepteerd toont de pagina een foutmelding.
Step3.php
Nadat de transactie is voltooid wordt de bezoeker 'teruggestuurt' naar deze pagina (dit is geconfigureert in het bestand "ideal/Settings.php"). Deze pagina controleert vervolgens de status van de transactie. Indien er geen fouten zijn opgetreden heeft de transactie de status 'success' en krijgt de bezoeker een melding dat de betaling is voltooid en de order verwerkt zal worden. Anders wordt een foutmelding getoond.
Note: Bij het terugsturen van de bezoeker krijgt de pagina de GET variabele 'trxid' mee (transaction id). Via deze parameter kan de bijbehorende bestelling weer worden opgezocht en verder worden verwerkt.
Start de pagina 'step1.php' met je browser (Je kunt ook mijn testversie gebruiken op http://www.pholeron.nl/projects/ideal/step1.php).
Random worden vereiste transactie gegevens ingevuld.
Selecteer een bank (in de testomgeving zijn er 2 banken beschikbaar: "Test Issuer" en "Test Issuer 2").
De rest lijkt me voor zich spreken..
Note: De omschrijving wordt afgekapt op 32 krakters.
De Rabobank 'eist' van haar iDEAL klanten dat deze een testprocedure uitvoeren. Bij deze testprocedure moeten 6 testen worden uitgevoerd (op de testlocatie!).
Alle overige bedragen geven op de testlocatie standaard als resultaat 'status: SUCCESS'.
Pas als deze test transacties zijn voltooid kan men de 'live locatie' activeren voor gebruik via het live-dashboard op http://ideal.rabobank.nl. Vergeet niet om je certificaat in de live-omgeving te uploaden!
Zodra iDEAL geactiveerd is kan men de ACQUIRERURL in "ideal/Settings.php" aanpassen naar de live omgeving (Voor de Rabobank is dit:ssl://ideal.rabobank.nl:443/ideal/iDeal).
Wil je in je website de betaalmogelijkheid "iDEAL" integreren, zorg dan dat je de 3 stappen goed hebt geintegreerd. Ik heb de code van de voorbeeld pagina's dan ook 'zo leeg mogelijk' gelaten zodat het knip- en plakwerk (hopelijk) zo eenvoudig mogelijk zal zijn ;)
Hier nog een overzichtje van belangrijke links m.b.t. iDEAL:
Een werkend voorbeeld (maakt gebruik van de rabobank testlocatie)
http://www.pholeron.nl/projects/ideal/step1.php
De (door mij) aangepaste iDEAL classes en functies:
http://www.pholeron.nl/projects/ideal/ideal.zip
De officiele (niet aangepaste) iDEAL classes en functies.. gebruik op eigen risico ;)
http://www.pholeron.nl/projects/ideal/ideal.rabobank.zip
Officiele iDEAL documentatie van de Rabobank
http://www.pholeron.nl/projects/ideal/documentation.zip
Algemene iDEAL informatie van de Rabobank
http://www.rabobank.nl/ideal
De iDEAL test-server van de Rabobank:
ssl://idealtest.rabobank.nl:443/ideal/iDeal
De iDEAL test-dashboard van de Rabobank
http://idealtest.rabobank.nl
De Rabobank live-server van iDEAL:
ssl://ideal.rabobank.nl:443/ideal/iDeal
De iDEAL live-dashboard van de Rabobank
http://ideal.rabobank.nl
Informatie over certificaten e.d.
http://www.openssl.org
http://slacksite.com/apache/certificate.html