*DELETEME*
Ik heb je script gekopierd en uitgevoerd en bij mij werkt alles prima?!
Quote:
Beste,
Er is een nieuwe betaling gedaan op ******* met de volgende gegevens:
Naam:
Adres:
Postcode:
Woonplaats:
Telefoonnummer:
E-mailadres:
Land:
Opmerking door klant:
Betaalmethode:
Aantal producten:
Betaald bedrag:
Met vriendelijke groet,
*******
Er is een nieuwe betaling gedaan op ******* met de volgende gegevens:
Naam:
Adres:
Postcode:
Woonplaats:
Telefoonnummer:
E-mailadres:
Land:
Opmerking door klant:
Betaalmethode:
Aantal producten:
Betaald bedrag:
Met vriendelijke groet,
*******
Ik krijg namelijk netjes een e-mail met alle waardes van het formulier.
Vreemd, want dat krijg ik dus gewoon niet..
Webbrowser?
Webserver en OS?
Kijk anders in firefox (4) die heeft een speciale console waarin je kunt zien welke post waardes er verstuurd zijn (Ctrl+Shift+K) en dan rechtermuisknop -> Verzoek en antwoord...
Daar word ikzelf niet echt wijzer van..
Henk Schepers op 12/04/2011 00:58:18:
Daar word ikzelf niet echt wijzer van..
Nee, maar dan kun je in ieder geval kijken of het ligt aan het versturen van het formulier of aan je PHP script.
Zover ik dat kan zien wordt alles correct doorgestuurd.
(Met sufferd bedoel ik iemand die nog niet echt veel verstand heeft van php.)
Beide scripts zijn niet goed.
- Bouw foutafhandeling in. Kijk wat elke functie (zoals mysql_connect teruggeeft) en gebruik dat voor de foutafhandeling (let op 'or die' is geen foutafhandeling).
- Selecteer wat je wilt hebben, gebruik geen *.
- Als je toch de assoc manier van array gebruikt, gebruik dan gewoon direct myslq_fetch_assoc.
- Misschien eerst html leren? Jij bedoelt vast geen header.
- Gebruik niet de directe manier (document.betaal.*), maar maak gebruik van bijvoorbeeld getElementsById.
- Tabellen hoor je niet te gebruiken voor lay-out / styling. Ook niet voor forms (gebruik div's, labels, etc.)
- Maak geen gebruik van inline css. Is niet handig.
- Zet nooit error reporting en display errors aan op een productie omgeving.
- Misschien is het slim om eerst te kijken of alle gegevens er zijn in de $_GET voordat je queries doet en connectie gaat maken?
- Bedenk of je POST of GET doet. Door elkaar tegelijkertijd werkt niet handig.
- Controleer of een formulier gepost is met if($_SERVER['REQUEST_METHOD'] == 'POST')
- $prijs vs $bedrag ...?
"Bedenk of je POST of GET doet. Door elkaar tegelijkertijd werkt niet handig."
Als je even verder had gekeken maakt het script gebruik van een externe betaal api, waardoor je soms niet anders kan dan GET en POST door elkaar gebruiken (aangezien de externe api dit eenmaal voorschrijft). Lijkt mij verder ook niets mis mee wanneer je het overzichtelijk houdt.
Ontopic: Je probleem zit 'm in de pagina die opgevraagd wordt nadat mollie de betaling heeft afgerond. De case 'return' binnen je switch wordt opgevraagd na de betaling. De ingevoerde gegevens die ingevoerd zijn voor de betaling bestaan dan niet meer. De ingevoerde gegevens in het formulier zijn alleen toegankelijk op de pagina die je aanroept wanneer het formulier wordt gesubmit.
Een oplossing kan zijn om de gegevens direct na het submitten van het formulier op te slaan in de database en te koppelen aan de transactieid of iets dergelijks. Hierdoor kan je op een later tijdstip (bijvoorbeeld op de return pagina) de gegevens opvragen.
Voor een beter overzicht kan je misschien beter alles in aparte bestanden opslaan (betaling, afhandeling, return, etc.). Zo zie je in één opslag dat wat je probeert te doen niet gaat werken.
Gewijzigd op 12/04/2011 14:48:51 door Arjan -
Arjan - op 12/04/2011 14:45:58:
@Karl: Dat standaard lijstje van jou kennen wij zo onderhand wel. Ook al is het allemaal juist wat je zegt, kom je nooit "to the point".
Tja, waarom gebruiken zoveel mensen het dan niet. Als ze het gewoon eens gaan gebruiken hoef ik het niet te plaatsen en zijn zo ontzettend veel scripts beter geworden. Het zijn maar zulke simpele dingen.
Arjan - op 12/04/2011 14:45:58:
Omdat er verschrikkelijk slecht gescript is. Zoals jij straks tot de conclusie komt dat de data gewoon weggegooid wordt omdat de molie api meerdere keren aangeroepen moet worden, had hij dat zelf kunnen uitvinden door alles netjes op te delen en dus kijken of er een post is gedaan. Hij wilt post data benaderen zonder dat hij weet of er een post is gedaan. Als je dat niet weet, dan weet je ook niet of er gegevens zijn. Verder weet je dat als je meerdere keren die api aan moet roepen en altijd moet controleren of er post data is geweest dat er iets niet goed is.De TS vraagt waarom de POST array geen waarden bevat.
Arjan - op 12/04/2011 14:45:58:
En anderen met sufferd betitelen is ook een beetje kinderachtig. Deze mensen proberen andere mensen te helpen (ook al zijn de antwoorden niet altijd juist).
Ik vind het wel wat ver gaan als je "test" en denkt dat het aan het OS moet liggen. PHP is geen hogere wiskunde. PHP is simpel, er is geen hout aan. Je hoeft niks echt te programmeren. Bijna altijd is het je eigen schuld dat als er iets mis gaat en niet van het OS (uitzonderingen daargelaten).
Arjan - op 12/04/2011 14:45:58:
"Bedenk of je POST of GET doet. Door elkaar tegelijkertijd werkt niet handig."
Als je even verder had gekeken maakt het script gebruik van een externe betaal api, waardoor je soms niet anders kan dan GET en POST door elkaar gebruiken (aangezien de externe api dit eenmaal voorschrijft). Lijkt mij verder ook niets mis mee wanneer je het overzichtelijk houdt.
Ontopic: Je probleem zit 'm in de pagina die opgevraagd wordt nadat mollie de betaling heeft afgerond. De case 'return' binnen je switch wordt opgevraagd na de betaling. De ingevoerde gegevens die ingevoerd zijn voor de betaling bestaan dan niet meer. De ingevoerde gegevens in het formulier zijn alleen toegankelijk op de pagina die je aanroept wanneer het formulier wordt gesubmit.
Een oplossing kan zijn om de gegevens direct na het submitten van het formulier op te slaan in de database en te koppelen aan de transactieid of iets dergelijks. Hierdoor kan je op een later tijdstip (bijvoorbeeld op de return pagina) de gegevens opvragen.
Voor een beter overzicht kan je misschien beter alles in aparte bestanden opslaan (betaling, afhandeling, return, etc.). Zo zie je in één opslag dat wat je probeert te doen niet gaat werken.
Als je even verder had gekeken maakt het script gebruik van een externe betaal api, waardoor je soms niet anders kan dan GET en POST door elkaar gebruiken (aangezien de externe api dit eenmaal voorschrijft). Lijkt mij verder ook niets mis mee wanneer je het overzichtelijk houdt.
Ontopic: Je probleem zit 'm in de pagina die opgevraagd wordt nadat mollie de betaling heeft afgerond. De case 'return' binnen je switch wordt opgevraagd na de betaling. De ingevoerde gegevens die ingevoerd zijn voor de betaling bestaan dan niet meer. De ingevoerde gegevens in het formulier zijn alleen toegankelijk op de pagina die je aanroept wanneer het formulier wordt gesubmit.
Een oplossing kan zijn om de gegevens direct na het submitten van het formulier op te slaan in de database en te koppelen aan de transactieid of iets dergelijks. Hierdoor kan je op een later tijdstip (bijvoorbeeld op de return pagina) de gegevens opvragen.
Voor een beter overzicht kan je misschien beter alles in aparte bestanden opslaan (betaling, afhandeling, return, etc.). Zo zie je in één opslag dat wat je probeert te doen niet gaat werken.
Tja, kijk, nu scheid jij zelf het post en get gedoe ook....
Natuurlijk is get en post door elkaar wel mogelijk, maar zoals ik zeg het is niet handig. Hier wordt er ook zeker een probleem veroorzaakt door het door elkaar halen van beiden.
Verder is het ook zo dat mollie ook al voorbeeld code aanbied... Gebruik dat dan.
Bedankt voor je tip Arjan, ik heb het ook kunnen oplossen met een database en een script dat het controleerd.
Henk Schepers op 11/04/2011 22:29:27:
Ik ben bezig met een script waarbij ik bepaalde ingevoerde gegevens wil mailen na het betalen. Echter lijkt het dat de $_POST[""] op een of andere manier vergeten wordt..
Het resultaat is dus dat ik mails krijg zonder de ingevoerde gegevens..
Hier de code:
index.php:http://pastebin.com/UPt8V0zJ
betaal.php: http://pastebin.com/HiK4QRpH
Ik heb vanalles geprobeert, maar het mocht niet baten.
Zoals je ziet heb ik errorlogging aanstaan dit geef als output:
Quote:
Notice: Undefined index: naam in /home/ihs/domains/jediah.nl/public_html/scripts/mollie/betaal.php on line 143
Notice: Undefined index: adres in /home/ihs/domains/jediah.nl/public_html/scripts/mollie/betaal.php on line 144
Notice: Undefined index: postcode in /home/ihs/domains/jediah.nl/public_html/scripts/mollie/betaal.php on line 145
Notice: Undefined index: woonplaats in /home/ihs/domains/jediah.nl/public_html/scripts/mollie/betaal.php on line 146
Notice: Undefined index: telefoon in /home/ihs/domains/jediah.nl/public_html/scripts/mollie/betaal.php on line 147
Notice: Undefined index: email in /home/ihs/domains/jediah.nl/public_html/scripts/mollie/betaal.php on line 148
Notice: Undefined index: land in /home/ihs/domains/jediah.nl/public_html/scripts/mollie/betaal.php on line 149
Notice: Undefined index: opmerking in /home/ihs/domains/jediah.nl/public_html/scripts/mollie/betaal.php on line 150
Notice: Undefined index: betaalmethode in /home/ihs/domains/jediah.nl/public_html/scripts/mollie/betaal.php on line 151
Notice: Undefined index: aantal in /home/ihs/domains/jediah.nl/public_html/scripts/mollie/betaal.php on line 152
Notice: Undefined index: betaaldbedrag in /home/ihs/domains/jediah.nl/public_html/scripts/mollie/betaal.php on line 153
Het resultaat is dus dat ik mails krijg zonder de ingevoerde gegevens..
Hier de code:
index.php:http://pastebin.com/UPt8V0zJ
betaal.php: http://pastebin.com/HiK4QRpH
Ik heb vanalles geprobeert, maar het mocht niet baten.
Zoals je ziet heb ik errorlogging aanstaan dit geef als output:
Quote:
Notice: Undefined index: naam in /home/ihs/domains/jediah.nl/public_html/scripts/mollie/betaal.php on line 143
Notice: Undefined index: adres in /home/ihs/domains/jediah.nl/public_html/scripts/mollie/betaal.php on line 144
Notice: Undefined index: postcode in /home/ihs/domains/jediah.nl/public_html/scripts/mollie/betaal.php on line 145
Notice: Undefined index: woonplaats in /home/ihs/domains/jediah.nl/public_html/scripts/mollie/betaal.php on line 146
Notice: Undefined index: telefoon in /home/ihs/domains/jediah.nl/public_html/scripts/mollie/betaal.php on line 147
Notice: Undefined index: email in /home/ihs/domains/jediah.nl/public_html/scripts/mollie/betaal.php on line 148
Notice: Undefined index: land in /home/ihs/domains/jediah.nl/public_html/scripts/mollie/betaal.php on line 149
Notice: Undefined index: opmerking in /home/ihs/domains/jediah.nl/public_html/scripts/mollie/betaal.php on line 150
Notice: Undefined index: betaalmethode in /home/ihs/domains/jediah.nl/public_html/scripts/mollie/betaal.php on line 151
Notice: Undefined index: aantal in /home/ihs/domains/jediah.nl/public_html/scripts/mollie/betaal.php on line 152
Notice: Undefined index: betaaldbedrag in /home/ihs/domains/jediah.nl/public_html/scripts/mollie/betaal.php on line 153
Henk Schepers op 12/04/2011 16:54:15:
Ik wil er meteen even bijzeggen dat ik geen plannen heb om dit script live te gebruiken, dus een simpel formulier met tables kan geen kwaad. En als ik Karl was zou ik me daar al helemaal niet druk over maken. Want echt helpen doe je niet, enkel standaard suggesties geven..
Tja, als je fietst, dan hoef je natuurlijk niet je hand uit te steken om naar links te gaan, maarja, dan blijkt er net zo'n Toyota Prius geruisloos achter je te zitten, dan lig je er mooi bovenop.
Het lijkt misschien triviaal om het slecht en niet goed te doen, maar het is beter om je gewoon aan te leren. Je leert het dan altijd goed te doen en het is een goede oefening. Waarom zou je dat dan niet doen?
Verder vraag ik mij nog steeds af waarom je dan, als je mijn standaard antwoorden toch kent, ze niet implementeert. Zoals ik al uitgelegd heb zorgen ze ervoor dat je een heel aantal problemen minder hebt. En ook gelijk de oplossing hebt.
De standaard suggesties van Karl zijn blijkbaar nog steeds nodig. Ook al zijn ze standaard, als ze al toegepast werden zou hij ze niet noemen.
Toevoeging, topics worden normaal gesproken niet gesloten of verwijderd om dat de TS zijn/haar antwoord gekregen heeft.
Gewijzigd op 12/04/2011 17:05:50 door TJVB tvb
Nare instelling, hulp vragen en na het krijgen van het antwoord de gegevens weghalen zodat niemand anders er van kan leren.
Henk Schepers op 12/04/2011 17:06:26:
Karl Karl op 12/04/2011 17:03:59::
Unknown Paste ID!
Ja, ik had gezien dat je die paste als gebruiker hebt gemaakt en dus dat je die kan verwijderen. Maar die heb ik dus ook nog:
index.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
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
<?
include('db.php');
mysql_connect($server, $username, $password);
mysql_select_db($database);
$select = mysql_query("SELECT * FROM config");
$regel = mysql_fetch_array($select);
##################
## Instellingen ##
##################
$max = 10; //max aantal
$prijs = $regel['Prijs']; // prijs / stuk
$verzendkost = $regel['Verzendkosten']; // verzendkost
?>
<html>
<header>
<script type="text/javascript">
function bereken()
{
var aantal = parseInt(document.betaal.aantal.value);
var verzendkost = parseInt(document.betaal.verzendkosten.value);
var prijs = parseInt(document.betaal.prijs.value);
var kost = prijs * aantal;
var total = kost + verzendkost;
total = total / 100;
total = " " + total;
document.betaal.total.value = total;
}
</script>
</header>
<body onload="javascript:bereken()">
<form name="betaal" id="betaal" action="betaal.php" method="post">
<table width="420">
<tr>
<td align="left"><strong>Naam</strong></td>
<td align="left"><input size="20" type="text" name="naam" value="" /></td>
</tr>
<tr>
<td align="left"><strong>Adres</strong></td>
<td align="left"><input size="20" type="text" name="adres" value="" /></td>
</tr>
<tr>
<td align="left"><strong>Postcode</strong></td>
<td align="left"><input type="text" name="postcode" value="" size="10" maxlength="7"/></td>
</tr>
<tr>
<td align="left"><strong>Woonplaats:</strong></td>
<td align="left"><input size="15" type="text" name="woonplaats" value="" /></td>
</tr>
<tr>
<td align="left"><strong>Telefoon:</strong></td>
<td align="left"><input size="15" type="text" name="telefoon" value="" /></td>
</tr>
<tr>
<td align="left"><strong>E-Mail:</strong></td>
<td align="left"><input size="15" type="text" name="email" value="" /></td>
</tr>
<tr>
<td align="left"><strong>Land:</strong></td>
<td align="left"><input size="15" type="text" name="land" value="" /></td>
</tr>
<tr>
<td align="left"><strong>Opmerking:</strong></td>
<td><textarea name="opmerking" cols="20" rows="4" ></textarea></td>
</tr>
<tr>
<td align="left"><strong>Betaalmethode</strong></td>
<td>
<select name="betaalmethode">
<option value="ideal" />iDeal</option>
</select>
</td>
</tr>
<tr>
<td align="left"><strong>Aantal</strong></td>
<td>
<select name="aantal" id="aantal" onchange="javascript:bereken();">
<?php
$aantal = 1;
while($aantal <= $max){
echo '<option value="'.$aantal.'">'.$aantal.'</option>';
$aantal ++;
}
?>
</select>
<input style="display:none" type="text" name="prijs" id="prijs" value="<?=$prijs?>">
<input style="display:none" type="text" name="verzendkosten" id="verzendkosten" value="<?=$verzendkost?>">
</td>
</tr>
<tr>
<td align="left"><strong>Totaal:</strong></td>
<td><input name="total" id="total" type="text" readonly="readonly" size="10" value="lol" tabindex="-1"></td>
</tr>
<tr>
<td align="left"><strong></strong></td>
<td align="left"><input type="checkbox" name="AV" value="ja" id="akkoord" /> Ik accepteer de <a href="Algemene Voorwaarden.html" onclick="window.open('Algemene Voorwaarden.html','Algemene Voorwaarden',
'width=auto,height=auto,scrollbars=auto,toolbar=no,location=no'); return false">Algemene Voorwaarden</a>.</td>
</tr>
<tr>
<td> </td>
<td align="left"><input type="submit" name="" value="Bestellen" /></td>
</tr>
</table>
</form>
</body>
</html>
include('db.php');
mysql_connect($server, $username, $password);
mysql_select_db($database);
$select = mysql_query("SELECT * FROM config");
$regel = mysql_fetch_array($select);
##################
## Instellingen ##
##################
$max = 10; //max aantal
$prijs = $regel['Prijs']; // prijs / stuk
$verzendkost = $regel['Verzendkosten']; // verzendkost
?>
<html>
<header>
<script type="text/javascript">
function bereken()
{
var aantal = parseInt(document.betaal.aantal.value);
var verzendkost = parseInt(document.betaal.verzendkosten.value);
var prijs = parseInt(document.betaal.prijs.value);
var kost = prijs * aantal;
var total = kost + verzendkost;
total = total / 100;
total = " " + total;
document.betaal.total.value = total;
}
</script>
</header>
<body onload="javascript:bereken()">
<form name="betaal" id="betaal" action="betaal.php" method="post">
<table width="420">
<tr>
<td align="left"><strong>Naam</strong></td>
<td align="left"><input size="20" type="text" name="naam" value="" /></td>
</tr>
<tr>
<td align="left"><strong>Adres</strong></td>
<td align="left"><input size="20" type="text" name="adres" value="" /></td>
</tr>
<tr>
<td align="left"><strong>Postcode</strong></td>
<td align="left"><input type="text" name="postcode" value="" size="10" maxlength="7"/></td>
</tr>
<tr>
<td align="left"><strong>Woonplaats:</strong></td>
<td align="left"><input size="15" type="text" name="woonplaats" value="" /></td>
</tr>
<tr>
<td align="left"><strong>Telefoon:</strong></td>
<td align="left"><input size="15" type="text" name="telefoon" value="" /></td>
</tr>
<tr>
<td align="left"><strong>E-Mail:</strong></td>
<td align="left"><input size="15" type="text" name="email" value="" /></td>
</tr>
<tr>
<td align="left"><strong>Land:</strong></td>
<td align="left"><input size="15" type="text" name="land" value="" /></td>
</tr>
<tr>
<td align="left"><strong>Opmerking:</strong></td>
<td><textarea name="opmerking" cols="20" rows="4" ></textarea></td>
</tr>
<tr>
<td align="left"><strong>Betaalmethode</strong></td>
<td>
<select name="betaalmethode">
<option value="ideal" />iDeal</option>
</select>
</td>
</tr>
<tr>
<td align="left"><strong>Aantal</strong></td>
<td>
<select name="aantal" id="aantal" onchange="javascript:bereken();">
<?php
$aantal = 1;
while($aantal <= $max){
echo '<option value="'.$aantal.'">'.$aantal.'</option>';
$aantal ++;
}
?>
</select>
<input style="display:none" type="text" name="prijs" id="prijs" value="<?=$prijs?>">
<input style="display:none" type="text" name="verzendkosten" id="verzendkosten" value="<?=$verzendkost?>">
</td>
</tr>
<tr>
<td align="left"><strong>Totaal:</strong></td>
<td><input name="total" id="total" type="text" readonly="readonly" size="10" value="lol" tabindex="-1"></td>
</tr>
<tr>
<td align="left"><strong></strong></td>
<td align="left"><input type="checkbox" name="AV" value="ja" id="akkoord" /> Ik accepteer de <a href="Algemene Voorwaarden.html" onclick="window.open('Algemene Voorwaarden.html','Algemene Voorwaarden',
'width=auto,height=auto,scrollbars=auto,toolbar=no,location=no'); return false">Algemene Voorwaarden</a>.</td>
</tr>
<tr>
<td> </td>
<td align="left"><input type="submit" name="" value="Bestellen" /></td>
</tr>
</table>
</form>
</body>
</html>
betaal.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
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
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
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
<?php
ini_set('display_errors', 'On');
error_reporting(E_ALL);
require("db.php"); //Database connectie config
$url = 'http://www.jediah.nl/scripts/mollie/betaal.php'; //exacte locatie van het script volledig geschreven
$partnerID = 536497; //Het partnerID van mollie
$testmode = true; //De mollie ideal-api in testmode draaien
$ipadresses = array ('82.94.203.80', '82.94.203.81', '82.94.203.82', '82.94.203.83', '82.94.203.84', '82.94.203.85', '82.94.203.86');
$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
if(mysql_connect($server, $username, $password))
{
if(mysql_select_db($database))
{
if(!empty($_GET['payment_id']) && ctype_alnum($_GET['payment_id']))
{
$payment_id = mysql_real_escape_string($_GET['payment_id']);
$query = "SELECT transaction_id, amount, description, paid FROM payments WHERE payment_id = '".$payment_id."'";
$result = mysql_query($query);
if($result && mysql_num_rows($result) == 1)
{
$transaction = mysql_fetch_assoc($result);
if(!empty($_GET['action']))
{
switch($_GET['action'])
{
case 'start':
if($transaction['paid'] == 0)
{
echo '<p>Er is een betaling aangemaakt voor <b>€ '.number_format($transaction['amount']/100, 2, ', ', '.').'</b> met als beschrijving <b>'.$transaction['description'].'</b>.</p>';
if($testmode)
{
curl_setopt($ch, CURLOPT_URL, "http://www.mollie.nl/xml/ideal?a=banklist&testmode=true");
}else{
curl_setopt($ch, CURLOPT_URL, "http://www.mollie.nl/xml/ideal?a=banklist");
}
$xml = new SimpleXMLElement(curl_exec($ch));
echo '<form method="post" action="?action=redirect&payment_id='.$payment_id.'">';
echo '<label for="bank_id">Uw bank:</label><br />';
echo '<select name="bank_id">';
foreach($xml->bank as $bank)
{
echo '<option value="'.$bank->bank_id.'">'.$bank->bank_name.'</option>';
}
echo '</select>';
echo '<input type="submit" name="verwerken" value="Verwerken"/>';
echo '</form>';
}else{
echo '<p>Sorry, deze transactie is reeds betaald!</p>';
}
break;
case 'redirect':
if($transaction['paid'] == 0)
{
if($_SERVER['REQUEST_METHOD'] == "POST")
{
if(!empty($_POST['bank_id']) && ctype_digit($_POST['bank_id']))
{
curl_setopt($ch, CURLOPT_URL, "http://www.mollie.nl/xml/ideal?a=fetch&partnerid=".$partnerID."&description=".urlencode($transaction['description'])."&reporturl=".urlencode($url.'?action=report&payment_id='.$payment_id)."&returnurl=".urlencode($url.'?action=return&payment_id='.$payment_id)."&amount=".$transaction['amount']."&bank_id=".$_POST['bank_id']."");
$xml = new SimpleXMLElement(curl_exec($ch));
if($xml->order->amount == $transaction['amount'])
{
$query = "UPDATE payments SET transaction_id = '".$xml->order->transaction_id."' WHERE payment_id = '".$payment_id."'";
$result = mysql_query($query);
if($result && mysql_affected_rows() == 1)
{
header('Location: '.$xml->order->URL);
}else{
echo '<p>Sorry, er is iets mis gegaan met het updaten van de database!</p>';
}
}else{
echo '<p>Sorry, er is iets mis gegaan met de aanvraag van deze betaling!</p>';
}
}else{
echo '<p>Sorry, er word een bank_id verwacht en deze dient numeriek te zijn!</p>';
}
}
}else{
echo '<p>Sorry, deze transactie is reeds betaald!</p>';
}
break;
case 'report':
if(in_array($_SERVER['REMOTE_ADDR'], $ipadresses))
{
if(!empty($_GET['transaction_id']) && ctype_alnum($_GET['transaction_id']))
{
if($testmode)
{
curl_setopt($ch, CURLOPT_URL, "http://www.mollie.nl/xml/ideal?a=check&partnerid=".$partnerID."&transaction_id=".$_GET['transaction_id']."&testmode=true");
}else{
curl_setopt($ch, CURLOPT_URL, "http://www.mollie.nl/xml/ideal?a=check&partnerid=".$partnerID."&transaction_id=".$_GET['transaction_id']."");
}
$xml = new SimpleXMLElement(curl_exec($ch));
if((string) $xml->order->payed == 'true')
{
$query = "UPDATE payments SET paid = 1 WHERE payment_id = '".$payment_id."' AND transaction_id = '".mysql_real_escape_string($_GET['transaction_id'])."'";
$result = mysql_query($query);
}
}
}
break;
case 'return':
if(!empty($_GET['transaction_id']) && ctype_alnum($_GET['transaction_id']))
{
$query = "SELECT paid FROM payments WHERE payment_id = '".$payment_id."' AND transaction_id = '".mysql_real_escape_string($_GET['transaction_id'])."' AND paid = 1";
$result = mysql_query($query);
if($result && mysql_num_rows($result) == 1)
{
echo '<p>Gelukt! De betaling is succesvol ontvangen!</p>';
$select = mysql_query("SELECT * FROM config");
$regel = mysql_fetch_array($select);
$Amail = $regel['Email'];
$website = str_replace('www.', '', $_SERVER['HTTP_HOST']);
$vanwie = str_replace('www.', 'noreply@', $_SERVER['HTTP_HOST']);
// Mail versturen
$aan = $Amail;
$onderwerp = "Nieuwe order op ".$website." geplaatst!";
$bericht = "Beste,<br /><br />Er is een nieuwe betaling gedaan op ".$website." met de volgende gegevens:<br />
<br />Naam:".$_POST["naam"]."<br />
Adres:".$_POST["adres"]."<br />
Postcode:".$_POST["postcode"]."<br />
Woonplaats:".$_POST["woonplaats"]."<br />
Telefoonnummer:".$_POST["telefoon"]."<br />
E-mailadres:".$_POST["email"]."<br />
Land:".$_POST["land"]."<br />
Opmerking door klant:".$_POST["opmerking"]."<br />
Betaalmethode:".$_POST["betaalmethode"]."<br />
Aantal producten:".$_POST["aantal"]."<br />
Betaald bedrag:".$_POST["betaaldbedrag"]."<br />
<br />Met vriendelijke groet,<br /><br />".$website;
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
$headers .= "From: ".$vanwie." \r\n";
mail($aan, $onderwerp, $bericht, $headers);
}else{
echo '<p>Sorry, de betaling is niet succesvol ontvangen!</p>';
}
}else{
echo '<p>Sorry, er word een transaction_id verwacht en deze dient alphanumeriek te zijn!</p>';
}
break;
default:
echo 'Sorry, deze actie word niet herkend!';
break;
}
}else{
echo '<p>Sorry, er word een actie verwacht!</p>';
}
}else{
echo '<p>Sorry, dit payment_id bestaat niet!</p>';
}
}else{
// echo '<p>Sorry, er word een payment_id verwacht en deze dient alphanumeriek te zijn!</p>';
$code = md5(rand(000000,999999).microtime());
$select = mysql_query("SELECT * FROM config");
$regel = mysql_fetch_array($select);
$Omschrijving = $regel['Omschrijving'];
$Bedrag = $regel['Prijs'] * $_POST['aantal'];
$Verzendkosten = $regel['Verzendkosten'];
$Prijs = $Bedrag + $Verzendkosten;
$query = "INSERT INTO payments (payment_id, amount, description, ipadress) VALUES ('".$code."', ".$Prijs.", '".$Omschrijving."', '".$_SERVER['REMOTE_ADDR']."')";
$result = mysql_query($query);
if($result && mysql_affected_rows() == 1)
{
header('Location: '.$url.'?action=start&payment_id='.$code.'');
}
}
}else{
echo '<p>Sorry, er kon geen verbinding gemaakt worden met de database!</p>';
}
}else{
echo '<p>Sorry, er kon geen verbinding gemaakt worden met de databaseserver!</p>';
}
curl_close($ch);
?>
ini_set('display_errors', 'On');
error_reporting(E_ALL);
require("db.php"); //Database connectie config
$url = 'http://www.jediah.nl/scripts/mollie/betaal.php'; //exacte locatie van het script volledig geschreven
$partnerID = 536497; //Het partnerID van mollie
$testmode = true; //De mollie ideal-api in testmode draaien
$ipadresses = array ('82.94.203.80', '82.94.203.81', '82.94.203.82', '82.94.203.83', '82.94.203.84', '82.94.203.85', '82.94.203.86');
$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
if(mysql_connect($server, $username, $password))
{
if(mysql_select_db($database))
{
if(!empty($_GET['payment_id']) && ctype_alnum($_GET['payment_id']))
{
$payment_id = mysql_real_escape_string($_GET['payment_id']);
$query = "SELECT transaction_id, amount, description, paid FROM payments WHERE payment_id = '".$payment_id."'";
$result = mysql_query($query);
if($result && mysql_num_rows($result) == 1)
{
$transaction = mysql_fetch_assoc($result);
if(!empty($_GET['action']))
{
switch($_GET['action'])
{
case 'start':
if($transaction['paid'] == 0)
{
echo '<p>Er is een betaling aangemaakt voor <b>€ '.number_format($transaction['amount']/100, 2, ', ', '.').'</b> met als beschrijving <b>'.$transaction['description'].'</b>.</p>';
if($testmode)
{
curl_setopt($ch, CURLOPT_URL, "http://www.mollie.nl/xml/ideal?a=banklist&testmode=true");
}else{
curl_setopt($ch, CURLOPT_URL, "http://www.mollie.nl/xml/ideal?a=banklist");
}
$xml = new SimpleXMLElement(curl_exec($ch));
echo '<form method="post" action="?action=redirect&payment_id='.$payment_id.'">';
echo '<label for="bank_id">Uw bank:</label><br />';
echo '<select name="bank_id">';
foreach($xml->bank as $bank)
{
echo '<option value="'.$bank->bank_id.'">'.$bank->bank_name.'</option>';
}
echo '</select>';
echo '<input type="submit" name="verwerken" value="Verwerken"/>';
echo '</form>';
}else{
echo '<p>Sorry, deze transactie is reeds betaald!</p>';
}
break;
case 'redirect':
if($transaction['paid'] == 0)
{
if($_SERVER['REQUEST_METHOD'] == "POST")
{
if(!empty($_POST['bank_id']) && ctype_digit($_POST['bank_id']))
{
curl_setopt($ch, CURLOPT_URL, "http://www.mollie.nl/xml/ideal?a=fetch&partnerid=".$partnerID."&description=".urlencode($transaction['description'])."&reporturl=".urlencode($url.'?action=report&payment_id='.$payment_id)."&returnurl=".urlencode($url.'?action=return&payment_id='.$payment_id)."&amount=".$transaction['amount']."&bank_id=".$_POST['bank_id']."");
$xml = new SimpleXMLElement(curl_exec($ch));
if($xml->order->amount == $transaction['amount'])
{
$query = "UPDATE payments SET transaction_id = '".$xml->order->transaction_id."' WHERE payment_id = '".$payment_id."'";
$result = mysql_query($query);
if($result && mysql_affected_rows() == 1)
{
header('Location: '.$xml->order->URL);
}else{
echo '<p>Sorry, er is iets mis gegaan met het updaten van de database!</p>';
}
}else{
echo '<p>Sorry, er is iets mis gegaan met de aanvraag van deze betaling!</p>';
}
}else{
echo '<p>Sorry, er word een bank_id verwacht en deze dient numeriek te zijn!</p>';
}
}
}else{
echo '<p>Sorry, deze transactie is reeds betaald!</p>';
}
break;
case 'report':
if(in_array($_SERVER['REMOTE_ADDR'], $ipadresses))
{
if(!empty($_GET['transaction_id']) && ctype_alnum($_GET['transaction_id']))
{
if($testmode)
{
curl_setopt($ch, CURLOPT_URL, "http://www.mollie.nl/xml/ideal?a=check&partnerid=".$partnerID."&transaction_id=".$_GET['transaction_id']."&testmode=true");
}else{
curl_setopt($ch, CURLOPT_URL, "http://www.mollie.nl/xml/ideal?a=check&partnerid=".$partnerID."&transaction_id=".$_GET['transaction_id']."");
}
$xml = new SimpleXMLElement(curl_exec($ch));
if((string) $xml->order->payed == 'true')
{
$query = "UPDATE payments SET paid = 1 WHERE payment_id = '".$payment_id."' AND transaction_id = '".mysql_real_escape_string($_GET['transaction_id'])."'";
$result = mysql_query($query);
}
}
}
break;
case 'return':
if(!empty($_GET['transaction_id']) && ctype_alnum($_GET['transaction_id']))
{
$query = "SELECT paid FROM payments WHERE payment_id = '".$payment_id."' AND transaction_id = '".mysql_real_escape_string($_GET['transaction_id'])."' AND paid = 1";
$result = mysql_query($query);
if($result && mysql_num_rows($result) == 1)
{
echo '<p>Gelukt! De betaling is succesvol ontvangen!</p>';
$select = mysql_query("SELECT * FROM config");
$regel = mysql_fetch_array($select);
$Amail = $regel['Email'];
$website = str_replace('www.', '', $_SERVER['HTTP_HOST']);
$vanwie = str_replace('www.', 'noreply@', $_SERVER['HTTP_HOST']);
// Mail versturen
$aan = $Amail;
$onderwerp = "Nieuwe order op ".$website." geplaatst!";
$bericht = "Beste,<br /><br />Er is een nieuwe betaling gedaan op ".$website." met de volgende gegevens:<br />
<br />Naam:".$_POST["naam"]."<br />
Adres:".$_POST["adres"]."<br />
Postcode:".$_POST["postcode"]."<br />
Woonplaats:".$_POST["woonplaats"]."<br />
Telefoonnummer:".$_POST["telefoon"]."<br />
E-mailadres:".$_POST["email"]."<br />
Land:".$_POST["land"]."<br />
Opmerking door klant:".$_POST["opmerking"]."<br />
Betaalmethode:".$_POST["betaalmethode"]."<br />
Aantal producten:".$_POST["aantal"]."<br />
Betaald bedrag:".$_POST["betaaldbedrag"]."<br />
<br />Met vriendelijke groet,<br /><br />".$website;
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
$headers .= "From: ".$vanwie." \r\n";
mail($aan, $onderwerp, $bericht, $headers);
}else{
echo '<p>Sorry, de betaling is niet succesvol ontvangen!</p>';
}
}else{
echo '<p>Sorry, er word een transaction_id verwacht en deze dient alphanumeriek te zijn!</p>';
}
break;
default:
echo 'Sorry, deze actie word niet herkend!';
break;
}
}else{
echo '<p>Sorry, er word een actie verwacht!</p>';
}
}else{
echo '<p>Sorry, dit payment_id bestaat niet!</p>';
}
}else{
// echo '<p>Sorry, er word een payment_id verwacht en deze dient alphanumeriek te zijn!</p>';
$code = md5(rand(000000,999999).microtime());
$select = mysql_query("SELECT * FROM config");
$regel = mysql_fetch_array($select);
$Omschrijving = $regel['Omschrijving'];
$Bedrag = $regel['Prijs'] * $_POST['aantal'];
$Verzendkosten = $regel['Verzendkosten'];
$Prijs = $Bedrag + $Verzendkosten;
$query = "INSERT INTO payments (payment_id, amount, description, ipadress) VALUES ('".$code."', ".$Prijs.", '".$Omschrijving."', '".$_SERVER['REMOTE_ADDR']."')";
$result = mysql_query($query);
if($result && mysql_affected_rows() == 1)
{
header('Location: '.$url.'?action=start&payment_id='.$code.'');
}
}
}else{
echo '<p>Sorry, er kon geen verbinding gemaakt worden met de database!</p>';
}
}else{
echo '<p>Sorry, er kon geen verbinding gemaakt worden met de databaseserver!</p>';
}
curl_close($ch);
?>
Als jij daar beter van wordt Karl, mag je hiermee het hele forum volspammen :)
Henk Schepers op 12/04/2011 17:14:28:
Als jij daar beter van wordt Karl, mag je hiermee het hele forum volspammen :)
Ik plaats het hier omdat jij het weggehaald hebt. Zie ook TJBV. Die geeft ook uitleg waarom dat slecht is.
Henk jij wilt toch ook graag geholpen worden waarom mogen andere hier niet nog eens wat aan hebben vieze ego!