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

$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

$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.
en is de domeinnaam gelijk?

een cookie voor shop.nl is niet (per se) ook bekend in www.shop.nl
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.

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.

Reageren