response url ideal rabobank werkt niet goed

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Bas de jong

Bas de jong

11/01/2013 18:56:46
Quote Anchor link
ik heb een script waarmee je een betaling aan de bank kan doen via ideal
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)
PHP script in nieuw venster Selecteer het PHP script
1
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";
?>


mvg bas
 
PHP hulp

PHP hulp

22/11/2024 10:28:36
 
Ward van der Put
Moderator

Ward van der Put

11/01/2013 19:15:29
Quote Anchor link
Dat lijkt op een "known issue": sommige banken kunnen maar één variabele in de return-URL aan.

Let daarom op hoe je die variabelen verpakt in de return-URL en hoe je die vervolgens weer uitpakt.
 
Bas de jong

Bas de jong

11/01/2013 19:20:05
Quote Anchor link
ik heb geen variabelen in de return url zitten het is gewoon een statisch adres
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)
 
Ward van der Put
Moderator

Ward van der Put

11/01/2013 19:25:23
Quote Anchor link
Bas de jong op 11/01/2013 19:20:05:
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)
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.
 
Bas de jong

Bas de jong

11/01/2013 19:27:12
Quote Anchor link
ik werk vanuit een frame op een html pagina missch dat ik daarom problemen heb

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
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

11/01/2013 19:42:58
Quote Anchor link
Het is enige tijd geleden dat ik de ideal handleiding heb gelezen, waar volgens mij mag je de betaal pagina van de bank niet in een frame oproepen.
Je moet trouwens ook niet met sessies werken in dit soort situaties, maar de status van de transacties in de db bijhouden.
 
Bas de jong

Bas de jong

11/01/2013 19:48:44
Quote Anchor link
hm ok dus je bedoeld dat ik sowieso bestellingen op moet slaan in de db en daarna de betaalstatus moet controleren ofzo

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
 
Niels K

Niels K

11/01/2013 19:51:24
Quote Anchor link
Wordt er gebruik gemaakt van een PSP of is het een directe koppeling met de Bank?

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
 
Bas de jong

Bas de jong

11/01/2013 19:53:53
Quote Anchor link
ik maak gebruik van de normal return url voor een net berichtje dat de betaling voltooid is
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
 
Niels K

Niels K

11/01/2013 20:01:33
Quote Anchor link
Hoi Bas,

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
 
Bas de jong

Bas de jong

11/01/2013 20:01:59
Quote Anchor link
het is trouwens een directe koppeling met de rabo omnikassa

Toevoeging op 11/01/2013 20:06:19:

hier een voorbeeldje
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
<?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: &euro;'.number_format($totaal, 2).''; ?>  -->Ga naar kassa">
</form>
<p/>
<?php
?>
Gewijzigd op 11/01/2013 20:08:27 door Niels K
 
Ward van der Put
Moderator

Ward van der Put

11/01/2013 20:18:03
Quote Anchor link
FF snel: regel 22 met value= gevolgd door een spatie maar zonder "..."?
 
Niels K

Niels K

11/01/2013 20:18:06
Quote Anchor link
Hoi Bas,

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)
PHP script in nieuw venster Selecteer het PHP script
1
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, '', '&')

?>


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
 
Bas de jong

Bas de jong

11/01/2013 20:24:46
Quote Anchor link
Ok ik zal voortaan taaltechnisch wat betere uitleg geven.(zit al de hele middag te rommellen)
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..
 
Bas de jong

Bas de jong

13/01/2013 20:02:16
Quote Anchor link
ik heb het opgelost
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)
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
<?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);
    }


?>

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.
 



Overzicht Reageren

 
 

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.