response url ideal rabobank werkt niet goed
de bank geeft je de mogelijkheid om een handmatige en een automatische respons te krijgen
ik heb gekozen voor de automatische response
echter het probleem dat ik heb is dat als het script 'paymentok.php' aangesproken wordt via de autoresponse url van de bank ALLE SESSIEVARIABELEN niet in het script beschikbaar zijn voor de functies
echter als ik het script gewoon via mijn webbrowser aanspreek werkt alles perfect.
weet niet hoe ik dit nu aan moet pakken ik zit de hele middag al te !$%#@$%^^&&&
Code (php)
1
2
3
2
3
<?php
$Data="amount=$bedrag|currencyCode=978|merchantId=002020000000001|normalReturnUrl=http://www.website.nl/terug.php|keyVersion=1|automaticResponseUrl=http://www.website.nl/payment_ok.php|transactionReference=$factuur_sleutel";
?>
$Data="amount=$bedrag|currencyCode=978|merchantId=002020000000001|normalReturnUrl=http://www.website.nl/terug.php|keyVersion=1|automaticResponseUrl=http://www.website.nl/payment_ok.php|transactionReference=$factuur_sleutel";
?>
mvg bas
Let daarom op hoe je die variabelen verpakt in de return-URL en hoe je die vervolgens weer uitpakt.
ik kan de $_POST['Data'] van de bank bijv ook gewoon naar het scherm echo'en
echter als ik het script met sessievariabelen aan de gang wil laten gaan zijn ze niet beschikbaar.
dit alles terwijl de sessie nog niet is afgesloten en alles dus nog gewoon bescikbaar hoort te zijn
dus als ik het script zelf activeer werkt het wel ,maar als het script door de bank geactiveerd wordt
ben ik de sessievariabelen kwijt(of ik doe iets fout met includen ofzo)
Bas de jong op 11/01/2013 19:20:05:
Maar de bank heeft ook geen sessie op je server. En al helemaal nooit dezelfde sessie als een andere gebruiker (jij). Het ligt dus vermoedelijk aan de afhandeling van de respons vanaf de bank: daar moet je de fout zoeken.dus als ik het script zelf activeer werkt het wel ,maar als het script door de bank geactiveerd wordt
ben ik de sessievariabelen kwijt(of ik doe iets fout met includen ofzo)
ben ik de sessievariabelen kwijt(of ik doe iets fout met includen ofzo)
Toevoeging op 11/01/2013 19:29:39:
als ik puur het adres van het script in de browser typ krijg ik wel mijn sessievariabelenn te zien maar niet de geposte data van de bank, maar datkomt missch omdat ik het frame verlaat
ik denk dat ik beter zonder frame kan gaan werken
ik ga het even proberen zonder frame
Je moet trouwens ook niet met sessies werken in dit soort situaties, maar de status van de transacties in de db bijhouden.
Toevoeging op 11/01/2013 19:49:44:
eerste keer dat ik met een winkel bezig ben dus als je op dit punt een goed advies voor me hebt hoor ik dat heel graag van je.
ben nog niet zo ervaren
Ik heb nog niet scherp welke URL jij precies bedoeld. Is het de:
Return url.
Wordt aangeroepen wanneer een gebruiker op jouw site terugkomt. Dat kan doordat de betaling gelukt is of dat de gebruiker de betaling afgebroken heeft.
Postback url.
Wordt aangeroepen wanneer de status van een betaling in eerst instantie nog niet duidelijk is. Dat kan zijn doordat een gebruiker de browser na het betaling heeft afgesloten of dat de bank vertraging heeft met het verwerken van de betaling.
Gr,
Niels
de autoreturnurl wordt alleen geactiveerd als er een succesvolle betaling is gewwest bij de bank
beide urls retourneren post data als je dat nodig hebt
Toevoeging op 11/01/2013 19:59:29:
ik kan gewoon niet bedenken waarom het script dat de betalingsgegevens verwerkt wel werkt als ik hem zelf activeer en dat hij niet meer werkt als hij door de bankserver geactiveerd wordt
Allereerst raad ik je aan om een Payment Service Provider (PSP) te kiezen.
Waarom precies een PSP?
- Voordelige transactiekosten. (Nemen op grote schaal transacties af)
- Vele betaalmethoden.
- Financiële ondersteuning
- PSP is verantwoordelijk voor de betalingen. Jij krijgt dus altijd je geld.
- Vele standaard scripts waardoor implementatie heel eenvoudig wordt.
Tot slot,
Kan je eens een voorbeeld van een return URL sturen?
Gr,
Niels
Toevoeging op 11/01/2013 20:06:19:
hier een voorbeeldje
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
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
<?php
$factuur_sleutel = $_SESSION['userid'].substr((time()),9);
// set factuursleutel voor dataveld omnikassa in sessievariabele
$_SESSION['factuurnummer'] = $factuur_sleutel;
// geef klantgegevens weer op basis van userid
customer_data($_SESSION['userid']);
// toon factuurgegevens met functie
factuurgegevens();
//
echo "<br>";
// hier set ik de variabelen voor het betaalverzoek aan de omnikassa
$totaal =$_SESSION['total'];
$bedrag=($totaal * 100);
$Data="amount=$bedrag|currencyCode=978|merchantId=002020000000001|normalReturnUrl=http://www.website.nl/bedankt.php|keyVersion=1|automaticResponseUrl=http://www.website.nl/verwerkfactuur.php|transactionReference=$factuur_sleutel";
$SecretKey="002020000000001_KEY1";
$hash= hash('sha256', ($Data.$SecretKey));
?>
<p>
<form method="post" action="https://payment-webinit.simu.omnikassa.rabobank.nl/paymentServlet">
<input type="hidden" name="Data" value= <?php echo $Data;?> >
<input type="hidden" name="InterfaceVersion" value="HP_1.0">
<input type="hidden" name="Seal" value= <?php echo $hash;?> >
<input type="submit" value="<?php echo 'Totaalbedrag: €'.number_format($totaal, 2).''; ?> -->Ga naar kassa">
</form>
<p/>
<?php
?>
$factuur_sleutel = $_SESSION['userid'].substr((time()),9);
// set factuursleutel voor dataveld omnikassa in sessievariabele
$_SESSION['factuurnummer'] = $factuur_sleutel;
// geef klantgegevens weer op basis van userid
customer_data($_SESSION['userid']);
// toon factuurgegevens met functie
factuurgegevens();
//
echo "<br>";
// hier set ik de variabelen voor het betaalverzoek aan de omnikassa
$totaal =$_SESSION['total'];
$bedrag=($totaal * 100);
$Data="amount=$bedrag|currencyCode=978|merchantId=002020000000001|normalReturnUrl=http://www.website.nl/bedankt.php|keyVersion=1|automaticResponseUrl=http://www.website.nl/verwerkfactuur.php|transactionReference=$factuur_sleutel";
$SecretKey="002020000000001_KEY1";
$hash= hash('sha256', ($Data.$SecretKey));
?>
<p>
<form method="post" action="https://payment-webinit.simu.omnikassa.rabobank.nl/paymentServlet">
<input type="hidden" name="Data" value= <?php echo $Data;?> >
<input type="hidden" name="InterfaceVersion" value="HP_1.0">
<input type="hidden" name="Seal" value= <?php echo $hash;?> >
<input type="submit" value="<?php echo 'Totaalbedrag: €'.number_format($totaal, 2).''; ?> -->Ga naar kassa">
</form>
<p/>
<?php
?>
Gewijzigd op 11/01/2013 20:08:27 door Niels K
FF snel: regel 22 met value= gevolgd door een spatie maar zonder "..."?
Allereerst even een tip.
Probeer taaltechnisch je berichten iets te verbeteren zodat het voor mij en anderen iets makkelijk te lezen valt ;-)
Maak je data een array en maak de url op basis van http_build_query ?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
<?php
// Klein voorbeeldje
$data = array(
'amount' => $bedrag
'currencyCode' => 978 // Wat is dit???
// etc
);
$url = http_build_query($data, '', '&')
?>
// Klein voorbeeldje
$data = array(
'amount' => $bedrag
'currencyCode' => 978 // Wat is dit???
// etc
);
$url = http_build_query($data, '', '&')
?>
Maar wat veel beter is, waarom maak je niet gebruik van de code die de Rabobank zelf beschikbaar heeft gesteld? Staat een hoop commentaar bij. Daarnaast een 'goede' handleiding dus wat dat betreft moet je een heel eind kunnen komen.
Zie deze link: http://www.rabobank.nl/bedrijven/producten/betalen_en_ontvangen/geld_ontvangen/rabo_omnikassa/webshopbouwers/#tab2
Gr,
Niels
Bedankt voor de link ik ga eens even op onderzoek uit.
In ieder geval bedankt ward en niels
Ik laat wel van me horen als het opgelost is en hoe ik dat gedaan heb
mvg bas
Toevoeging op 11/01/2013 20:27:16:
En ger van steenderen niet te vergeten..
zoals beloofd zal ik uitleggen hoe ik het nu doe
-bestellingen via de website worden sowieso opgeslagen in de database ovv order_id datum etc
-de $_POST data die ik van de return url en de report url krijg worden ook in de database opgeslagen
en de bestellingen worden verwerkt op basis van de transactie status.
ik had wat moeite met de opzet ,maar dankzij de link van niels ben ik er uit gekomen
ik heb de voorbeeldscripts van de rabobank gelezen en op advies van niels zet ik nu de post data in een array die ik vervolgens met de implode methode in een tabel plaats
hier een voorbeeld van de array
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
//sla de logdata op in de database
$transactiondata = array(
'received_datum' => date('d-m-Y, H:i:s'),
'transaction_reference' => $aOmniKassaResponse['transaction_reference'],
'transaction_status' => $aOmniKassaResponse['transaction_status'],
'transaction_id' => $aOmniKassaResponse['transaction_id'],
'order_id' => $aOmniKassaResponse['order_id'],
);
insert_transaction_data($transactiondata);
// en hier een voorbeeld van de functie die de array importeert in een tabel
function insert_transaction_data($transactiondata){
array_walk($transactiondata, 'array_sanitize');
$fields = '`' . implode('`, `', array_keys($transactiondata)) . '`';
$data = '\'' . implode('\', \'', $transactiondata) . '\'';
$string = "INSERT INTO `transactiondata_reporturl` ($fields) VALUES ($data)";
mysql_query($string);
}
?>
//sla de logdata op in de database
$transactiondata = array(
'received_datum' => date('d-m-Y, H:i:s'),
'transaction_reference' => $aOmniKassaResponse['transaction_reference'],
'transaction_status' => $aOmniKassaResponse['transaction_status'],
'transaction_id' => $aOmniKassaResponse['transaction_id'],
'order_id' => $aOmniKassaResponse['order_id'],
);
insert_transaction_data($transactiondata);
// en hier een voorbeeld van de functie die de array importeert in een tabel
function insert_transaction_data($transactiondata){
array_walk($transactiondata, 'array_sanitize');
$fields = '`' . implode('`, `', array_keys($transactiondata)) . '`';
$data = '\'' . implode('\', \'', $transactiondata) . '\'';
$string = "INSERT INTO `transactiondata_reporturl` ($fields) VALUES ($data)";
mysql_query($string);
}
?>
mvg bas
Toevoeging op 13/01/2013 20:15:02:
de reden dat ik mijn eigen code niet aan de gang kreeg in de report url=>
// Merk op dat dit script via een 'cronjob' door de webserver van de Rabobank wordt opgeroepen.
// Er kan niet geredirect worden, en code die u print wordt niet verwerkt door de de webserver.
je kan dus alleen met de $_POST['Data'] die je terugkrijgt van de bank werken
de rabobank scripts bevatten ook een omnikassa.cls
de variabelen die in deze clas een waarde krijgen zijn wel gewoon beschikbaar in de scripts
voor jullie missch gesneden koek maar ik ben zelf blij dat ik eruit ben wat er nou precies de reden van was dat het niet lukte.