IDEAL betaling met gebruik van cookies

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Donald Boers

Donald Boers

23/09/2015 11:38:04
Quote Anchor link
Voor een online shop heb ik een pagina waar een klant haar/zijn n.a.w. gegevens dient in te vullen. Wanneer de klant het formulier verstuurd zet ik cookies voor de klant_id en naam en gaan deze gegevens de database in. Dit is de code voor de insert en het zetten van de cookies
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
$client_id      = $this->client;
$naam           = filter_input(INPUT_POST, 'naam', FILTER_SANITIZE_STRING);
$adres          = filter_input(INPUT_POST, 'adres', FILTER_SANITIZE_STRING);
$postcode       = filter_input(INPUT_POST, 'postcode', FILTER_SANITIZE_STRING);
$woonplaats     = filter_input(INPUT_POST, 'woonplaats', FILTER_SANITIZE_STRING);
$email          = filter_input(INPUT_POST, 'email', FILTER_SANITIZE_STRING);
$telefoon       = filter_input(INPUT_POST, 'telefoon', FILTER_SANITIZE_STRING);
        
setcookie ("client_id", $client_id);
setcookie ("client_naam", $naam);

if ($client_id && $naam && $adres && $postcode && $woonplaats && $email)
{
    $this->shop->klant_toevoegen($client_id,$naam,$adres,$postcode,$woonplaats,$email,$telefoon);
                    
}

waarna de klant naar IDEAL wordt door gestuurd om the bestelling af te ronden. Zover heb ik nog geen probleem. Nadat de betaling succesvol is afgehandeld wordt de klant terug geleid naar de website en dit is het punt waar ik problemen ondervindt want ik krijg fout meldingen voor de zojuist gezette cookies. Dit is wat ik heb voor die pagina
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
$client_id      = $_COOKIE['client_id'];
$naam           = $_COOKIE['client_naam'];    

$klant_gegevens = $this->shop->get_klant_gegevens($client_id);
$cart_items     = $this->shop->get_cart_items($client_id);

Wat doe ik hier fout of zie ik over het hoofd?

Bij voorbaat dank.
Gewijzigd op 23/09/2015 11:43:56 door Donald Boers
 
PHP hulp

PHP hulp

22/11/2024 05:53:36
 
- SanThe -

- SanThe -

23/09/2015 11:47:44
Quote Anchor link
Donald Boers op 23/09/2015 11:38:04:
... want ik krijg fout meldingen voor de zojuist gezette cookies.


Welke?
 
Donald Boers

Donald Boers

23/09/2015 12:06:17
Quote Anchor link
De volgende:

Notice: Undefined index: client_id in /home/veldhovenfoto/domains/vanveldhovenfotografie.nl/private/includes/classes/Controller/Shop.php on line 309

Notice: Undefined index: client_naam in /home/veldhovenfoto/domains/vanveldhovenfotografie.nl/private/includes/classes/Controller/Shop.php on line 310
 
Ivo P

Ivo P

23/09/2015 12:09:08
Quote Anchor link
is het niet handiger om de klant naar Mollie (?) te sturen met een ordernummer of iets dergelijks, waarna je van Mollie bij de bevestigings aanroep ook dat nummer krijgt,
en als de klant terug komt op je site je wederom dat nummer gebruikt om te zien welke order er bij betrokken was?

Los daarvan:
redirect je de gebruiker naar Mollie in hetzelfde script als waarin je de cookies zet?

Kan zo maar zijn dat dan de header voor de cookies dan niet aankomt als je een header-location: gebruikt.
 
Donald Boers

Donald Boers

23/09/2015 12:17:41
Quote Anchor link
Hi Ivo. Bedankt voor de reactie. Nee dit gaat over een andere website waarbij rechtstreeks met de bank in kwestie (ING) wordt gecommuniceerd.
 
- SanThe -

- SanThe -

23/09/2015 12:18:14
Quote Anchor link
Na het setten van een cookie moet de pagina ververst worden om de cookies uit te kunnen lezen.

Van php.net:
Quote:
Once the cookies have been set, they can be accessed on the next page load with the $_COOKIE array.
 
Randy vsf

Randy vsf

23/09/2015 12:20:22
Quote Anchor link
- SanThe - op 23/09/2015 12:18:14:
Na het setten van een cookie moet de pagina ververst worden om de cookies uit te kunnen lezen.

Van php.net:
Quote:
Once the cookies have been set, they can be accessed on the next page load with the $_COOKIE array.


