iDeal Basic

Pagina: 1
Acties:
  • 1.493 views sinds 30-01-2008
  • Reageer

  • tersmitten
  • Registratie: Februari 2005
  • Laatst online: 08-01 10:31
Ik ben bezig met de implementatie van iDeal Basic, maar dat wil tot nu toe niet echt lukken...

Als ik mijn formulier verstuur krijg ik de melding dat mijn hashcode niet goed is, kan iemand mij vertellen wat ik fout doe?

// Formulier:
HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<form method="post" action="https://idealtest.secure-ing.com/ideal/mpiPayInitIng.do" name="ideal">

<input type="hidden" name="merchantID" value="000000000" />
<input type="hidden" name="subID" value="0" />

<input type="hidden" name="amount" value="100" />
<input type="hidden" name="purchaseID" value="1" />
<input type="hidden" name="language" value="nl" />
<input type="hidden" name="currency" value="EUR" />
<input type="hidden" name="description" value="Bestelling" />
<input type="hidden" name="hash" value="b6878a519ae6752f04ed6995caa07e7004be4129" />
<input type="hidden" name="paymentType" value="ideal" />
<input type="hidden" name="validUntil" value="2006-06-17T14:53:37.000Z" />

<input type="hidden" name="itemNumber1" value="2160" />
<input type="hidden" name="itemDescription1" value="artikel 1" />
<input type="hidden" name="itemQuantity1" value="1" />
<input type="hidden" name="itemPrice1" value="100" />

<input type="submit" value="Verstuur" />

//

daarnaast vroeg ik mij af of de manier waarop ik 'validUntil' genereer wel goed is
PHP:
1
2
3
4
5
6
7
8
9
<?
function ideal_time() {
    $h = "-3";
    $hm = $h * 60;
    $ms = $hm * 60;
    $gmdate = gmdate("Y-m-d\TH:i:s.000\Z", time()-($ms));
    return $gmdate;
}
?>

[ Voor 26% gewijzigd door André op 30-06-2006 14:37 . Reden: code blokken toegevoegd ]


Verwijderd

Oef, tsja ik kan je helaas niet helpen...

Ik ben er ook mee bezig, met iDeal Basic via de hashcode benadering.

