Status ophalen van iDeal ABN AMRO betaling
1. Er wordt een formulier opgebouwd met hidden values en een 'betaal' knop
2. Formulier wordt met SHASIGN, bedrag, alias van rekeninghouder en nog wat info verstuurd naar https://internetkassa.abnamro.nl/ncol/prod/orderstandard.asp
3. Iemand kan de bestelling annuleren, afrekenen of het kan fout gaan
4. Ze worden teruggestuurd naar domain.nl/betaalstatus/
Hierin zie ik ook allerlei informatie terugkomen alleen niet iets dat ik vooraf heb opgeslagen in de database en daarmee de betaalstatus kan checken. Zo wordt er een SHA SIGN gegenereerd of een uniek betaalid die niet terug te vinden zijn in het request dat ik terugkrijg.
Heeft iemand hier ervaring mee die mij kan adviseren?
Gewijzigd op 02/12/2015 12:48:32 door Sander D
Kun je die return-URL niet per request opbouwen? Dan kun je er namelijk een token aan toevoegen waaraan je de bestelling kunt herkennen, bijvoorbeeld: domain.nl/betaalstatus?ordernummer=12345
De betere iDEAL-implementaties hebben twee URL's: een zichtbare return-URL (waarop de klant terugkeert en die *dus* te manipuleren is) plus een geheime report-URL (waarnaar de server van de bank de actuele status van de transactie terugkoppelt aan jouw server). Alleen iDEAL-varianten met zo'n report-URL zijn echt veilig, anders moet je altijd inloggen bij de bank of PSP om te controleren of er daadwerkelijk is betaald.
Quote:
array(23) {
["CSRFKEY"]=>
string(40) "8B32CC192D3BBD76E23DA55588U73D75095C20F4"
["CSRFTS"]=>
string(14) "20151202133417"
["CSRFSP"]=>
string(38) "/ncol/prod/order_ANetb_flowhandler.asp"
["WIN3DS"]=>
string(0) ""
["PMListType"]=>
string(0) ""
["branding"]=>
string(3) "ABN"
["payid"]=>
string(10) "6936122048"
["hash_param"]=>
string(40) "107CB628B08363B768A578BEA5350V25492DCD5C"
["walletid"]=>
string(0) ""
["walletalias"]=>
string(0) ""
["wallethash"]=>
string(0) ""
["CatalogURL"]=>
string(0) ""
["HomeURL"]=>
string(0) ""
["LimitClientScriptUsage"]=>
string(5) "False"
["DEVICE"]=>
string(0) ""
["TBLBGCOLOR"]=>
string(0) ""
["TBLTXTCOLOR"]=>
string(0) ""
["TPBTNBGCOLOR"]=>
string(0) ""
["FONTTYPE"]=>
string(0) ""
["BUTTONBGCOLOR"]=>
string(0) ""
["BUTTONTXTCOLOR"]=>
string(0) ""
["paymethod"]=>
string(5) "iDeal"
["reselect"]=>
string(5) "Terug"
}
["CSRFKEY"]=>
string(40) "8B32CC192D3BBD76E23DA55588U73D75095C20F4"
["CSRFTS"]=>
string(14) "20151202133417"
["CSRFSP"]=>
string(38) "/ncol/prod/order_ANetb_flowhandler.asp"
["WIN3DS"]=>
string(0) ""
["PMListType"]=>
string(0) ""
["branding"]=>
string(3) "ABN"
["payid"]=>
string(10) "6936122048"
["hash_param"]=>
string(40) "107CB628B08363B768A578BEA5350V25492DCD5C"
["walletid"]=>
string(0) ""
["walletalias"]=>
string(0) ""
["wallethash"]=>
string(0) ""
["CatalogURL"]=>
string(0) ""
["HomeURL"]=>
string(0) ""
["LimitClientScriptUsage"]=>
string(5) "False"
["DEVICE"]=>
string(0) ""
["TBLBGCOLOR"]=>
string(0) ""
["TBLTXTCOLOR"]=>
string(0) ""
["TPBTNBGCOLOR"]=>
string(0) ""
["FONTTYPE"]=>
string(0) ""
["BUTTONBGCOLOR"]=>
string(0) ""
["BUTTONTXTCOLOR"]=>
string(0) ""
["paymethod"]=>
string(5) "iDeal"
["reselect"]=>
string(5) "Terug"
}
Ik heb alle cijfertjes en codes gewijzigd uiteraard :) Hoe komt ABN bij een payid en kan ik die niet gebruiken? Anders in ABN DASHBOARD dus ?ordernummer={TAG} doen of iets dergelijks? En waar {TAG} staat kan ABN AMRO herkennen welke waarde is meegegeven in het formulier? Die zou dan inderdaad te manipuleren zijn. Is er niet iets dat standaard werkt met de payid en ik van te voren kan weten?
Gewijzigd op 02/12/2015 13:58:11 door Sander D
De payid lijkt me eerder het iDEAL-transactienummer. Wel zie ik dat er een hash_param van 40 karakters terugkomt en zo'n SHA-1-hash wordt doorgaans gegenereerd met iets dat je er zelf in steekt: je zou die dus ter controle met sha1() in PHP moeten kunnen reconstrueren. Hebben ze bij ABN geen API-documentatie? Daarin zou dat toch moeten zijn terug te vinden.
Ik denk ook dat het een SHA1 is van iets maar waarvan weet ik nog niet. Ik ga verder puzzelen :)