formulier met iDeal?
Ik ben op zoek naar een formulier met een soort ingebouwde iDeal/betaal functie.
Het idee is dat mensen een formulier kunnen invoeren en deze pas kunnen versturen nadat er een bepaald bedrag is betaald met iDeal.
Weet iemand waar ik zoiets kan vinden?
Alvast enorm bedankt voor je tijd.
Vriendelijk Groet.
wz
ik kan een beetje php qua editen maar om het zelf te schrijven heb ik niet de skills, dus vandaar dat ik wel een voorbeelde kan gebruiken;-)
mvg
Hoe zie je dat voor je?
Nou het betreft een formulier voor een vertaalbureau.
mensen kunnen een tekst opgeven die vertaald moet worden en als ze hem willen versturen, moeten ze eerst afrekenen alvorens het formulier daadwerkelijk verstuurd wordt.
Kan je me bij zoiets helpen of heb je een voorbeeldje?
mvg.
Gewijzigd op 01/01/1970 01:00:00 door rob Tel
-- edit --
hoe wordt de prijs bepaald? Per woord? Of per tekst?
Gewijzigd op 01/01/1970 01:00:00 door Martijn Wieringa
Prijs wordt bepaald per ingevoerd woord + een vast starttarief
Ik heb zo'n script niet liggen, en een dergelijk script kost veel tijd om te maken; dus als jij er geld mee verdient verwacht ik ook een (kleine) vergoeding van mijn tijd?
mvg
Wat heb je er voor over?
mvg
Als je aan een klein opzetje genoeg hebt kost het niets.. als je een volledig uitgewerkt script verwacht € 75,00
dus als je me een beetje op weg zou kunnen helpen dan zou je me enorm helpen.
mvg
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
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
<?php
include('ideal.cfg.php');
include('ideal.cls.php');
$html = '';
if(isset($_GET['trxid']) && isset($_GET['ec']))
{
$sTransactionId = $_GET['trxid'];
$sEntranceCode = $_GET['ec'];
// Lookup order using TransactionID and EntranceCode.
// ...
$oStatusRequest = new StatusRequest();
$oStatusRequest->setTransactionId($sTransactionId);
$sTransactionStatus = $oStatusRequest->doRequest(); // Possible status: SUCCESS, CANCELLED, FAILURE, OPEN or EXPIRED
if($oStatusRequest->hasErrors())
{
die('Error in iDEAL Status Request');
}
else
{
// Update order status in database
// ...
if(strcasecmp($sTransactionStatus, 'SUCCESS') === 0)
{
// Send e-mail to webmaster & customer to confirm order
// ...
$html = '<p>Uw betaling is met succes ontvangen. Uw bestelling wordt zo spoedig mogelijk in behandeling genomen.</p>';
}
else
{
// Cancel order
// ...
$html = '<p>U betaling is (nog) niet ontvangen, en heeft als status "' . $sTransactionStatus . '".<br><br><a href="index.php">Start uw aanrvaag opnieuw.</a></p>';
}
$_CORE['rsPage']['page_title'] = 'Afrekenen met iDEAL';
$_CORE['rsPage']['content'] = $html;
}
}
elseif(isset($_POST['text']) && isset($_POST['issuer_id'])) // Start transaction
{
$sText = $_POST['text'];
$iWordCount = countWords($sText);
$sOrderId = 'REF_' . rand(1000000, 9999999);
$sOrderDescription = 'Order: ' . $sOrderId;
$fOrderPrice = 9.99 + (0.075 * $iWordCount);
$sIssuerId = $_POST['issuer_id'];
$sEntranceCode = sha1($sOrderId . '_' . rand(1000000, 9999999));
$oTransactionRequest = new TransactionRequest();
$oTransactionRequest->setOrderId($sOrderId);
$oTransactionRequest->setOrderDescription($sOrderDescription);
$oTransactionRequest->setOrderAmount($fOrderPrice);
$oTransactionRequest->setIssuerId($sIssuerId);
$oTransactionRequest->setEntranceCode($sEntranceCode);
$oTransactionRequest->setReturnUrl('http://www.php-solutions.nl/projects/ideal-form/index.php');
$sTransactionId = $oTransactionRequest->doRequest();
if($oTransactionRequest->hasErrors())
{
die('Error in iDEAL Transaction Request');
}
else
{
// Save order data, TransactionID and EntranceCode in database
// ...
$oTransactionRequest->doTransaction();
}
}
else // Load form
{
$oIssuerRequest = new IssuerRequest();
$aIssuerList = $oIssuerRequest->doRequest();
$sIssuerOptions = '';
if($oIssuerRequest->hasErrors())
{
die('Error in iDEAL Issuer Request');
}
else
{
foreach($aIssuerList as $k => $v)
{
$sIssuerOptions .= '<option value="' . $k . '">' . htmlentities($v) . '</option>';
}
}
$html .= '<form action="" method="post">
<table border="1" cellpadding="3" cellspacing="0">
<tr>
<td width="150">Uw tekst</td>
<td><textarea name="text" cols="80" rows="12" onkeyup="javascript: calcPrice(this.value);" onblur="javascript: calcPrice(this.value);"></textarea></td>
</tr>
<tr>
<td>Woorden</td>
<td><input id="count" disabled="disabled" value="0"></td>
</tr>
<tr>
<td>Bedrag</td>
<td><input id="price" disabled="disabled" value="9.99"></td>
</tr>
<tr>
<td>Uw bank</td>
<td><select name="issuer_id">' . $sIssuerOptions . '</select></td>
</tr>
<tr>
<td> </td>
<td><input type="submit" value="verzenden"></td>
</tr>
</table>
</form>
<script type="text/javascript">
function calcPrice(f_string)
{
var iWordCount = countWords(f_string);
document.getElementById(\'count\').value = iWordCount;
document.getElementById(\'price\').value = (Math.round((9.99 + (0.075 * iWordCount)) * 100) / 100);
}
function countWords(f_string)
{
var re = /([a-z][^\s]+)/gi;
var a = f_string.match(re);
return a.length;
}
</script>';
}
echo $html;
// General functions
function countWords($sText)
{
$aWords = array();
preg_match_all('/([a-z][^\\s]+)/i', $sText, $aWords);
return sizeof($aWords[0]);
}
?>
include('ideal.cfg.php');
include('ideal.cls.php');
$html = '';
if(isset($_GET['trxid']) && isset($_GET['ec']))
{
$sTransactionId = $_GET['trxid'];
$sEntranceCode = $_GET['ec'];
// Lookup order using TransactionID and EntranceCode.
// ...
$oStatusRequest = new StatusRequest();
$oStatusRequest->setTransactionId($sTransactionId);
$sTransactionStatus = $oStatusRequest->doRequest(); // Possible status: SUCCESS, CANCELLED, FAILURE, OPEN or EXPIRED
if($oStatusRequest->hasErrors())
{
die('Error in iDEAL Status Request');
}
else
{
// Update order status in database
// ...
if(strcasecmp($sTransactionStatus, 'SUCCESS') === 0)
{
// Send e-mail to webmaster & customer to confirm order
// ...
$html = '<p>Uw betaling is met succes ontvangen. Uw bestelling wordt zo spoedig mogelijk in behandeling genomen.</p>';
}
else
{
// Cancel order
// ...
$html = '<p>U betaling is (nog) niet ontvangen, en heeft als status "' . $sTransactionStatus . '".<br><br><a href="index.php">Start uw aanrvaag opnieuw.</a></p>';
}
$_CORE['rsPage']['page_title'] = 'Afrekenen met iDEAL';
$_CORE['rsPage']['content'] = $html;
}
}
elseif(isset($_POST['text']) && isset($_POST['issuer_id'])) // Start transaction
{
$sText = $_POST['text'];
$iWordCount = countWords($sText);
$sOrderId = 'REF_' . rand(1000000, 9999999);
$sOrderDescription = 'Order: ' . $sOrderId;
$fOrderPrice = 9.99 + (0.075 * $iWordCount);
$sIssuerId = $_POST['issuer_id'];
$sEntranceCode = sha1($sOrderId . '_' . rand(1000000, 9999999));
$oTransactionRequest = new TransactionRequest();
$oTransactionRequest->setOrderId($sOrderId);
$oTransactionRequest->setOrderDescription($sOrderDescription);
$oTransactionRequest->setOrderAmount($fOrderPrice);
$oTransactionRequest->setIssuerId($sIssuerId);
$oTransactionRequest->setEntranceCode($sEntranceCode);
$oTransactionRequest->setReturnUrl('http://www.php-solutions.nl/projects/ideal-form/index.php');
$sTransactionId = $oTransactionRequest->doRequest();
if($oTransactionRequest->hasErrors())
{
die('Error in iDEAL Transaction Request');
}
else
{
// Save order data, TransactionID and EntranceCode in database
// ...
$oTransactionRequest->doTransaction();
}
}
else // Load form
{
$oIssuerRequest = new IssuerRequest();
$aIssuerList = $oIssuerRequest->doRequest();
$sIssuerOptions = '';
if($oIssuerRequest->hasErrors())
{
die('Error in iDEAL Issuer Request');
}
else
{
foreach($aIssuerList as $k => $v)
{
$sIssuerOptions .= '<option value="' . $k . '">' . htmlentities($v) . '</option>';
}
}
$html .= '<form action="" method="post">
<table border="1" cellpadding="3" cellspacing="0">
<tr>
<td width="150">Uw tekst</td>
<td><textarea name="text" cols="80" rows="12" onkeyup="javascript: calcPrice(this.value);" onblur="javascript: calcPrice(this.value);"></textarea></td>
</tr>
<tr>
<td>Woorden</td>
<td><input id="count" disabled="disabled" value="0"></td>
</tr>
<tr>
<td>Bedrag</td>
<td><input id="price" disabled="disabled" value="9.99"></td>
</tr>
<tr>
<td>Uw bank</td>
<td><select name="issuer_id">' . $sIssuerOptions . '</select></td>
</tr>
<tr>
<td> </td>
<td><input type="submit" value="verzenden"></td>
</tr>
</table>
</form>
<script type="text/javascript">
function calcPrice(f_string)
{
var iWordCount = countWords(f_string);
document.getElementById(\'count\').value = iWordCount;
document.getElementById(\'price\').value = (Math.round((9.99 + (0.075 * iWordCount)) * 100) / 100);
}
function countWords(f_string)
{
var re = /([a-z][^\s]+)/gi;
var a = f_string.match(re);
return a.length;
}
</script>';
}
echo $html;
// General functions
function countWords($sText)
{
$aWords = array();
preg_match_all('/([a-z][^\\s]+)/i', $sText, $aWords);
return sizeof($aWords[0]);
}
?>
Voorbeeldje: http://www.php-solutions.nl/projects/ideal-form/
Alle code downloaden: http://www.php-solutions.nl/projects/ideal-form/script.zip
graag je reactie;)
- klant ziet artikel
- klant kiest aantal
- klant klikt op kopen
- klant krijgt formulier voor adres / aflever gegevens
- klant moet accoord gaan met voorwaarden (anders geen betaal mogelijkheid)
- klant krijgt betaal mogelijkheid
- klant heeft betaald, bedankt scherm en gegevens / bestelling worden verzonden.
(klant betaald niet, melding niet betaald, auto redirect naar eerste pagina)
mvg
mijn mollie iDEAL implementatie gebruikt hoef je eigenlijk alleen maar een simpele query in de database te plaatsen met een bedrag en korte omschrijving.
De rest is gewoon wat eenvoudige HTML formulierwerk en een simpele query. En als je slim bent zet je die producten met een 'datum' in de DB zodat je niet iedere dag een product hoeft toe te voegen.
Milcoi, wat is precies jouw vraag? Of zoek je iemand om het te maken? Het is werkelijk geen lastig probleem, als je Code (php)
1
2
3
2
3
<?php
$query = "INSERT INTO payments (payment_id, amount, description, ipadress) VALUES ('".$code."', ".rand(1000,2500).", 'Dit is een omschrijving!', '".$_SERVER['REMOTE_ADDR']."')";
?>
$query = "INSERT INTO payments (payment_id, amount, description, ipadress) VALUES ('".$code."', ".rand(1000,2500).", 'Dit is een omschrijving!', '".$_SERVER['REMOTE_ADDR']."')";
?>
De rest is gewoon wat eenvoudige HTML formulierwerk en een simpele query. En als je slim bent zet je die producten met een 'datum' in de DB zodat je niet iedere dag een product hoeft toe te voegen.
Pholeron ik hoor niks van je?
eventueel iemand anders die het kan maken? zoja prijsindicatie?
mvg.
Als je wilt dat iemand het voor je gaat maken had je er een vacature van moeten vragen, maargoed. Hoeveel heb je er voor over? Anders wil ik wel even wat maken.