(via de productlijstbenadering moet je eerst alle producten van je webshop ook (dus dubbel) invullen in iDeal! :()

Dit is wel even iets anders dan PayPal toevoegen aan je site. Ik begrijp dat SHA1 hash-gedoe al niet. Dat moet een variabele zijn die je ter controle meestuurt in je form, maar hoe kan iDeal nou checken wie die variabele daadwerkelijk heeft gestuurd? Want je moet hem uploaden in iDeal en daarna zeggen ze dat je steeds een tijdelijke hashcode moet genereren. Ik begrijp er niets van...

[ Voor 19% gewijzigd door Verwijderd op 30-06-2006 14:17 ]


  • AtleX
  • Registratie: Maart 2003
  • Niet online

AtleX

Tyrannosaurus Lex 🦖

In je iDeal dashboard geef je een geheime sleutel op en die moet je meehashen. Als iemand anders dus jouw acceptant ID gebruikt mist hij alsnog de sleutel waardoor z'n hash anders wordt.

@TS: hoe genereer je die hashcode? Zoals het in de iDeal basic handleiding beschreven staat? De tijd genereer ik trouwens als volgt:
PHP:
1
$sValidUntil = date('Y-m-d\TH-i-s\Z', time()+3600);

Dat werkt goed, je hebt dan meteen de maximale tijd van nu+1u te pakken.

[ Voor 86% gewijzigd door AtleX op 30-06-2006 14:23 ]

Sole survivor of the Chicxulub asteroid impact.


Verwijderd

AtleX schreef op vrijdag 30 juni 2006 @ 14:17:
In je iDeal dashboard geef je een geheime sleutel op en die moet je meehashen. Als iemand anders dus jouw acceptant ID gebruikt mist hij alsnog de sleutel waardoor z'n hash anders wordt.
Aha, ik dacht dat vanaf je form die hashcode gewoon zichtbaar zou zijn (dus als iemand view source doet, dat ie dan die hashcode eruit kan filteren). Maar dat is natuurlijk niet zo want in die hashcode zitten nog veel meer variabelen gepropt die de code (die ook bij iDeal genoteerd staat) daardoor onzichtbaar maakt.

Maar dan begrijp ik nog niet wat iDeal doet met al die andere variabelen die je mee moet sturen zoals itemNumber1, itemQuantity2, want iDeal kan daar toch verder niets mee?

  • AtleX
  • Registratie: Maart 2003
  • Niet online

AtleX

Tyrannosaurus Lex 🦖

Jawel, want iDeal pakt jouw geheime sleutel en acceptant ID en alle meegestuurde formuliervariabelen en maakt daar ook een hash van. Als die hash overeenkomt met jouw hash klopt het allemaal. Verder hebben ze die gegevens nodig om te bepalen hoeveel er betaald moet worden en wat het ordernummer is.

[ Voor 3% gewijzigd door AtleX op 30-06-2006 14:24 ]

Sole survivor of the Chicxulub asteroid impact.


Verwijderd

AtleX schreef op vrijdag 30 juni 2006 @ 14:23:
...

Verder hebben ze die gegevens nodig om te bepalen hoeveel er betaald moet worden en wat het ordernummer is.
Okay, de bovenste zaken die moeten worden meegegeven in de hashkey (zoals merchantID, amount, ValidUntil) dat is duidelijk.

Maar die goederennummers/omschrijvingen meesturen dat is me nog een beetje onduidelijk. Want die zijn ook al opgeslagen in je eigen webshop in de ordertabel, en iDeal weet toch niet wat voor een producten je allemaal verkoopt in je webshop en tegen welke prijs. Ik denk dat je het alleen mee moet geven mochten er later problemen komen (bijvoorbeeld een webshop levert niet de bestelde producten aan haar klant), dat de consument ook bewijs heeft via iDeal?

  • AtleX
  • Registratie: Maart 2003
  • Niet online

AtleX

Tyrannosaurus Lex 🦖

Volgens mij kan je dan in het Dashboard zien welke orders je hebt gehad en welke producten daarbij besteld zijn. En op een gegeven moment zie je in de iDEAL betaalprocedure ook welke goederen je koopt.

[ Voor 29% gewijzigd door AtleX op 30-06-2006 14:35 ]

Sole survivor of the Chicxulub asteroid impact.


Verwijderd

Eigenlijk is de implementatie dan alleen maar een beetje uitgebreider dan PayPal, op 2 punten:
1. je geeft een hashcode mee
2. je geeft alle bestelde goederen mee

Nou, maar eens kijken of ik in ColdFusion zo'n hashcode gegenereerd krijg, en dan zit ik pas op het punt waar de topicstarter problemen ondervindt.

Verwijderd

AtleX schreef op vrijdag 30 juni 2006 @ 14:34:
Volgens mij kan je dan in het Dashboard zien welke orders je hebt gehad en welke producten daarbij besteld zijn. En op een gegeven moment zie je in de iDEAL betaalprocedure ook welke goederen je koopt.
Aha, dat is wel zo makkelijk ja, thanks.

Verwijderd

AtleX schreef op vrijdag 30 juni 2006 @ 14:17:
In je iDeal dashboard geef je een geheime sleutel op en die moet je meehashen.
Hoe hash je de geheime sleutel dan mee? Ik zie hem ook niet staan in het verplichte rijtje op pagina 12 van de Ideal Basic integreatie handleiding.

//edit//
Ah, ik geloof dat ik hem erbij zie staan op pagina 14: $shastring = "$key" . etc...

Graag bevestiging van iemand met meer ervaring! :)

[ Voor 22% gewijzigd door Verwijderd op 01-07-2006 02:51 ]


Verwijderd

tersmitten schreef op zaterdag 17 juni 2006 @ 14:54:
Ik ben bezig met de implementatie van iDeal Basic, maar dat wil tot nu toe niet echt lukken...

Als ik mijn formulier verstuur krijg ik de melding dat mijn hashcode niet goed is, kan iemand mij vertellen wat ik fout doe?
Hash je niet teveel mee? En doe je het wel in de goede volgorde?

Want in de handleiding staat deze verplichte volgorde voor de verplichte velden:
-hashKey
-merchantID
-subID
-amount
-purchaseID
-paymentType
-validUntil
-- en dan de items steeds 4 velden

Language, currency en description mag/moet je volgens mij niet meehashen. Misschien heb jij dat wel gedaan?

//edit//
Nog een vraag: dat validUntil vind ik vaag. Mag maximaal +1 uur zijn, maar wat nou als de tijd van mijn server iets afwijkt van de tijd van de ING-server? Kan het dan op 1 minuut verschil al afketsen?

[ Voor 19% gewijzigd door Verwijderd op 01-07-2006 03:23 ]


Verwijderd

Nou, ik dacht dat ik alles goed had gedaan hier, maar ik kreeg ook de iDEAL Error... Validation of hashkey failed

Volgens mij heb ik alles goed gedaan. In elk geval precies zoals in de handleiding pag. 12 t/m 15 staat en ook alles precies volgens appendix A.

Maandag maar eens iDEAL bellen dan, hoe of wat...

[ Voor 10% gewijzigd door Verwijderd op 01-07-2006 05:43 ]


  • AtleX
  • Registratie: Maart 2003
  • Niet online

