IDEAL betaling met gebruik van cookies
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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);
}
$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)
1
2
3
4
5
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);
$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
Donald Boers op 23/09/2015 11:38:04:
... want ik krijg fout meldingen voor de zojuist gezette cookies.
Welke?
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
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.
Hi Ivo. Bedankt voor de reactie. Nee dit gaat over een andere website waarbij rechtstreeks met de bank in kwestie (ING) wordt gecommuniceerd.
Van php.net:
Quote:
Once the cookies have been set, they can be accessed on the next page load with the $_COOKIE array.
- 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:
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
Hi San The bedankt voor de reactie. Wat is de 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
In de registratie pagina heb ik dit
en in de returnURL
Ik blijf een NULL value terug krijgen. Wat kan ik doen?
Gewijzigd op 24/09/2015 11:28:40 door Donald Boers
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 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?
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.
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.