iDEAL Lite

Door Martijn Wieringa, 15 jaar geleden, 12.755x bekeken

Korte toelichting voor de implementatie van iDEAL Lite

Gesponsorde koppelingen

Inhoudsopgave

  1. iDEAL Lite
  2. Implementatie
  3. Voorbereiding
  4. Voorbeeld (toelichting)

 

Er zijn 18 reacties op 'Ideal lite'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Crispijn -
Crispijn -
15 jaar geleden
 
0 +1 -0 -1
Ziet er goed uit. Komt er ook nog een update voor de volledige versie van iDeal of is dat niet nodig (is nog niet verouderd)?
Martijn Wieringa
Martijn Wieringa
15 jaar geleden
 
0 +1 -0 -1
iDEAL Professional (voorheen Basic) is niet verouderd, de code werkt nog steeds.. misschien wel tijd voor een PHP 5 re-write ;)
Toine vd P
Toine vd P
15 jaar geleden
 
0 +1 -0 -1
Leuke tut pholeron!
Nizar
Nizar
15 jaar geleden
 
0 +1 -0 -1
Nice
Davy Jansen
Davy Jansen
15 jaar geleden
 
0 +1 -0 -1
Krijgt iemand ook deze melding: "Digitale handtekening is niet geldig"? Of heeft iemand een idee, hoe deze op te lossen?

Alvast bedankt.
Rens Rikkerink
Rens Rikkerink
15 jaar geleden
 
0 +1 -0 -1
is het misschien mogelijk om een bevestigingsurl ik de achtergrond te draaien (onzichtbaar voor gebruikers)???
Martijn Wieringa
Martijn Wieringa
15 jaar geleden
 
0 +1 -0 -1
@Chupskie
Controleer of de hash key op zowel de testomgeving als live omgeving goed is ingesteld?

@Rens
Nee, het posten van de formulier data kan helaas niet onzichtbaar.
Emile
emile
15 jaar geleden
 
0 +1 -0 -1
ik krijg deze errror ?
heb hem gewoon zo gedownload niks aan verander..

Parse error: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /ideal/ideallite.cls.php on line 15

wat gaat hier fout ?
Martijn Wieringa
Martijn Wieringa
15 jaar geleden
 
0 +1 -0 -1
Waarschijnlijk gebruik jij PHP4, maar de gebruikte versie is voor PHP 5.

Voor PHP 4 kun je deze class gebruiken:

-- ideallite.cls.php ---
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
<?php

    /*
        Class to generate an Ideal Lite form.
        Also calculates your security hashcode.

        Author:  Martijn Wieringa
        Company: PHP Solutions
        Email:   info@php-solutions.nl
        Date:    20-06-2008
    */


    class IdealLite
    {
        var
$fAmount = 0.00;

        var
$sCurrency = 'EUR'; // Ideal only support payments in EURO.
        var $sHashKey = '';
        var
$sLanguageCode = 'nl'; // NL
        var $sMerchantId = '';
        var
$sOrderId = '';
        var
$sOrderDescription = '';
        var
$sPaymentType = 'ideal';
        var
$iSubId = 0;
        var
$sUrlBank = ''; // 'https://ideal.rabobank.nl/ideal/mpiPayInitRabo.do';
        var $sUrlCancel = '';
        var
$sUrlError = '';
        var
$sUrlSuccess = '';
        var
$sButtonLabel = 'Betalen met iDEAL';
        var
$sButtonImage = false;
        var
$iButtonImageWidth = 0;
        var
$iButtonImageHeight = 0;

        function
IdealLite()
        {
        }


        // Set amount in EURO, use a float or integer
        function setAmount($fAmount)
        {

            $this->fAmount = $fAmount;
        }


        // Your secret hash key to secure form data (should match your Ideal Dashboard)
        function setHashKey($sHashKey)
        {

            $this->sHashKey = $sHashKey;
        }


        // Your merchant ID
        function setMerchantId($sMerchantId)
        {

            $this->sMerchantId = $sMerchantId;
        }


        // Upto 32 characters
        function setOrderDescription($sOrderDescription)
        {

            $this->sOrderDescription = substr($sOrderDescription, 0, 32);
        }


        // Upto 16 characters, should be a unique reference to your order
        function setOrderId($sOrderId)
        {

            $this->sOrderId = substr($sOrderId, 0, 16);
        }

        function
setUrlBank($sUrl)
        {

            $this->sUrlBank = $sUrl;
        }

        function
setUrlCancel($sUrl)
        {

            $this->sUrlCancel = $sUrl;
        }

        function
setUrlError($sUrl)
        {

            $this->sUrlError = $sUrl;
        }

        function
setUrlSuccess($sUrl)
        {

            $this->sUrlSuccess = $sUrl;
        }

        function
setButton($sLabel, $sImage = false, $iWidth = 0, $iHeight = 0)
        {

            $this->sButtonLabel = $sLabel;
            $this->sButtonImage = $sImage;
            $this->iButtonImageWidth = $iWidth;
            $this->iButtonImageHeight = $iHeight;
        }

        function
createForm()
        {

            $iAmount = round($this->fAmount * 100);
            $sValidUntil = date('Y-m-d\TG:i:s\Z', strtotime('+1 hour'));


            // Setup hash string
            $sHashString = $this->sHashKey . $this->sMerchantId . $this->iSubId
            . $iAmount . $this->sOrderId . $this->sPaymentType . $sValidUntil
            . '1' . $this->sOrderDescription . '1' . $iAmount;

            // Remove HTML Entities
            $sHashString = html_entity_decode($sHashString);

            // Remove space characters: "\t", "\n", "\r" and " "
            $sHashString = str_replace(array("\t", "\n", "\r", " "), '', $sHashString);

            // Generate hash
            $sHash = sha1($sHashString);


            // Generate HTML form
            $html = '<form action="' . $this->escapeHtml($this->sUrlBank) . '" method="post">'
            . '<input type="hidden" name="merchantID" value="' . $this->sMerchantId . '">'
            . '<input type="hidden" name="subID" value="' . $this->iSubId . '">'
            . '<input type="hidden" name="amount" value="' . $iAmount . '" >'
            . '<input type="hidden" name="purchaseID" value="' . $this->escapeHtml($this->sOrderId) . '">'
            . '<input type="hidden" name="language" value="' . $this->escapeHtml($this->sLanguageCode) . '">'
            . '<input type="hidden" name="currency" value="' . $this->escapeHtml($this->sCurrency) . '">'
            . '<input type="hidden" name="description" value="' . $this->escapeHtml($this->sOrderDescription) . '">'
            . '<input type="hidden" name="hash" value="' . $sHash . '">'
            . '<input type="hidden" name="paymentType" value="' . $this->escapeHtml($this->sPaymentType) . '">'
            . '<input type="hidden" name="validUntil" value="' . $sValidUntil . '">'
            . '<input type="hidden" name="itemNumber1" value="1">'
            . '<input type="hidden" name="itemDescription1" value="' . $this->escapeHtml($this->sOrderDescription) . '">'
            . '<input type="hidden" name="itemQuantity1" value="1">'
            . '<input type="hidden" name="itemPrice1" value="' . $iAmount . '">'
            . ($this->sUrlCancel ? '<input type="hidden" name="urlCancel" value="' . $this->escapeHtml($this->sUrlCancel) . '">' : '')
            . (
$this->sUrlSuccess ? '<input type="hidden" name="urlSuccess" value="' . $this->escapeHtml($this->sUrlSuccess) . '">' : '')
            . (
$this->sUrlError ? '<input type="hidden" name="urlError" value="' . $this->escapeHtml($this->sUrlError) . '">' : '')
            . (
$this->sButtonImage ? '<input name="Submit" type="image" value="' . $this->escapeHtml($this->sButtonLabel) . '" src="' . $this->escapeHtml($this->sButtonImage) . '"' . ($this->iButtonImageWidth ? ' width="' . $this->escapeHtml($this->iButtonImageWidth) . '"' : '') . ($this->iButtonImageHeight ? ' height="' . $this->escapeHtml($this->iButtonImageHeight) . '"' : '') . '>' : '<input name="Submit" type="submit" value="' . $this->escapeHtml($this->sButtonLabel) . '">')
            .
'</form>';

            return $html;
        }

        function
escapeHtml($s)
        {

            $s = str_replace('&', '&amp;', $s);
            $s = str_replace('<', '&lt;', $s);
            $s = str_replace('>', '&gt;', $s);
            $s = str_replace('"', '&quot;', $s);
            return $s;
        }
    }


?>
Leagz
leagz
14 jaar geleden
 
0 +1 -0 -1
Bedankt! Dit heeft mij 100% geholpen !!
Marc
Marc
14 jaar geleden
 
0 +1 -0 -1
Beste allemaal,

Ik zit met een wazig probleem. Een installatie van iDEAL op basis van een door mij vervaardigd iDEAL component (jigDeal) echter... De klant welke het heeft geinstalleerd meldt mij dat bij het bestellen de melding 'digitale handtekening is niet geldig' verschijnt.

Maar nu het wazige... De ene keer gaat het goed en een andere keer gaat het fout?! Gezien het feit dat de procedure achter het proces hetzelfde is, en hierbij ook dezelfde hash-key e.d. wordt meegegeven staat ik even voor een raadsel.