AtleX

Tyrannosaurus Lex 🦖

Verwijderd schreef op zaterdag 01 juli 2006 @ 03:19:
Nog een vraag: dat validUntil vind ik vaag. Mag maximaal +1 uur zijn, maar wat nou als de tijd van mijn server iets afwijkt van de tijd van de ING-server? Kan het dan op 1 minuut verschil al afketsen?
Ik heb daarmee getest, en ik kon tot 5 minuten afwijken van de normale tijd voordat ik problemen kreeg bij iDEAL, en zowiezo wordt er niet op de secondes gelet, dus bij timesynched servers is er niks aan de hand.

Sole survivor of the Chicxulub asteroid impact.


Verwijderd

AtleX, heb jij het werkend allemaal?

//edit//
O nee, ik zag hierboven dat je nog wat problemen had met de hascode genereren.
In ColdFusion is het niet te moeilijk: <cfset shastring = hash(allesstring, "SHA")>

Ik weet niet precies hoe het in PHP zit... O ja, bij over timefunctie: als je de tijd met 1 uur ophoogt en het is net binnen het laatste uur van een dag, gaat dan bij jou de dag wel mee? Ik heb dus (nog) niet echt verstand van PHP hoor. Enne, hoe kan je bijvoorbeeld jouw ValidUntil testen als je de hascode nog niet werkend hebt? Of heb je inmiddels toch de hele implementatie van iDEAL Basic afgerond?

[ Voor 81% gewijzigd door Verwijderd op 01-07-2006 13:34 ]


  • AtleX
  • Registratie: Maart 2003
  • Niet online

AtleX

Tyrannosaurus Lex 🦖

Ik heb de hele implementatie afgerond, dus bij mij werkt het allemaal al. Die tijdfunctie werkt goed doordat ik de Unix timestamp ophoog met 1 uur (3600 sec), en het dan pas omzet naar hoe iDEAL het hebben wil, daardoor kunnen er midden in de nacht ook betalingen gedaan worden. Zie ook de documentatie van date() en time() voor meer informatie.

Sole survivor of the Chicxulub asteroid impact.


Verwijderd

Stop jij alles in de hash wat je ook aan hidden variabelen meegeeft?

Want de iDEAL handleiding is daar niet echt consequent in. Zo stoppen ze in het voorbeeld op pagina 14 geen currency en language in de hash, maar hebben ze het bijvoorbeeld wel over product1numer, terwijl ze die variabelen de hele tijd itemnogwat noemen.

Zou jij misschien hier kunnen neerzetten wat jij in de hash stopt (je key en merchantid natuurlijk veranderd) en wat jij precies post in jouw webformulier?

  • AtleX
  • Registratie: Maart 2003
  • Niet online

AtleX

Tyrannosaurus Lex 🦖

Ik ga niet mijn code posten natuurlijk, de klant betaald daar vorstelijk veel geld voor en dan is het niet de bedoeling dat ik het hier op internet zet. Wel kan je vertellen wat ik hash, en wat ik in mijn formulier verstuur.

Mijn hashcode maak ik als volgt:
code:
1
Hashkey + merchant ID + subID + totaalbedrag + ordernummer (purchase ID) + payment type (iDEAL) + itemnumber1 + itemdescription1 + itemquantity1 + itemprice1


Al deze dingen zet ik ook in mijn formulier, behalve m'n hashkey natuurlijk. Ook staat daar nog de geldigheidsduur, de taal en de currency in.

Sole survivor of the Chicxulub asteroid impact.


Verwijderd

Ja, ik bedoelde ook alleen zoiets als wat je postte :)

Maar goed, ik doe dus precies hetzelfde en bij mij werkt het niet en bij de TS ook niet... ben benieuwd wat wj verkeerd doen, waarschijnlijk iets heel kleins...

Enne vorstelijk? Verklaar je nader :) Op de ING site staat voor de implementatie van iDEAL Basic 16 uur. Stel ik reken mijn klant 50 euro per uur, dan kost de implementatie van iDEAL ze 800 euro. Redelijk toch? Reken jij ook zoiets?

[ Voor 6% gewijzigd door Verwijderd op 02-07-2006 02:08 ]


Verwijderd

AtleX schreef op zaterdag 01 juli 2006 @ 16:49:
Ik ga niet mijn code posten natuurlijk, de klant betaald daar vorstelijk veel geld voor en dan is het niet de bedoeling dat ik het hier op internet zet. Wel kan je vertellen wat ik hash, en wat ik in mijn formulier verstuur.

Mijn hashcode maak ik als volgt:
code:
1
Hashkey + merchant ID + subID + totaalbedrag + ordernummer (purchase ID) + payment type (iDEAL) + itemnumber1 + itemdescription1 + itemquantity1 + itemprice1


