IDEAL

Dit artikel is met toestemming van Martijn Wieringa gebaseerd op een artikel welke te vinden is op PHPHulp.nl. Ook is een meer technische uitleg te vinden op http://www.ideal-simulator.nl/ideal-professional-introductie.html. Hier worden ook enkele implementaties van andere banken besproken en uitgelegd.

iDEAL?

Dit artikel geeft een wat ruimere kijk op de internet betaalmethode "iDEAL" welke wordt aangeboden door verschillende grote banken in Nederland. Bijna alle grote banken zijn reeds aangesloten bij iDEAL
Alle klanten van de aangesloten banken die gebruik kunnen maken van 'internetbankieren' kunnen ook gebruik maken van iDEAL.

Wat is iDEAL?

iDEAL is een 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.
In de toekomst wordt er een internationale versie ontwikkeld, zodat ook buitenlandse banken gebruik kunnen maken van iDEAL.

Welke smaken zijn er?

iDEAL is er in verschillende versies. Elke bank hanteert verschillende namen. Ook verschillen de tarieven per bank.
Zo betaal je bij de Rabobank en bij ABN Amro een maandelijks bedrag en daarbovenop per transactie een bedrag, terwijl bij de andere banken alleen per transactie betaalt. Heb je dus nog geen zakelijke rekening geopend, dan loont het de moeite als je ook iDEAL wilt gaan gebruiken dit mee te nemen in je keuze.

Dit artikel is gebaseerd op iDEAL welke de Rabobank aanbiedt.
De Rabobank biedt vier verschillende versies aan, te weten: iDEAL Lite, iDEAL Professional, Rabo iDEAL Kassa en Rabo Internetkassa.
iDEAL Lite is de simpelste van de vier versies en je betaalt alleen per transactie. Echter heb je bij deze versie wel enkele beperkingen.
Voor meer informatie over de verschillende versies kun je naar de website van de Rabobank gaan.

De Professional versie is het meest interessant als je iDEAL zo veel mogelijk wil integreren in je eigen website. iDEAL Kassa en Internetkassa zijn twee uitgebreidere versies waarin o.a. een winkelwagen systeem zit verweven. Echter zitten er aan deze uitgebreidere iDEAL versies ook 'uitgebreidere prijskaartjes'.

Voor meer (algemene) informatie over iDEAL en de verschillende mogelijkheden kun je kijken op de website van iDEAL of de zakelijke pagina van iDEAL.

Alle voorbeelden richten zich op de Rabobank omgeving. De classes en functies zouden met het aanpassen van enkele URL's in het configuratiebestand ook moeten werken bij andere banken.

Hoe werkt iDEAL Professional?

Na dat je iDEAL hebt geintegreerd op je website, zou voor klanten de 'workflow' als volgt zijn:

Een klant wil een bedrag afrekenen op je website met iDEAL (bijvoorbeeld een product uit je webshop).
De bezoeker kiest uit een keuzelijst een iDEAL ondersteunende bank waarbij hij/zij een rekening heeft.
De bestelgegevens worden uitgewisseld met de server van de betreffende bank en de bezoeker wordt doorgestuurd naar de inlogpagina van die bank.
De bezoeker logt in met zijn/haar gegevens.
De bezoeker ziet de bestelgegevens van de website die met de server waren uitgewisseld.
De bezoeker bevestigt de bestelling en wordt door weer terugverwezen naar de oorspronkelijke website.
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 bepaalt de website hoe verder te gaan.

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 jouw iDEAL account. De URL van het dashboard van de Rabobank testlocatie is http://idealtest.rabobank.nl.
(andere banken hanteren een url die daar sprekend op lijkt. Controleer dus even wat het voor jouw bank is).

Er worden in feite twee 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.ideal-simulator.nl/downloads/ideal-professional-example.zip.

De classes zijn beschikbaar gesteld door Martijn Wieringa en zijn verkregen van de Rabobank. De classes zijn deels aangepast zodat deze makkelijker en veiliger te gebruiken zijn. Ook zijn er 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:

Je moet voor jezelf een privatekey/certificaat aanmaken en uploaden op je iDEAL dashboard.
Je moet iDEAL nog configureren door enkele variabelen in "ideal/Settings.php" aan te passen.

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. Een goede handleiding kun je vinden op deze pagina. Noem je privatekey-bestand "priv.pem" en je certificaat-bestand "cert.cer".

Meer informatie over openssl vind je op de website van openSSL

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:

PRIVATEKEYPASS (Het wachtwoord van je private key).
MERCHANTID (Je Merchant ID die je van de bank hebt ontvangen).
MERCHANTRETURNURL (Het adres waar je bezoeker naar wordt verwezen nadat de iDEAL transactie is voltooid. Zorg er voor dat deze verwijst naar het bestand "step3.php").

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.

Voorbeeld

In het zipje is 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.ideal-simulator.nl/examples/ideal-professional-example/.

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 ondersteunt. Deze 'lijst met banken' wordt opgevraagd van de iDEAL server. In principe is de lijst niet veel aan verandering onderhevig. Je zou er voor kunnen kiezen de lijst lokaal op te slaan. Je mist dan echter elke actualisering van de links, of vergeet ooit de naam van een bank aan te passen of toe te voegen.

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 'teruggestuurd' naar deze pagina (dit is geconfigureerd 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.

Opmerkingen:
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.

De omschrijving wordt op 32 tekens afgekapt.

Verplichte testprocedure

De Rabobank 'eist' (net als de andere banken) van haar iDEAL klanten dat deze een testprocedure uitvoeren. Bij deze testprocedure moeten 6 testen worden uitgevoerd (op de testlocatie!).

Het overmaken van € 1.00 - Geeft als resultaat een 'status: SUCCESS' (transactie voltooid).
Het overmaken van € 2.00 - Geeft als resultaat een 'status: CANCELLED' (transactie is geannuleerd door de bezoeker).
Het overmaken van € 3.00 - Geeft als resultaat een 'status: EXPIRED' (transactie is verlopen).
Het overmaken van € 4.00 - Geeft als resultaat een 'status: OPEN' (transactie is nog niet voltooid).
Het overmaken van € 5.00 - Geeft als resultaat een 'status: FAILURE' (transactie kon niet worden verwerkt).
Het overmaken van € 7.00 - Geeft als resultaat een 'status: ERROR' (transactie fout in protocol, zoals fouten in de digitale handtekening).

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).

Onafhankelijkheid van een bank

Zoals de bovenstaande omschrijving laat zien, komt er nog al wat kijken bij de installatie van een iDEAL kassa in je webwinkel. Daar is in de markt slim op ingesprongen door middel van complete pakketten. Een voorbeeld van een aanbieder is Buckaroo. Door gebruik te maken van dit soort diensten zijn veel stappen -zoals de verplichte testprocedure- overbodig. Daarnaast is de installatiemethode altijd gelijk, ongeacht de bank die je wilt gebruiken.

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/ideal-professional-example/

De (door Martijn Wieringa) aangepaste iDEAL classes en functies:
http://www.ideal-simulator.nl/downloads/ideal-professional-example.zip

De officiele (niet aangepaste) iDEAL classes en functies.. gebruik op eigen risico ;)
http://www.pholeron.nl/projects/ideal/ideal.rabobank.zip

Algemene iDEAL website
http://www.ideal.nl/

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://www.koenraadt.eu/nl/integratiehulp/openssl_ideal_certificaat_maken_5.html

Overkoepelende artikelen:
Inloggen wachtwoord vergeten? Aanmelden
ADSL – Telfort Internet – Ziggo Alles in 1