Heeft iemand misschien een idee hoe dit mogelijk is?? Je zou toch zeggen dat het OF niet geldig is, OF wel geldig is... En niet een beetje van beide...?

Alvast bedankt voor enige input... Alle info is welkom.

Marc Sonius
(Totally newbie bij phphulp...)


14 jaar geleden
 
0 +1 -0 -1
Hoi Marc,

Ik raad je aan om even een topic te maken in het forum ;-)
Harold V
Harold V
12 jaar geleden
 
0 +1 -0 -1
Hoi allemaal,

Er gaat bij mij iets nog niet helemaal lekker.
Ik heb een los php-bestand gemaakt:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<?
if(isset($_POST['next']) && $_POST['email']<>'' && $_POST['bedrag'] && strstr($_POST['email'],'@')) {
    echo 'Uw e-mailadres is: '.$_POST['email'];
    echo '<br />U wilt &euro; '.$_POST['bedrag'].' doneren.';
    
    $getOrderId = mysql_query('');
    $countOrderId = mysql_num_rows($getOrderId);
    
    $placeOrder = mysql_query('');
    if($placeOrder) {
        include('ideallite.cls.php');
        $oIdeal = new IdealLite();
        // Set account details
        $oIdeal->setMerchant('MERCHANTID');
        $oIdeal->setHashKey('HASHKEY');
        $oIdeal->setAquirer('https://idealtest.rabobank.nl/ideal/mpiPayInitRabo.do');
        // Set shop details
        $oIdeal->setUrlCancel('URL');
        $oIdeal->setUrlError('URL');
        $oIdeal->setUrlSuccess('URL');
        // Set order details
        $oIdeal->setAmount(str_replace(',','',$_POST['bedrag']));
        $oIdeal->setOrderId('DON_'.($countOrderId+1));
        $oIdeal->setOrderDescription('OMSCHRIJVING');
        // Customize submit button
        $oIdeal->setButton('Betaal met iDeal');
        // Generate form
        echo $oIdeal->createForm();
    }
else{
        echo 'Helaas kan deze actie op dit moment niet worden uitgevoerd.';
    }
}
else{
    if($_GET['orderid']<>'') {
        if($_GET['status']=='cancel') {
            echo '<strong>Uw donatie is geannuleerd</strong><hr />';
        }
else if($_GET['status']=='error') {
            echo '<strong>Er is een fout opgetreden, uw donatie is geannuleerd.</strong><hr />';
        }
else if($_GET['status']=='success') {
            echo '<strong>Bedankt voor uw donatie!</strong><hr />';
            mysql_query(''');
        }
    }

// FORMULIER
}
?>


Het gaat aan de kant van de website helemaal goed. Als ik echter op de betaalknop klik word ik doorgestuurd naar de normale betaalpagina ipv de testpagina. Dit terwijl in ideallite.cfg.php testmodus op 'true' staat.
Vanzelfsprekend zijn de benodigde gegevens verder ingevuld, heb ze alleen uit deze post gehaald.

Iemand een idee?
Ray de graaf
ray de graaf
10 jaar geleden
 
0 +1 -0 -1
Is het gebruik van de lite versie niet gevaarlijk?

Ik dacht dat je dan heel makkelijk kan frauderen.
Als je naar de bron kijkt zie je de locatie van het uiteindelijke bericht betaling verwerkt.


Het zou wel een bestelling plaatsen maar de betaling omzeilen.

Of is dat al weer opgelost?
Koen Vlaswinkel
Koen Vlaswinkel
10 jaar geleden
 
0 +1 -0 -1
Dit is een script van 5 jaar geleden dat nu inderdaad verouderd en onveilig zou kunnen zijn.
Koen Vlaswinkel
Koen Vlaswinkel
10 jaar geleden
 
0 +1 -0 -1
Dit is een script van 5 jaar geleden dat nu inderdaad verouderd en onveilig zou kunnen zijn.
Bernhard Flokstra
Bernhard Flokstra
10 jaar geleden
 
0 +1 -0 -1
iDeal lite is niet perse onveilig. De manier hoe een programmeur er mee om gaat maakt hem veilig of onveilig.
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Bernhard Flokstra
Bernhard Flokstra
10 jaar geleden
 
0 +1 -0 -1
iDeal lite is niet perse onveilig. De manier hoe een programmeur er mee om gaat maakt hem veilig of onveilig.

Om te reageren heb je een account nodig en je moet ingelogd zijn.

Inhoudsopgave

  1. iDEAL Lite
  2. Implementatie
  3. Voorbereiding
  4. Voorbeeld (toelichting)

Labels

  • Geen tags toegevoegd.

PHP tutorial opties

 
 

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.