waarna de klant naar IDEAL wordt door gestuurd om the bestelling af te ronden. Zover heb ik nog geen probleem. Nadat de betaling succesvol is afgehandeld wordt de klant terug geleid naar de website

Dat is dus al het geval. Staan cookies wel aan in de browser? :P
 
Donald Boers

Donald Boers

23/09/2015 12:21:45
Quote Anchor link
Hi San The bedankt voor de reactie. Wat is de link?
 
Randy vsf

Randy vsf

23/09/2015 12:36:18
Quote Anchor link
Donald Boers op 23/09/2015 12:21:45:
Hi San The bedankt voor de reactie. Wat is de link?


Hier is de link, KLik
Gewijzigd op 23/09/2015 12:36:40 door Randy vsf
 
Donald Boers

Donald Boers

24/09/2015 11:25:45
Quote Anchor link
Ik weet niet wat er fout gaat maar ik krijg het niet voor elkaar om de waarde van de cookie op te halen in de returnURL van IDEAL. Ik heb het ook geprobeerd met een session var

In de registratie pagina heb ik dit
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$this->session->set('client_id', $client_id);


en in de returnURL
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$client_id      = $this->session->get('client_id');


Ik blijf een NULL value terug krijgen. Wat kan ik doen?
Gewijzigd op 24/09/2015 11:28:40 door Donald Boers
 
Thomas van den Heuvel

Thomas van den Heuvel

24/09/2015 13:59:24
Quote Anchor link
Je hebt geen pad opgegeven bij het setten van de cookies (4e parameter van setcookie). Het pad geeft aan in welke directory het cookie geldig is.

Als je je cookie set in www.jesite.com/shop/whatever.php en vervolgens terugkeert in www.jesite.com/verwerk_betaling.php dan gaat dit niet werken. Het maakt hierbij niet uit of de directory "virtueel" is (door middel van URL-rewriting tot stand komt) of niet.

Om een cookie op je hele (sub)domein geldig te laten zijn moet je het pad expliciet instellen op "/". Voor de lifetime van de cookie zou je "0" op kunnen geven (geldig tot het einde van de sessie, dat wil zeggen, totdat je je browser sluit).

Verder zou ik sterk overwegen om dit soort informatie op te slaan in een sessie ($_SESSION) en van HTTPS gebruik te maken (als je dat al niet deed - en als je dat al doet - setcookie heeft ook een secure-flag (6e parameter)).

Als je al van sessies gebruik maakte zou je kunnen proberen deze voor schrijven te sluiten voordat je redirect. Controleer ook of je uberhaupt een sessie had gestart (bij zowel wegschrijven als ophalen van gegevens).
 
Ivo P

Ivo P

24/09/2015 14:23:37
Quote Anchor link
en is de domeinnaam gelijk?

een cookie voor shop.nl is niet (per se) ook bekend in www.shop.nl
 
Ward van der Put
Moderator

Ward van der Put

24/09/2015 15:02:33
Quote Anchor link
Stap van die cookies af. Voor betaaltransacties zijn ze te onbetrouwbaar (omdat cookies kunnen worden geweigerd) en onveilig (omdat ze kunnen worden gemanipuleerd). Dit is de enige juiste methode:
Ivo P op 23/09/2015 12:09:08:
is het niet handiger om de klant naar Mollie (?) te sturen met een ordernummer of iets dergelijks, waarna je van Mollie bij de bevestigings aanroep ook dat nummer krijgt,
en als de klant terug komt op je site je wederom dat nummer gebruikt om te zien welke order er bij betrokken was?

Voor de return-URL heb je vervolgens drie mogelijkheden:

• Je voegt bij de redirect een unieke transactie-ID toe aan de return-URL, zodat je die bij de return uit $_GET kunt halen.

• Beter: je voert op de return-URL een callback uit die controleert of er daadwerkelijk is betaald. Zolang je niet bij de PSP of bank zelf verifieert of de transactie is geslaagd, is elk systeem dat alleen werkt met requests of cookies in requests te hacken.

• Nog beter: je laat de PSP of bank de transactiestatus melden via een geheime report-URL. Dan mis je geen betalingen als de klant de iDEAL-transactie afsluit bij de bank en niet terugkeert naar de return-URL. Dat gebeurt namelijk veelvuldig.
 
Ivo P

Ivo P

24/09/2015 15:14:36
Quote Anchor link
En op die "geheime report url", die ik met de bevestigings-aanroep bedoelde, is sowieso geen mogelijkheid om een cookie of session te gebruiken: dat is dan immers niet de browser van de klant die de aanroep doet, maar het script van de payment provider.
 



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.