iDEAL Lite
Door Martijn Wieringa, 19 jaar geleden, 15.262x bekeken
Korte toelichting voor de implementatie van iDEAL Lite
Gesponsorde koppelingen
Inhoudsopgave
Er zijn 18 reacties op 'Ideal lite'
Gesponsorde koppelingen
Waarschijnlijk gebruik jij PHP4, maar de gebruikte versie is voor PHP 5.
Voor PHP 4 kun je deze class gebruiken:
-- ideallite.cls.php ---
Voor PHP 4 kun je deze class gebruiken:
-- ideallite.cls.php ---
Code (php)
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
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: [email protected]
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('&', '&', $s);
$s = str_replace('<', '<', $s);
$s = str_replace('>', '>', $s);
$s = str_replace('"', '"', $s);
return $s;
}
}
?>
/*
Class to generate an Ideal Lite form.
Also calculates your security hashcode.
Author: Martijn Wieringa
Company: PHP Solutions
Email: [email protected]
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('&', '&', $s);
$s = str_replace('<', '<', $s);
$s = str_replace('>', '>', $s);
$s = str_replace('"', '"', $s);
return $s;
}
}
?>
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...)
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...)
Hoi allemaal,
Er gaat bij mij iets nog niet helemaal lekker.
Ik heb een los php-bestand gemaakt:
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?
Er gaat bij mij iets nog niet helemaal lekker.
Ik heb een los php-bestand gemaakt:
Code (php)
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
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 € '.$_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
}
?>
if(isset($_POST['next']) && $_POST['email']<>'' && $_POST['bedrag'] && strstr($_POST['email'],'@')) {
echo 'Uw e-mailadres is: '.$_POST['email'];
echo '<br />U wilt € '.$_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?
Om te reageren heb je een account nodig en je moet ingelogd zijn.
Inhoudsopgave
Labels
- Geen tags toegevoegd.
PHP hulp
0 seconden vanaf nu