Al deze dingen zet ik ook in mijn formulier, behalve m'n hashkey natuurlijk. Ook staat daar nog de geldigheidsduur, de taal en de currency in.
Ah wacht effe, ik geloof dat ik het zie: je zet de geldigheidsduur niet in de haskey maar alleen hidden in je form?

  • AtleX
  • Registratie: Maart 2003
  • Niet online

AtleX

Tyrannosaurus Lex 🦖

Ja, er staat ook nergens in de documentatie dat die tijd moet worden meegehasht.

[ Voor 66% gewijzigd door AtleX op 02-07-2006 10:13 ]

Sole survivor of the Chicxulub asteroid impact.


Verwijderd

AtleX schreef op zondag 02 juli 2006 @ 10:09:
Ja, er staat ook nergens in de documentatie dat die tijd moet worden meegehasht.
Bij mij wel, op pagina 12 (ING Bank en Postbank. Versie 1.3, april 2006)!

Maar goed, zonder dat veld werkt het hier helaas ook niet. :(

Voor de duidelijkheid: als ik de pagina met mijn formulier refresh dan verandert de waarde van hash die ik in het formulier meegeef ook steeds. Dit klopt toch? Aan de andere kant, als deze waarde steeds verschillend is, en een hashkey is nooit terug te leiden, dan zal de waarde van die van de Postbank nooit overeenkomen met degene die ik opstuur, toch?

[ Voor 57% gewijzigd door Verwijderd op 02-07-2006 13:28 ]


Verwijderd

Tersmitten, is het jou al gelukt?

Verwijderd

Het is gelukt.

Mijn fout was dat ik de hashkey uit de productieomgeving (https://ideal....) gebruikt had, maar ik had de haskey uit de testomgeving (https://idealtest....) moeten gebruiken.

N.B. de variabele ValidUntil moet WEL meegehashed worden!

  • AtleX
  • Registratie: Maart 2003
  • Niet online

AtleX

Tyrannosaurus Lex 🦖

Ik heb het nog even nagekeken, en ik hash wel de ValidUntil time mee. :) In mijn eerdere post staat dus een foutje.

Sole survivor of the Chicxulub asteroid impact.


Verwijderd

Okee, bedankt nog voor al je reacties! :)

Verwijderd

Het enige dat ik nog moet verwerken zijn de portokosten van de webwinkel waarmee ik bezig ben. Die zijn er soms wel en soms niet.

Als er wel portokosten zijn zal ik ze mee moeten geven als een laatste "speciaal" item (met bijbehorend number, description, quantity en price) denk ik. Dat is de enige oplossing toch?

[ Voor 26% gewijzigd door Verwijderd op 03-07-2006 14:20 ]


  • AtleX
  • Registratie: Maart 2003
  • Niet online

AtleX

Tyrannosaurus Lex 🦖

Ja, je kan ze gewoon als extra item meegeven. Dat is de makkelijkste en netste oplossing aangezien de portokosten dan ook netjes in het lijstje met gekochte producten staan.

Sole survivor of the Chicxulub asteroid impact.


Verwijderd

Djeez, wat reageer jij snel! Hoe kan dat? Krijg je soms een mail als er gereageerd wordt ofzo? :)

  • AtleX
  • Registratie: Maart 2003
  • Niet online

AtleX

Tyrannosaurus Lex 🦖

offtopic:
Nee, ik refresh mijn MyReact automatisch en daar werp ik regelmatig een blik op. Als ik dan een reactie zie ga ik weer even kijken. :) Als jij dan toevallig post als ik even pauze neem is de kans groot dat ik dus snel reageer. :P

[ Voor 25% gewijzigd door AtleX op 03-07-2006 14:24 ]

Sole survivor of the Chicxulub asteroid impact.


Verwijderd

:)

Verwijderd

Ik wilde net alles integreren. Alle testtransacties gingen goed, alleen op de echt omgeving krijg ik nu een error terug, terwijl er eerst dus geen probleem was:

Payment aborted
Amount 8.50 EUR
Date: 7/19/06 9:29 PM
Reference number: 2006-43
Merchant ID: 00504blabla
Transaction ID
Authorisation system message: null: Veld bevat niet toegestaan teken


TransactionID is dus leeg. Ik weet niet wat ik hier fout heb gedaan, iemand een tip?

Verwijderd

Ik heb het streepje van het ordernummer eruit gesloopt. Ik krijg nu dus Reference number: 200644 en dat werkt geloof ik warempel! De echte omgeving is dus nog iets strenger dan de testomgeving, maar goed, het werkt nu geloof ik :)
Pagina: 1