Aansluitend op het succes van Internet bankieren bedachten banken een veilige methode om aankopen op het Internet te kunnen realiseren: iDeal.
We onderscheiden 4 partijen:
Om gebruik te kunnen maken van iDeal moet een acceptant (webaanbieder) een contract met een van de iDeal ondersteunende banken afsluiten. Er zijn drie soorten contracten, afhankelijk van het aantal transacties wat men denkt af te handelen per jaar. De eenvoudigste variant staat tot 100 transacties per jaar toe en kost een vast bedrag per transaktie (dit was 70 eurocent bij de ABNAMRO in november 2008). De andere vormen kosten een bedrag per jaar en een lager bedrag per transaktie.
De bank doet de aanvrager een aantal gegevens toekomen, waarmee deze kan inloggen op het zogenaamde iDeal 'dashboard' bij de bank. Dit is een webportal waarmee het account kan worden beheerd. Vanuit dit dashboard kan bijvoorbeeld een certificaat worden ge-upload zodat beveiligde transakties uit kunnen worden gevoerd vanaf zijn de webstek van de acceptant, als deze dit wil gebruiken.
De banken die zijn aangesloten hebben elk een zogenaamde iDeal server opgesteld, die via het publieke Internet toegankelijk is. Deze iDeal servers staan met elkaar in verbinding en wisselen zo informatie over transakties uit. Ze kunnen vanaf het Internet op twee manieren worden benanderd:
PM | altijd de string "iDEAL" (zonder quotes) |
PSPID | de door de bank aan de webstek eigenaar gegeven identificatie |
language | de taal, in ons geval altijd NL_NL |
orderID | een unieke order identificatie |
amount | het bedrag, uitgedrukt in de kleinste eenheden (e.g. centen, dus 16 euro en 20 centen wordt: 1620) |
currency | in welke eenheden is het bedrag uitgedrukt; in Nederland is dat EUR |
COM | een orderomschrijving |
CN | de Customer Name, naam van de klant |
het e-mail adres van de klant | |
owneraddress | het woonadres van de klant |
ownertown | stad waarin de klant woont |
ownerzip | de postcode van het adres van de klant |
ownercty | land waarin de besteller woont, meestal NL |
webshop ACCEPTANT webserver |
klant CONSUMENT browser |
bank verkoper BANK webserver |
bank koper BANK webserver |
---|---|---|---|
genereert bestelformulier | |||
stuurt form naar bank | |||
ontvangt en controleert | |||
genereert pagina met form: welke bank gebruikt klant? | |||
geeft bank aan | |||
stuurt form naar bank | |||
ontvangt en controleert | |||
stuurt tx data naar bank klant | |||
ontvangt tx gegevens koper | |||
genereert redirect naar inlogpagina bank klant | |||
ontvangt redirect, logged in | |||
laat tx data zien | |||
authoriseert transaktie | |||
voert tx uit | |||
stuurt redirect | |||
voert redirect uit | stuurt mail naar acceptant | ||
ontvangt input van redirect | |||
neemt contact met bank op | |||
bevestigt succes transaktie | |||
ontvangt mail | |||
initieert logistieke afhandeling |   ; | ||
genereert bestelformulier |
Een voorbeeld van het verloop van dit proces vindt je hier.
Deze methode gaat er van uit dat de acceptant (webwinkel) een server beheert waarop zich software bevindt die met de bank kan communiceren. Er zijn bijvoorbeeld PHP bibliotheken beschikbaar waarmee dit mogelijk is. De acceptant (webwinkel eigenaar) dient een sleutelpaar te genereren en ofwel zelf te tekenen, ofwel te laten tekenen. Hij upload het publieke deel van dit paar naar de bank (via het dashboard/webportel waar hij toegang tot heeft).
Nu is het voor hem mogelijk XML opgemaakte boodschappen uit te wisselen met de iDeal server bij zijn bank. Het gaat ook hier weer om POST opdrachten, maar de boodschappen zijn nu opgemaakt in XML opmaak en bevatten onder meer zogenaamde tokens: standaard boodschappen die zijn gesigned met de private sleutel van de klant. De iDeal server die de boodschap ontvangt kan middels de eerder ge-uploade public key van de zender de boodschap decoderen en op die manier verifieren dat de boodschap inderdaad van de desbetreffende zender afkomstig is. Een voorbeeld van zo'n XML boodschap volgt:
<?xml version="1.0" encoding="UTF-8"?> <AcquirerTrxReq xmlns="http://www.idealdesk.com/Message" version="1.1.0"> <createDateTimeStamp> VAR </createDateTimeStamp> <Issuer> <issuerID> VAR </issuerID> </Issuer> <Merchant> <merchantID> VAR </merchantID> <subID> VAR </subID> <authentication> VAR </authentication> <token> VAR </token> <tokenCode> VAR </tokenCode> <merchantReturnURL> VAR </merchantReturnURL> </Merchant> <Transaction> <purchaseID> VAR </purchaseID> <amount> VAR </amount> <currency> VAR </currency> <expirationPeriod> VAR </expirationPeriod> <language> VAR </language> <description> VAR </description> <entranceCode> VAR </entranceCode> </Transaction> </AcquirerTrxReq>
Het is middels deze techniek ook mogelijk de iDeal server te vragen om een lijst van beschikbare banken, zodat er op de webserver van de acceptant al een dropdown gemaakt kan worden, of zelfs kan worden onthouden voor de klant bij welke bank hij is aangesloten. De acceptant kan middels deze techniek ook bij de bank navragen of een transactie is gelukt of niet en zo dus onmiddellijk de logistiek afhandelen.