Tutorials
Ideal Professional / Advanced / Zelfbouw
Uitleg over de implementatie van iDEAL in PHP. In uitbreiding van dit script is www.ideal-simulator.nl door mij ontwikkeld en heb ik nieuwe PHP code geschreven die de implementatie van iDEAL nog verder moet vereenvoudigen!
Pagina 1
Tutorial: iDEAL Professional / Advanced / Zelfbouw
Deze tutorial is aangepast op 31-03-2009 door Martijn Wieringa (www.php-solutions.nl). Er is nieuwe (PHP 5) code toegevoegd, en veel URLs en voorbeelden zijn aangepast zodat alles weer up-to-date is.
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.
Alle klanten van de aangesloten banken die gebruik kunnen maken van 'internetbankieren' kunnen ook gebruik maken van iDEAL.
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.
- [li]ABN Amro Bank[/li][li]Rabobank[/li][li]ING Bank[/li][li]Fortisbank[/li][li]SNS bank[/li]
Alle klanten van de aangesloten banken die gebruik kunnen maken van 'internetbankieren' kunnen ook gebruik maken van iDEAL.
Pagina 2
Wat is iDEAL
iDEAL is de 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.
De verschillende versies van iDEAL
- iDEAL Professional is het meest interessant als je iDEAL zo veel mogelijk wil integreren in je eigen webshop/winkelwagen systeem.
- iDEAL Lite is nuttig als een real-time controle van de betaling niet noodzakelijk is. Over iDEAL Lite vind je hier een kleine tutorial.
- In iDEAL Kassa en iDEAL Internet Kassa zit een winkelwagen systeem zit verweven (waarvoor je per transactie betaald). iDEAL Internet Kassa heeft als extra dat deze ook creditcard betalingen accepteerd.
Omdat er aan deze uitgebreidere iDEAL versies ook 'uitgebreidere prijskaartjes' zitten, behandel ik hier alleen iDEAL Professional.
Voor meer (algemene) informatie over iDEAL en de verschillende mogelijkheden verwijs ik je graag door naar de website http://www.ideal.nl.
Ter demonstratie van de verschillende voorbeelden zal ik gebruik maken van www.ideal-simulator.nl.
De classes en functies zouden met het aanpassen van de configuratie prima moeten werken bij andere banken.
De verschillende versies van iDEAL
- iDEAL Professional is het meest interessant als je iDEAL zo veel mogelijk wil integreren in je eigen webshop/winkelwagen systeem.
- iDEAL Lite is nuttig als een real-time controle van de betaling niet noodzakelijk is. Over iDEAL Lite vind je hier een kleine tutorial.
- In iDEAL Kassa en iDEAL Internet Kassa zit een winkelwagen systeem zit verweven (waarvoor je per transactie betaald). iDEAL Internet Kassa heeft als extra dat deze ook creditcard betalingen accepteerd.
Omdat er aan deze uitgebreidere iDEAL versies ook 'uitgebreidere prijskaartjes' zitten, behandel ik hier alleen iDEAL Professional.
Voor meer (algemene) informatie over iDEAL en de verschillende mogelijkheden verwijs ik je graag door naar de website http://www.ideal.nl.
Ter demonstratie van de verschillende voorbeelden zal ik gebruik maken van www.ideal-simulator.nl.
De classes en functies zouden met het aanpassen van de configuratie prima moeten werken bij andere banken.
Pagina 3
Hoe werkt iDEAL Professional / Advanced / Zelfbouw
Na dat je iDEAL hebt geintegreerd op je website, zou voor klanten de 'workflow' als volgt zijn:
- [li]Een klant wil een bedrag afrekenen op je website met iDEAL (bijvoorbeeld een product uit je webshop).[/li][li]De bezoeker kies uit een keuzelijst een iDEAL ondersteunende bank waarbij hij/zij een rekening heeft.[/li][li]De bestelgegevens worden uitgewisseld met de server van de betreffende bank, en de bezoeker wordt doorgesluist naar de inlogpagina van die bank.[/li][li]De bezoeker logt in met zijn/haar gegevens.[/li][li]De bezoeker ziet de bestelgegevens van de website die met de server waren uitgewisselt bij punt 3.[/li][li]De bezoeker bevestigd de bestelling en wordt door weer terugverwezen naar de oorspronkelijke website.[/li][li]Je website controleert de status van de betaling bij de bank door wederom te communiceren met de server van de bank. Aan de hand van de status bepaald de website hoe verder te gaan.[/li]
Pagina 4
Wat kost iDEAL Professional / Advanced / Zelfbouw
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.
Pagina 5
Voorbereiding
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.
Het iDEAL dashboard van de Rabobank vind je op:
http://ideal.rabobank.nl (LIVE omgeving)
http://idealtest.rabobank.nl (TEST omgeving)
Voor de ING Bank is dit
https://ideal.secure-ing.com (LIVE omgeving)
https://idealtest.secure-ing.com (TEST omgeving)
Note: Er worden dus in feite 2 accounts voor je klaar gemaakt. 1 op de LIVE-locatie, en 1 op de TEST-locatie. Zorg er voor dat je alleen op de TEST-locatie werkt!!
In het voorbeeld maken we gebruik van de iDEAL Simulator, niet van een betaald test account.
Download de benodigde PHP code van http://www.ideal-simulator.nl/downloads/ideal-professional.zip.
De classes/functies die je download zijn geschikt voor PHP 5, en zijn een stuk eenvoudiger toe te passen dan de standaard code die je van je bank ontvangt.
Tevens heb ik enkele pagina's toegevoegd om werking van iDEAL Professional te demonstreren.
Upload de bestanden naar je server. Als het goed is moet de applicatie direct werken, omdat deze is geconfigureerd voor de iDEAL Simulator omgeving.
Je kunt de iDEAL Simulator omgeving blijven gebruiken tijdens de ontwikkel procedure, maar je kunt ook gebruik maken van de TEST-omgeving van je bank.
Om iDEAL uiteindelijk ook op de TEST/LIVE omgeving van je bank werkend te krijgen, moet je een eigen private key file en private certificate file aanmaken en uploaden op je iDEAL dashboard.
M.b.v. je private key (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://www.ideal-simulator.nl/ideal-professional-ssl-certificaten.html.
Meer informatie over openssl vind je (ook) op http://www.openssl.org.
Nu je private.key en je private.cer zijn gemaakt, moet je deze bestanden plaatsen in de map "ssl/". In deze map bevinden zich al enkele certificaten van iDEAL. Deze certificaten zijn o.a. nodig voor het identificeren van/aan de iDEAL Server. Zorg dat deze map beveiligd is, zodat mensen je private.key/private.cer niet kunnen downloaden.
Je private.cer moet je vervolgens ook uploaden in je iDEAL dasboard. Zorg er voor dat je het certificaat upload op zowel de TEST als LIVE omgeving
Om de voorbeeld scripts te laten werken op het TEST ACCOUNT van je bank, moet je in de scripts de Aquirer (Naam van je bank), MerchantID en PrivateKeyPass instellen. Ook moet je in de bestanden step2.php en transaction_request.php je ReturnUrl aanpassen.
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.
Het iDEAL dashboard van de Rabobank vind je op:
http://ideal.rabobank.nl (LIVE omgeving)
http://idealtest.rabobank.nl (TEST omgeving)
Voor de ING Bank is dit
https://ideal.secure-ing.com (LIVE omgeving)
https://idealtest.secure-ing.com (TEST omgeving)
Note: Er worden dus in feite 2 accounts voor je klaar gemaakt. 1 op de LIVE-locatie, en 1 op de TEST-locatie. Zorg er voor dat je alleen op de TEST-locatie werkt!!
In het voorbeeld maken we gebruik van de iDEAL Simulator, niet van een betaald test account.
Download de benodigde PHP code van http://www.ideal-simulator.nl/downloads/ideal-professional.zip.
De classes/functies die je download zijn geschikt voor PHP 5, en zijn een stuk eenvoudiger toe te passen dan de standaard code die je van je bank ontvangt.
Tevens heb ik enkele pagina's toegevoegd om werking van iDEAL Professional te demonstreren.
Upload de bestanden naar je server. Als het goed is moet de applicatie direct werken, omdat deze is geconfigureerd voor de iDEAL Simulator omgeving.
Je kunt de iDEAL Simulator omgeving blijven gebruiken tijdens de ontwikkel procedure, maar je kunt ook gebruik maken van de TEST-omgeving van je bank.
Om iDEAL uiteindelijk ook op de TEST/LIVE omgeving van je bank werkend te krijgen, moet je een eigen private key file en private certificate file aanmaken en uploaden op je iDEAL dashboard.
M.b.v. je private key (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://www.ideal-simulator.nl/ideal-professional-ssl-certificaten.html.
Meer informatie over openssl vind je (ook) op http://www.openssl.org.
Nu je private.key en je private.cer zijn gemaakt, moet je deze bestanden plaatsen in de map "ssl/". In deze map bevinden zich al enkele certificaten van iDEAL. Deze certificaten zijn o.a. nodig voor het identificeren van/aan de iDEAL Server. Zorg dat deze map beveiligd is, zodat mensen je private.key/private.cer niet kunnen downloaden.
Je private.cer moet je vervolgens ook uploaden in je iDEAL dasboard. Zorg er voor dat je het certificaat upload op zowel de TEST als LIVE omgeving
Om de voorbeeld scripts te laten werken op het TEST ACCOUNT van je bank, moet je in de scripts de Aquirer (Naam van je bank), MerchantID en PrivateKeyPass instellen. Ook moet je in de bestanden step2.php en transaction_request.php je ReturnUrl aanpassen.
Pagina 6
Voorbeeld (toelichting)
Ik heb een simpel voorbeeld bijgevoegd om de iDEAL handelingen te demonstreren. Deze voorbeelden vind je terug in de bestanden "issuer_request.php", "transaction_request.php" en "status_request.php".
De bestanden step1.php, step2.php en step3.php demonstreren het volledige betaal proces.
Een werkend voorbeeld vind je op http://www.ideal-simulator.nl/examples/professional/step1.php.
Step1.php (Voert een issuer request uit)
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 (Voert een transaction request uit)
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 (Voert een status request uit)
Nadat de transactie is voltooid wordt de bezoeker 'terug gestuurt' naar deze pagina (dit is geconfigureert in "step2.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' (TransactionID) en 'ec' (EntranceCode). Via deze parameters kan de bijbehorende bestelling weer worden opgezocht en verder worden verwerkt.
De bestanden step1.php, step2.php en step3.php demonstreren het volledige betaal proces.
Een werkend voorbeeld vind je op http://www.ideal-simulator.nl/examples/professional/step1.php.
Step1.php (Voert een issuer request uit)
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 (Voert een transaction request uit)
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 (Voert een status request uit)
Nadat de transactie is voltooid wordt de bezoeker 'terug gestuurt' naar deze pagina (dit is geconfigureert in "step2.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' (TransactionID) en 'ec' (EntranceCode). Via deze parameters kan de bijbehorende bestelling weer worden opgezocht en verder worden verwerkt.
Pagina 7
Voorbeeld
Start de pagina 'step1.php' met je browser (Je kunt ook mijn testversie gebruiken op http://www.ideal-simulator.nl/examples/professional/).
Random worden vereiste transactie gegevens ingevuld. Selecteer een bank (in de Simulator omgeving zijn er 5 banken beschikbaar). Bij de TEST omgeving van je bank zijn er doorgaans 2 banken beschikbaar.
De rest lijkt me voor zich spreken..
Note: De omschrijving wordt afgekapt op 32 karakters.
Random worden vereiste transactie gegevens ingevuld. Selecteer een bank (in de Simulator omgeving zijn er 5 banken beschikbaar). Bij de TEST omgeving van je bank zijn er doorgaans 2 banken beschikbaar.
De rest lijkt me voor zich spreken..
Note: De omschrijving wordt afgekapt op 32 karakters.
Pagina 8
Verplichte testprocedure
De Rabobank 'eist' van haar iDEAL klanten dat deze een testprocedure uitvoeren. Bij deze testprocedure moeten 6 testen worden uitgevoerd (op de testlocatie van de bank!).
Alle overige bedragen op de TEST locatie van de bank geven 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 moet men in het script aangeven niet langer op de TEST omgeving, maar op de LIVE omgeving te willen werken.
- [li]Het overmaken van € 1.00 - Geeft als resultaat een 'status: SUCCESS' (transactie voltooid).[/li][li]Het overmaken van € 2.00 - Geeft als resultaat een 'status: CANCELLED' (transactie is geannuleert door de bezoeker).[/li][li]Het overmaken van € 3.00 - Geeft als resultaat een 'status: EXPIRED' (transactie is verlopen).[/li][li]Het overmaken van € 4.00 - Geeft als resultaat een 'status: OPEN' (transactie is nog niet voltooid).[/li][li]Het overmaken van € 5.00 - Geeft als resultaat een 'status: FAILURE' (transactie kon niet worden verwerkt).[/li][li]Het overmaken van € 7.00 - Geeft als resultaat een 'status: ERROR' (transactie fout in protocol, zoals fouten in de digitale handtekening).[/li]
Alle overige bedragen op de TEST locatie van de bank geven 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 moet men in het script aangeven niet langer op de TEST omgeving, maar op de LIVE omgeving te willen werken.
Pagina 9
Praktijk
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 ;)
Ik hoop dat het commentaar in de pagina's voldoende hou vast biedt!
Ik hoop dat het commentaar in de pagina's voldoende hou vast biedt!
Pagina 10
Tot slot
Hier nog een overzichtje van belangrijke links m.b.t. iDEAL:
Een werkend voorbeeld (maakt gebruik van de rabobank testlocatie)
http://www.ideal-simulator.nl/examples/professional/step1.php
De (door mij) ontwikkelde iDEAL classes en functies:
http://www.ideal-simulator.nl/downloads/ideal-professional.zip
De officiele (niet aangepaste) iDEAL classes, functies en documentatie.. gebruik op eigen risico ;)
http://www.ideal-simulator.nl/downloads/ideal-professional-rabobank.zip
Algemene iDEAL website
http://www.ideal.nl
De iDEAL test-dashboard van de Rabobank
http://idealtest.rabobank.nl
De iDEAL live-dashboard van de Rabobank
http://ideal.rabobank.nl
Informatie over certificaten e.d.
http://www.openssl.org
http://www.ideal-simulator.nl/ideal-professional-ssl-certificaten.html
http://slacksite.com/apache/certificate.html
Meer informatie over de iDEAL Simulator
http://www.ideal-simulator.nl
Een werkend voorbeeld (maakt gebruik van de rabobank testlocatie)
http://www.ideal-simulator.nl/examples/professional/step1.php
De (door mij) ontwikkelde iDEAL classes en functies:
http://www.ideal-simulator.nl/downloads/ideal-professional.zip
De officiele (niet aangepaste) iDEAL classes, functies en documentatie.. gebruik op eigen risico ;)
http://www.ideal-simulator.nl/downloads/ideal-professional-rabobank.zip
Algemene iDEAL website
http://www.ideal.nl
De iDEAL test-dashboard van de Rabobank
http://idealtest.rabobank.nl
De iDEAL live-dashboard van de Rabobank
http://ideal.rabobank.nl
Informatie over certificaten e.d.
http://www.openssl.org
http://www.ideal-simulator.nl/ideal-professional-ssl-certificaten.html
http://slacksite.com/apache/certificate.html
Meer informatie over de iDEAL Simulator
http://www.ideal-simulator.nl
Reacties
0