Status ophalen van iDeal ABN AMRO betaling

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Sander D

Sander D

02/12/2015 12:48:07
Quote Anchor link
Ik heb ABN AMRO iDeal light (of basic, in ieder geval niet heel uitgebreid pakket). Dit werkt zo:

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
 
PHP hulp

PHP hulp

05/12/2020 15:02:06
 
Ward van der Put
Moderator

Ward van der Put

02/12/2015 13:34:08
Quote Anchor link
>> 4. Ze worden teruggestuurd naar domain.nl/betaalstatus/

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.
 
Sander D

Sander D

02/12/2015 13:50:37
Quote Anchor link
Hi Ward, dank je wel. Dit krijg ik terug van de betaalstatus:

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"
}


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
 
Ward van der Put
Moderator

Ward van der Put

02/12/2015 14:00:24
Quote Anchor link
Ik ken de iDEAL-smaak van ABN Amro helaas niet, maar misschien kan een van de andere forumleden je verder helpen.

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.
 
Sander D

Sander D

02/12/2015 14:32:44
Quote Anchor link
Ik denk ook dat het een SHA1 is van iets maar waarvan weet ik nog niet. Ik ga verder puzzelen :)
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.