Bonjour,
Je crée un site internet e-commerce avec paypal, en HTML/CSS et PHP. Mon site internet est un site ou l'utilisateur se connecte, rempli un formulaire avec un identifiant et un mot de passe, choisi les objets qu'il lui plait, les payent avec paypal. Mais lorsque je revient du Paypal Chekout, j'aimerai écrire 'Bonjour Dupont Antoine tu as bien acheter ce t-shirt précis'. Mon problème est que je n'arrive pas à récupérer les variables $SESSION créées dans une autre page.
Merci de votre aide
Voici ma page de retour du paypal checkout ( j'ai le même paypal.php que le tuto paypal checkout du site) Mais lorsque je fais mon echo SESSION['Nom']
rien ne s'affiche :
<div class="saluteleve">
<h1>
Votre achat s'est bien passé ! <?php echo $_SESSION['Nom'];?> Vous recevrez un email confirmant votre achat.
<br/>
</h1>
</div>
Alors que j'ai enregistrer cette variable lors d'un formulaire
Est-ce que cette page commence bien par un session_start() ?
Qu'est ce que tu obtiens en faisant un var_dump($_SESSION) ?
J'ai mis le session_start juste avec le DOCTYPE HTML
Lorsque je fais le var_dump il écrit toute mes variables que j'ai enregistrées mais elles sont égales a null, alors que juste avant le paiement sur Paypal les variables sont bonnes
Bien sur, et de toute manière je suis sur Sandbox :
Voici ma classe Paypal.php :
<?php
class Paypal{
private $user = "unbusiness_api1.hotmail.com";
private $pwd = "x";
private $signature = "x";
private $endpoint = "https://api-3t.sandbox.paypal.com/nvp";
public $errors = array();
public function __construct($user = false, $pwd = false, $signature = false, $prod = false){
if($user){
$this->user = $user;
}
if($pwd){
$this->pwd = $pwd;
}
if($signature){
$this->signature = $signature;
}
if($prod){
$this->endpoint = str_replace('sandbox.','', $this->endpoint);
}
}
public function request($method, $params){
$params = array_merge($params, array(
'METHOD' => $method,
'VERSION' => '74.0',
'USER' => $this->user,
'SIGNATURE' => $this->signature,
'PWD' => $this->pwd
));
$params = http_build_query($params);
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => $this->endpoint,
CURLOPT_POST=> 1,
CURLOPT_POSTFIELDS => $params,
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_SSL_VERIFYHOST => false,
CURLOPT_VERBOSE => 1
));
$response = curl_exec($curl);
$responseArray = array();
parse_str($response, $responseArray);
if(curl_errno($curl)){
$this->errors = curl_error($curl);
curl_close($curl);
return false;
}else{
if($responseArray['ACK'] == 'Success'){
curl_close($curl);
return $responseArray;
}else{
$this->errors = $responseArray;
curl_close($curl);
return false;
}
}
}
}
Voici mon code lorsque l'utilisateur appuis sur le bouton 'Acheter' :
<?php
require 'paypal.php';
$total = 19.0;
$totalttc = 19.0;
$port = 0.99;
$paypal = "#";
$paypal = new Paypal();
$params = array(
'RETURNURL' => 'http://localhost/test/achat.php',
'CANCELURL' => 'http://localhost/tes/Paypal/cancel.php',
'PAYMENTREQUEST_0_AMT' => $totalttc + $port,
'PAYMENTREQUEST_0_CURRENCYCODE' => 'EUR',
'PAYMENTREQUEST_0_SHIPPINGAMT' => $port,
'PAYMENTREQUEST_0_ITEMAMT' => $totalttc,
'L_PAYMENTREQUEST_0_NAME0' => "Formule 1",
'L_PAYMENTREQUEST_0_DESC' => '',
'L_PAYMENTREQUEST_0_AMT0' => 19.0,
'L_PAYMENTREQUEST_0_QTY0' =>1,
);
$response = $paypal->request('SetExpressCheckout', $params);
if($response){
$paypal = 'https://www.sandbox.paypal.com/webscr?cmd=_express-checkout&useraction=commit&token=' . $response['TOKEN'];
}else{
var_dump($paypal->errors);
die('Erreur ');
}
?>
while ($donnees = $reponse->fetch()) {
?>
<?php
if( $_POST['mot_de_passe'] != $donnees['mot_de_passe'] )
{
header('Location: index.php');
}
?>
<div class="saluteleve">
<h1>
Bonjour <?php echo $donnees['nom'];?>
<?php echo $donnees['prenom'];?>
<?php echo $donnees['classe'];?><br/>
</h1>
</div>
<?php
}
$_SESSION['Nom'] = $donnees['nom'];
$_SESSION['Prenom'] = $donnees['prenom'];
$_SESSION['Classe'] = $donnees['classe'];
?>
Ok. Il semblerait que lorsque Paypal renvoie vers ton site, la demande vient de Paypal et non de l'utilisateur.
Ta session est donc vide puisqu'il s'agit de la session de Paypal.
Alors j'ai trouver la bêtise que j'ai fait.
J'ai mis dans SESSION des valeurs provenant de ma bdd, il étaient null de base. Donc c'était normal que ca ne marche pas au final.
Oui tout fonctionne comme prévu ! Merci beaucoup ! Maintenant comment mettre ce sujet en résolu ?