iDEAL Professional - Implementatie handleiding
Deze handleiding dient als hulpmiddel bij de implementatie van iDEAL Professional (en iDEAL Advanced, iDEAL Zelfbouw). Ter demonstratie van iDEAL Professional maken we uiteraard gebruik van de iDEAL Simulator omgeving.
Een werkend voorbeeld van iDEAL Professional is te vinden op:
http://www.ideal-simulator.nl/examples/ideal-professional-example/
Voorbeeld PHP code en classes die gebruikt worden in dit document zijn ook te downloaden op:
http://www.ideal-simulator.nl/downloads/ideal-professional-example.zip
IDEAL Professional werkwijze
De implementatie van iDEAL Professional bestaat uit 4 stappen.
- In de eerste stap maak je een verbinding met de iDEAL server, en vraag je de lijst met beschikbare banken (Issuers) op. Vervolgens vraag je aan je bezoeker via welke bank hij wil afrekenen.
- Je definieert de transactie, en stuurt deze ter goedkeuring naar de iDEAL server. Indien de transactie wordt goedgekeurd, ontvang je een TransactionID en TransactionURL. Je slaat de order op in bijv. de database, en stuurt de bezoeker door naar de ontvangen TransactionURL.
- De bezoeker voert de betaling uit bij zijn/haar bank. De website van de bank stuurt de bezoeker (na de betaling) vervolgens weer netjes terug naar een zelf te configureren URL achter jou website.
- Het script maakt verbinding met de iDEAL server en vraagt de status van de transactie op. Afhankelijk van het resultaat bepaald het script hoe deze verder moet.
We gebruiken enkele PHP classes (Ontwikkeld door Martijn Wieringa) die je helpen bij de communicatie met de iDEAL Server. Deze classes zijn, samen met voorbeeld code, te downloaden op http://www.ideal-simulator.nl/downloads/ideal-professional-example.zip
Toelichting bij de voorbeeld code
De meeste code is voorzien van commentaar, dus zal niet al te lastig moeten zijn om te begrijpen. In dit document geven we wat extra achtergrond informatie bij bepaalde bestanden en code fragmenten.
De bestanden step1.php, step2.php en step3.php zijn een compleet werkend voorbeeld van een iDEAL Professional implementatie. De bestanden issuer_request.php, transaction_request.php en status_request.php zijn de ‘uitgeklede versies' die enkel de strikt noodzakelijke code bevatten.
ideal.cfg.php
Dit bestand bevat de algemene configuratie van je iDEAL account. Deze instellingen worden standaard ingeladen, maar kunnen worden overschreven vanuit je script.
ideal.cls.php
Dit bestand laad de algemene configuratie (ideal.cfg.php) en de juiste iDEAL Classes (afhankelijk van je PHP versie).
ideal.cls.4.php (voor PHP 4) en ideal.cls.5.php (voor PHP 5)
Deze bestanden bevat de class-definities die je helpt bij de communicatie met de iDEAL server.
- De class IdealRequest is een algemene class met basis functionaliteit.
- De class IssuerRequest helpt bij het opvragen van de lijst met banken.
- De class TransactionRequest helpt bij het opvragen van een nieuw TransactionID, en bij het starten van de transactie.
- De class StatusRequest helpt bij het opvragen van de transactie status.
issuer_request.php
Dit bestand vraagt de lijst met banken op.
Regel 7
$aIssuerList = $oIssuerRequest->doRequest();
Hier wordt de lijst met beschikbare banken opgevraagd. Je ontvangt een array terug, vergelijkbaar met: array('0001' => 'Bank 1', '0002' => 'Bank 2', ...).
Regel 9 t/m 12
if($oIssuerRequest->hasErrors())
{
print_r($oIssuerRequest->getErrors());
}
Detecteer of er fouten zijn ontstaan tijdens het uitvoeren van de aanvraag. Indien dat het geval is, moet je deze afhandelen. Het resultaat van de aanvraag is dan ook niet betrouwbaar.
transaction_request.php
Dit bestand vraagt een nieuwe transactie aan.
Regel 25
$oTransactionRequest->setIssuerId($sIssuerId);
Geef aan welke bank (issuerID) de bezoeker heeft gekozen om de betaling af te handelen. Deze waardes worden opgevraagt bij de issuer_request.php. Denk er om dat je eventuele voorloop nullen behoud!!
Regel 26
$oTransactionRequest->setEntranceCode($sEntranceCode);
Gebruik een unieke 'EntranceCode'. Deze fungeert als een soort van wachtwoord bij je TransactionID. In de laatste stap wordt de combinatie TransactionID/EntranceCode gebruikt om een transactie te identificeren in bijv. de database.
Regel 27
$oTransactionRequest->setReturnUrl($sReturnUrl);
Bepaal de URL van het script dat de status van de transactie moet controleren. Voer deze URL in als ReturnUrl. De bezoeker wordt na de betaling terug gestuurd naar deze URL.
Regel 30
$sTransactionId = $oTransactionRequest->doRequest();
Hier plaats je een verzoek voor een nieuwe transactie. Indien er geen fout optreed, zal $sTransactionId een nieuwe unieke TransactionID.
Advies is om hier de TransactionID i.c.m. je EntranceCode op te slaan in je database.
Regel 42
$oTransactionRequest->doTransaction();
Indien het transactie-verzoek is geslaagd, wordt de bezoeker doorverwezen naar de ontvangen URL.
Note: In het voorbeeld is de regel vervangen door een HTML-link waarop de bezoeker zelf moet klikken t.b.v. de demonstratie.
status_request.php
Dit bestand vraagt de status van een transactie op.
Regel 12 en 13
$sTransactionId = (empty($_GET['trxid']) ? '' : $_GET['trxid']);
$sEntranceCode = (empty($_GET['ec']) ? '' : $_GET['ec']);
Hier wordt de TransactionID en EntranceCode opgevraagt uit de URL. Met deze gegevens kun je eventueel in je database controleren of de TransactionID geldig is en de betreffende order weer opzoeken.
Regel 20
$sStatus = $oStatusRequest->doRequest();
Hier vraag je de status van de transactie op. Indien er geen fout optreed, zal $sStatus de waarde "SUCCESS", "CANCELLED", "FAILURE", "OPEN" of "EXPIRED" bevatten.
Desgewenst kun je de gevonden transactie status weer opslaan in je database.
| « iDEAL Professional Demonstratie | iDeal Professional Foutmeldingen » |
