J'aimerais récupérer en bdd photo, titre,phone,postcode et street mais je ne vois pas trop comment ....
Vous retrouvez la req que j'ai essayer de faire plus bas dans mon code mais la voici quand même:
Elle marche mais par exemple je ne récupère par en bdd la variable photo mais le reste oui ....
//La j'aimerais récupérer en plus donc photo, titre ,phone,postcode ,city ,street mais je n'y arrive pas
$db->query("INSERT INTO orders (user_id,amount,created,datas,txn_id,photo) VALUES(".$uid.",".$payment_amount.",NOW(),'".$data."','".$txn_id."','".$photo."')");
Page formulaire.php
<?php session_start (); ?>
<?php
try
{
$bdd = new PDO('mysql:host=**********;dbname=***********','*************','**************');
$bdd->exec('SET NAMES utf8');
}
catch(Exception $e)
{
echo 'Une erreur est survenue !';
die();
}
// Même chose que error_reporting(E_ALL);
ini_set('error_reporting', E_ALL);
?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Document sans titre</title>
<link rel="stylesheet" href="css/bootstrap.css">
<link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="stylesheet" href="css/font-awesome.min.css">
<link rel="Stylesheet" type="text/css" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.9/themes/base/jquery-ui.css" />
</head>
<body>
<div class="container">
<nav><?php if (isset($_SESSION['user'])): ?>
<li><a href="profil.php" title="S'inscrire">Bienvenue,<?php echo $_SESSION['user']['email']; ?></a></li>
<li><a href="login.php?logout" title="Se connecter">Logout</a></li>
<?php endif ?>
<h1>Choisir une formule d'abonement</h1>
<?php
$erreurs = array(); //tableau contenant des messages d'erreurs
/* traitement des erreurs
* tous les champs du formulaire non remplis seront placés
* dans le tableau des erreurs $erreurs.A la fin du traitement
* ce tableau sera soit vide, auquel cas on exécute la requête insert
* pour inserer les données en bd, soit ce tableau n'est pas vide(champs non remplis) on invite
* l'utilisateur à remplir tous les champs
*/
if(!empty($_POST)) {//soumission du formulaire
//Verification titre
if(empty($_POST['titre']))
{
$erreurs['titre'] = 'Renseigner un nom de sortie';
}
//Verification ville
if(empty($_POST['city']))
{
$erreurs['city'] = 'Renseigner une ville';
}
//Verification code postal
if(empty($_POST['postcode']))
{
$erreurs['postcode'] = 'Renseigner un code postal';
}
//Verification description
if(empty($_POST['email']))
{
$erreurs['email'] = 'verifier';
}
/////////
// Testons si le fichier a bien été envoyé et s'il n'y a pas d'erreur
$dossier = 'img/annonce/';
$fichier = basename($_FILES['photo']['name']);
$taille_maxi = 1000000;
$taille = filesize($_FILES['photo']['tmp_name']);
$extensions = array('.png', '.gif', '.jpg', '.jpeg');
$extension = strrchr($_FILES['photo']['name'], '.');
//Début des vérifications de sécurité...
if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
{
$erreur = 'Veuillez vérifier que le format de votre photo soit de type png, gif, jpg, jpeg, ';
}
if($taille>$taille_maxi)
{
$erreur = 'Le fichier est trop gros...';
}
if(!isset($erreur)) //S'il n'y a pas d'erreur, on upload
{
//On formate le nom du fichier ici...
$fichier = strtr($fichier,
'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
$fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
if(move_uploaded_file($_FILES['photo']['tmp_name'], $dossier . $fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
{
echo 'Téléchargement effectué avec succès !';
}
else //Sinon (la fonction renvoie FALSE).
{
echo 'Echec du téléchargement !';
}
}
else
{
echo $erreur;
}
//fin traitement des erreurs
//s'il y a problème, procède au debogage en decommentant les 2 lignes çi-dessus:
//var_dump($_POST);
//die('fin debogage');
//le tableau d'erreurs est vide alors on insère les données
if( empty( $erreurs) ){
$req = $bdd->prepare('INSERT INTO orders ( photo, titre, phone, street, postcode, city)
VALUES (:photo, :titre, :phone, :street, :postcode, :city, )');
$retour= $req->execute(array(
'photo'=>$_FILES['photo']['name'],
'titre'=>$_POST['titre'],
'phone'=>$_POST['phone'],
'street'=>$_POST['street'],
'postcode'=>$_POST['postcode'],
'city'=>$_POST['city']
));
if( $retour ===false) echo "Problème lors de l'insertion";
}else{//le tableau ne contient
echo "<p> renseignez les champs vides</p>";
}
}//fin de la soumission du formulaire
?>
<form action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post" enctype="multipart/form-data">
<!-- titre de la sortie -->
<label>titre :</label>
<input class="form-control" type="text" name="titre" value="<?php if(isset($_POST['titre'])) echo $_POST['titre'];?>" />
<div class="error"><?php if(isset($erreurs['titre'])) echo $erreurs['titre'];?></div>
<!-- Ville de la sortie -->
<label>Ville *</label>
<input class="form-control" type="text" name="city" value="<?php if(isset($_POST['city'])) echo $_POST['city'];?>" />
<div class="error"><?php if(isset($erreurs['city'])) echo $erreurs['city'];?></div>
<!-- Ville de la sortie -->
<label>Rue</label>
<input class="form-control" type="text" name="street" value="<?php if(isset($_POST['street'])) echo $_POST['street'];?>" />
<div class="error"><?php if(isset($erreurs['street'])) echo $erreurs['street'];?></div>
<!-- Code postal de la sortie -->
<label>Code postal *</label>
<input class="form-control" type="text" name="postcode" value="<?php if(isset($_POST['postcode'])) echo $_POST['postcode'];?>" />
<div class="error"><?php if(isset($erreurs['postcode'])) echo $erreurs['postcode'];?></div>
<label>Télephone</label>
<input class="form-control" type="text" name="phone" value="<?php if(isset($_POST['phone'])) echo $_POST['phone'];?>" />
<div class="error"><?php if(isset($erreurs['phone'])) echo $erreurs['phone'];?></div>
<label>Photo</label>
<input name="photo" type="file"/>
<select name="amount">
<?php
$req = $db->query('SELECT * FROM offers');
while($d = $req->fetch(PDO::FETCH_ASSOC)){
?>
<option value="<?php echo $d['price']; ?>"><?php echo $d['name'];?> -<?php echo $d['price'];?> Euros</option>
<?php
}
?>
</select>
<input name="currency_code" type="hidden" value="EUR" />
<input name="shipping" type="hidden" value="0.00" />
<input name="tax" type="hidden" value="0.00" />
<input name="return" type="hidden" value="http://www.url/succes.php" />
<input name="cancel_return" type="hidden" value="URL_ANNULATION" />
<input name="notify_url" type="hidden" value="http://www.url/ipn.php" />
<input name="cmd" type="hidden" value="_xclick" />
<input name="business" type="hidden" value="l'adresse_vendeur" />
<input name="item_name" type="hidden" value="offre publicitaire" />
<input name="no_note" type="hidden" value="1" />
<input name="lc" type="hidden" value="FR" />
<input name="bn" type="hidden" value="PP-BuyNowBF" />
<input name="custom" type="hidden"value="user_id=<?php echo $_SESSION['user']['id'] ?>" />
<input type="submit" value="S'abonner" class="btn primary">
</form>
</div>
</body>
<script src="js/jquery.js"></script>
<script type="text/javascript" src="js/bootstrap.js"></script>
<script type="text/javascript" src="js/bootstrap.min.js"></script>
</html>
Page ip.php
<?php
file_put_contents('log', print_r($_POST,true));
// fonction pour vérifier l'unicité de txn_id
function VerifIXNID($txn_id){
file_put_contents('log','Vérification txn_id ');
$db = new PDO("mysql:host=*****;dbname=******","********","**************");
$nbreponse = $db->query("SELECT COUNT(*) FROM orders WHERE txn_id=".$txn_id)->fetchColumn();
if($nbreponse > 0 ){
return 1;
}else{
return 0;
}
}
/**-----------------------------------------------
* Email
-------------------------------------------------**/
$emailto = $_POST['payer_email'];;
$emailfrom = "[email protected]";
$sujetprefix = "[PAYPAL]";
$charset = "utf-8";
$fichier_log = fopen('log.txt', 'w+');
$log = fgets($fichier_log);
$log .="(".date('Y-m-d')." ".date('H:i') .") - Le script est executé.";
fputs($fichier_log, $log);
$log = fgets($fichier_log);
// Adresse Email de la boutique
$email_account = "[email protected]";
$req = 'cmd=_notify-validate';
foreach ($_POST as $key => $value) {
$value = urlencode(stripslashes($value));
$req .= "&$key=$value";
}
// post back to PayPal system to validate
// renvoyer a paypal pour validation
$header .= "POST /cgi-bin/webscr HTTP/1.0\r\n";
$header .= "Content-Type: application/x-www-form-urlencoded\r\n";
$header .= "Host: http://www.sandbox.paypal.com\r\n"; // http://www.paypal.com for a live site
$header .= "Content-Length: " . strlen($req) . "\r\n\r\n";
$fp = fsockopen ('ssl://www.sandbox.paypal.com', 443, $errno, $errstr, 30);
// assign posted variables to local variables
// Affecter les variables postées aux variables locales
$item_name = $_POST['item_name'];
$item_number = $_POST['item_number'];
$payment_status = $_POST['payment_status'];
$payment_amount = $_POST['mc_gross'];
$payment_currency = $_POST['mc_currency'];
$txn_id = $_POST['txn_id'];
$receiver_email = $_POST['receiver_email'];
$payer_email = $_POST['payer_email'];
$num_cart_items = intval($_POST['num_cart_items']);
// numero de transaction
$txn_id = $_POST['txn_id'];
// ON Y MET LE PAQUET mais ça marche pas ...
$photo = $_FILES['photo'];
// parser la variable custom
parse_str($_POST['custom'],$custom);
/* $custom['user_id] = 1*/
if (!$fp) {
// HTTP ERROR
} else {
fputs ($fp, $header . $req);
while (!feof($fp)) {
$res = fgets ($fp, 1024);
if (strcmp ($res, "VERIFIED") == 0) {
// check the payment_status is Completed
if($payment_status == "Completed"){
file_put_contents('log','status completed');
// check that receiver_email is your Primary PayPal email
if($email_account == $receiver_email){
file_put_contents('log','email confirmée ');
// check that txn_id has not been previously processed
// if (VerifIXNID($txn_id) == 0) {
file_put_contents('log','txn_id vérifier ');
// check that payment_amount/payment_currency are correct
// process payment
$uid = $custom['user_id'];
// sauvegarder la commande
$data=serialize($_POST);
/*sauvegarde des infos dans un fichier log*/
file_put_contents('log_'.$txn_id, print_r($_POST,true));
// connexion a la base de données
$db = new PDO('mysql:host=*******;dbname=**********','**************','***************');
$req = $db->query('SELECT * FROM offers WHERE price='.$payment_amount.' LIMIT 1');
$d = $req->fetch(PDO::FETCH_ASSOC);
if(!empty($d)){
$duration = $d['duration'];
$uid = $custom['user_id'];
$data = serialize($_POST);
//On met à jour la date d'expiration
$db->query('UPDATE users SET expiration = DATE_ADD(NOW(), INTERVAL '.$duration.' MONTH) WHERE id = '.$uid);
//La j'aimerais récupérer en plus donc photo, titre ,phone,postcode ,city ,street mais je n'y arrive pas
$db->query("INSERT INTO orders (user_id,amount,created,datas,txn_id,photo) VALUES(".$uid.",".$payment_amount.",NOW(),'".$data."','".$txn_id."','".$photo."')");
file_put_contents('log','Le paiement à bien était confirmé');
}else{
file_put_contents('log','Le paiement ne correspond à aucune offre');
}
// Envoi du mail
$mail_To = $emailto;
$mail_Subject = "Votre commande sur notre boutique";
$entetes = "From: ".$emailfrom."\n";
$entetes .= "Reply-To: ".$emailfrom."\n";
$entetes .= "MIME-Version: 1.0 \n";
$entetes .= "Content-Transfer-Encoding: 8bit \n";
$entetes .= "Content-type: text/plain; charset=".$charset."\n";
$mail_Body = "Bonjour,<br\>Merci d'avoir choisi notre site pour faire vos achats, Votre commande partira dans les plus brèfs délais.";
// $mail_Body .= "\n";
// $mail_Body .= "\n---------------------------------------------------------------------------------";
// $mail_Body .= "\n" . "Nombre d'objets dans le panier: " . $num_cart_items;
// if (strlen($item_name1) > 1) { $mail_Body .= "\n\n" . "1er objet en commande: " . $item_name1 . "\n" . "Numéro de l'objet 1: " . $item_number1 . " - " . "Quantité: " . $quantity1; }
// if (strlen($item_name2) > 1) { $mail_Body .= "\n\n" . "2e objet en commande: " . $item_name2 . "\n" . "Numéro de l'objet 2: " . $item_number2 . " - " . "Quantité: " . $quantity2; }
// if (strlen($item_name3) > 1) { $mail_Body .= "\n\n" . "3e objet en commande: " . $item_name3 . "\n" . "Numéro de l'objet 3: " . $item_number3 . " - " . "Quantité: " . $quantity3; }
// if (strlen($item_name4) > 1) { $mail_Body .= "\n\n" . "4e objet en commande: " . $item_name4 . "\n" . "Numéro de l'objet 4: " . $item_number4 . " - " . "Quantité: " . $quantity4; }
// if (strlen($item_name5) > 1) { $mail_Body .= "\n\n" . "5e objet en commande: " . $item_name5 . "\n" . "Numéro de l'objet 5: " . $item_number5 . " - " . "Quantité: " . $quantity5; }
// if (strlen($item_name) > 1) {
// $mail_Body .= "\n" . "Objet en commande: " . $item_name;
// $mail_Body .= "\n" . "Numéro de l'objet: " . $item_number;
// $mail_Body .= "\n" . "Quantité: " . $quantity;
// }
// $mail_Body .= "\n";
// $mail_Body .= "\n---------------------------------------------------------------------------------";
// $mail_Body .= "\n";
// $mail_Body .= "Equipe de ....";
mail($mail_To, $mail_Subject, $mail_Body, $entetes);
// }
// }else{
// file_put_contents('log','Transaction déja éffectué ');
// }
}else{
file_put_contents('log','le paiement ne correspond a aucune offre');
}
}else{
// problème sur le statut de paiement
file_put_contents('log','Il y a un problème sur le statut de paiement');
}
exit();
}
else if (strcmp ($res, "INVALID") == 0) {
// log for manual investigation
// transaction invalide
file_put_contents('log','Transaction invalide');
}
}
fclose ($fp);
}
?>
J'aimerais récupérer en bdd photo, titre,phone,postcode et street mais je ne vois pas trop comment ....
Vous retrouvez la req que j'ai essayer de faire plus bas dans mon code mais la voici quand même:
Elle marche mais par exemple je ne récupère par en bdd la variable photo mais le reste oui ....
[php]//La j'aimerais récupérer en plus donc photo, titre ,phone,postcode ,city ,street mais je n'y arrive pas
$db->query("INSERT INTO orders (user_id,amount,created,datas,txn_id,photo) VALUES(".$uid.",".$payment_amount.",NOW(),'".$data."','".$txn_id."','".$photo."')");[/php]
[b]Page formulaire.php[/b]
[php]<?php session_start (); ?>
<?php
try
{
$bdd = new PDO('mysql:host=**********;dbname=***********','*************','**************');
$bdd->exec('SET NAMES utf8');
}
catch(Exception $e)
{
echo 'Une erreur est survenue !';
die();
}
// Même chose que error_reporting(E_ALL);
ini_set('error_reporting', E_ALL);
?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Document sans titre</title>
<link rel="stylesheet" href="css/bootstrap.css">
<link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="stylesheet" href="css/font-awesome.min.css">
<link rel="Stylesheet" type="text/css" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.9/themes/base/jquery-ui.css" />
</head>
<body>
<div class="container">
<nav><?php if (isset($_SESSION['user'])): ?>
<li><a href="profil.php" title="S'inscrire">Bienvenue,<?php echo $_SESSION['user']['email']; ?></a></li>
<li><a href="login.php?logout" title="Se connecter">Logout</a></li>
<?php endif ?>
<h1>Choisir une formule d'abonement</h1>
<?php
$erreurs = array(); //tableau contenant des messages d'erreurs
/* traitement des erreurs
* tous les champs du formulaire non remplis seront placés
* dans le tableau des erreurs $erreurs.A la fin du traitement
* ce tableau sera soit vide, auquel cas on exécute la requête insert
* pour inserer les données en bd, soit ce tableau n'est pas vide(champs non remplis) on invite
* l'utilisateur à remplir tous les champs
*/
if(!empty($_POST)) {//soumission du formulaire
//Verification titre
if(empty($_POST['titre']))
{
$erreurs['titre'] = 'Renseigner un nom de sortie';
}
//Verification ville
if(empty($_POST['city']))
{
$erreurs['city'] = 'Renseigner une ville';
}
//Verification code postal
if(empty($_POST['postcode']))
{
$erreurs['postcode'] = 'Renseigner un code postal';
}
//Verification description
if(empty($_POST['email']))
{
$erreurs['email'] = 'verifier';
}
/////////
// Testons si le fichier a bien été envoyé et s'il n'y a pas d'erreur
$dossier = 'img/annonce/';
$fichier = basename($_FILES['photo']['name']);
$taille_maxi = 1000000;
$taille = filesize($_FILES['photo']['tmp_name']);
$extensions = array('.png', '.gif', '.jpg', '.jpeg');
$extension = strrchr($_FILES['photo']['name'], '.');
//Début des vérifications de sécurité...
if(!in_array($extension, $extensions)) //Si l'extension n'est pas dans le tableau
{
$erreur = 'Veuillez vérifier que le format de votre photo soit de type png, gif, jpg, jpeg, ';
}
if($taille>$taille_maxi)
{
$erreur = 'Le fichier est trop gros...';
}
if(!isset($erreur)) //S'il n'y a pas d'erreur, on upload
{
//On formate le nom du fichier ici...
$fichier = strtr($fichier,
'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',
'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
$fichier = preg_replace('/([^.a-z0-9]+)/i', '-', $fichier);
if(move_uploaded_file($_FILES['photo']['tmp_name'], $dossier . $fichier)) //Si la fonction renvoie TRUE, c'est que ça a fonctionné...
{
echo 'Téléchargement effectué avec succès !';
}
else //Sinon (la fonction renvoie FALSE).
{
echo 'Echec du téléchargement !';
}
}
else
{
echo $erreur;
}
//fin traitement des erreurs
//s'il y a problème, procède au debogage en decommentant les 2 lignes çi-dessus:
//var_dump($_POST);
//die('fin debogage');
//le tableau d'erreurs est vide alors on insère les données
if( empty( $erreurs) ){
$req = $bdd->prepare('INSERT INTO orders ( photo, titre, phone, street, postcode, city)
VALUES (:photo, :titre, :phone, :street, :postcode, :city, )');
$retour= $req->execute(array(
'photo'=>$_FILES['photo']['name'],
'titre'=>$_POST['titre'],
'phone'=>$_POST['phone'],
'street'=>$_POST['street'],
'postcode'=>$_POST['postcode'],
'city'=>$_POST['city']
));
if( $retour ===false) echo "Problème lors de l'insertion";
}else{//le tableau ne contient
echo "<p> renseignez les champs vides</p>";
}
}//fin de la soumission du formulaire
?>
<form action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post" enctype="multipart/form-data">
<!-- titre de la sortie -->
<label>titre :</label>
<input class="form-control" type="text" name="titre" value="<?php if(isset($_POST['titre'])) echo $_POST['titre'];?>" />
<div class="error"><?php if(isset($erreurs['titre'])) echo $erreurs['titre'];?></div>
<!-- Ville de la sortie -->
<label>Ville *</label>
<input class="form-control" type="text" name="city" value="<?php if(isset($_POST['city'])) echo $_POST['city'];?>" />
<div class="error"><?php if(isset($erreurs['city'])) echo $erreurs['city'];?></div>
<!-- Ville de la sortie -->
<label>Rue</label>
<input class="form-control" type="text" name="street" value="<?php if(isset($_POST['street'])) echo $_POST['street'];?>" />
<div class="error"><?php if(isset($erreurs['street'])) echo $erreurs['street'];?></div>
<!-- Code postal de la sortie -->
<label>Code postal *</label>
<input class="form-control" type="text" name="postcode" value="<?php if(isset($_POST['postcode'])) echo $_POST['postcode'];?>" />
<div class="error"><?php if(isset($erreurs['postcode'])) echo $erreurs['postcode'];?></div>
<label>Télephone</label>
<input class="form-control" type="text" name="phone" value="<?php if(isset($_POST['phone'])) echo $_POST['phone'];?>" />
<div class="error"><?php if(isset($erreurs['phone'])) echo $erreurs['phone'];?></div>
<label>Photo</label>
<input name="photo" type="file"/>
<select name="amount">
<?php
$req = $db->query('SELECT * FROM offers');
while($d = $req->fetch(PDO::FETCH_ASSOC)){
?>
<option value="<?php echo $d['price']; ?>"><?php echo $d['name'];?> -<?php echo $d['price'];?> Euros</option>
<?php
}
?>
</select>
<input name="currency_code" type="hidden" value="EUR" />
<input name="shipping" type="hidden" value="0.00" />
<input name="tax" type="hidden" value="0.00" />
<input name="return" type="hidden" value="http://www.url/succes.php" />
<input name="cancel_return" type="hidden" value="URL_ANNULATION" />
<input name="notify_url" type="hidden" value="http://www.url/ipn.php" />
<input name="cmd" type="hidden" value="_xclick" />
<input name="business" type="hidden" value="l'adresse_vendeur" />
<input name="item_name" type="hidden" value="offre publicitaire" />
<input name="no_note" type="hidden" value="1" />
<input name="lc" type="hidden" value="FR" />
<input name="bn" type="hidden" value="PP-BuyNowBF" />
<input name="custom" type="hidden"value="user_id=<?php echo $_SESSION['user']['id'] ?>" />
<input type="submit" value="S'abonner" class="btn primary">
</form>
</div>
</body>
<script src="js/jquery.js"></script>
<script type="text/javascript" src="js/bootstrap.js"></script>
<script type="text/javascript" src="js/bootstrap.min.js"></script>
</html>[/php]
[b]Page ip.php[/b]
[php]<?php
file_put_contents('log', print_r($_POST,true));
// fonction pour vérifier l'unicité de txn_id
function VerifIXNID($txn_id){
file_put_contents('log','Vérification txn_id ');
$db = new PDO("mysql:host=*****;dbname=******","********","**************");
$nbreponse = $db->query("SELECT COUNT(*) FROM orders WHERE txn_id=".$txn_id)->fetchColumn();
if($nbreponse > 0 ){
return 1;
}else{
return 0;
}
}
/**-----------------------------------------------
* Email
-------------------------------------------------**/
$emailto = $_POST['payer_email'];;
$emailfrom = "
[email protected]";
$sujetprefix = "[PAYPAL]";
$charset = "utf-8";
$fichier_log = fopen('log.txt', 'w+');
$log = fgets($fichier_log);
$log .="(".date('Y-m-d')." ".date('H:i') .") - Le script est executé.";
fputs($fichier_log, $log);
$log = fgets($fichier_log);
// Adresse Email de la boutique
$email_account = "
[email protected]";
$req = 'cmd=_notify-validate';
foreach ($_POST as $key => $value) {
$value = urlencode(stripslashes($value));
$req .= "&$key=$value";
}
// post back to PayPal system to validate
// renvoyer a paypal pour validation
$header .= "POST /cgi-bin/webscr HTTP/1.0\r\n";
$header .= "Content-Type: application/x-www-form-urlencoded\r\n";
$header .= "Host: http://www.sandbox.paypal.com\r\n"; // http://www.paypal.com for a live site
$header .= "Content-Length: " . strlen($req) . "\r\n\r\n";
$fp = fsockopen ('ssl://www.sandbox.paypal.com', 443, $errno, $errstr, 30);
// assign posted variables to local variables
// Affecter les variables postées aux variables locales
$item_name = $_POST['item_name'];
$item_number = $_POST['item_number'];
$payment_status = $_POST['payment_status'];
$payment_amount = $_POST['mc_gross'];
$payment_currency = $_POST['mc_currency'];
$txn_id = $_POST['txn_id'];
$receiver_email = $_POST['receiver_email'];
$payer_email = $_POST['payer_email'];
$num_cart_items = intval($_POST['num_cart_items']);
// numero de transaction
$txn_id = $_POST['txn_id'];
// ON Y MET LE PAQUET mais ça marche pas ...
$photo = $_FILES['photo'];
// parser la variable custom
parse_str($_POST['custom'],$custom);
/* $custom['user_id] = 1*/
if (!$fp) {
// HTTP ERROR
} else {
fputs ($fp, $header . $req);
while (!feof($fp)) {
$res = fgets ($fp, 1024);
if (strcmp ($res, "VERIFIED") == 0) {
// check the payment_status is Completed
if($payment_status == "Completed"){
file_put_contents('log','status completed');
// check that receiver_email is your Primary PayPal email
if($email_account == $receiver_email){
file_put_contents('log','email confirmée ');
// check that txn_id has not been previously processed
// if (VerifIXNID($txn_id) == 0) {
file_put_contents('log','txn_id vérifier ');
// check that payment_amount/payment_currency are correct
// process payment
$uid = $custom['user_id'];
// sauvegarder la commande
$data=serialize($_POST);
/*sauvegarde des infos dans un fichier log*/
file_put_contents('log_'.$txn_id, print_r($_POST,true));
// connexion a la base de données
$db = new PDO('mysql:host=*******;dbname=**********','**************','***************');
$req = $db->query('SELECT * FROM offers WHERE price='.$payment_amount.' LIMIT 1');
$d = $req->fetch(PDO::FETCH_ASSOC);
if(!empty($d)){
$duration = $d['duration'];
$uid = $custom['user_id'];
$data = serialize($_POST);
//On met à jour la date d'expiration
$db->query('UPDATE users SET expiration = DATE_ADD(NOW(), INTERVAL '.$duration.' MONTH) WHERE id = '.$uid);
//La j'aimerais récupérer en plus donc photo, titre ,phone,postcode ,city ,street mais je n'y arrive pas
$db->query("INSERT INTO orders (user_id,amount,created,datas,txn_id,photo) VALUES(".$uid.",".$payment_amount.",NOW(),'".$data."','".$txn_id."','".$photo."')");
file_put_contents('log','Le paiement à bien était confirmé');
}else{
file_put_contents('log','Le paiement ne correspond à aucune offre');
}
// Envoi du mail
$mail_To = $emailto;
$mail_Subject = "Votre commande sur notre boutique";
$entetes = "From: ".$emailfrom."\n";
$entetes .= "Reply-To: ".$emailfrom."\n";
$entetes .= "MIME-Version: 1.0 \n";
$entetes .= "Content-Transfer-Encoding: 8bit \n";
$entetes .= "Content-type: text/plain; charset=".$charset."\n";
$mail_Body = "Bonjour,<br\>Merci d'avoir choisi notre site pour faire vos achats, Votre commande partira dans les plus brèfs délais.";
// $mail_Body .= "\n";
// $mail_Body .= "\n---------------------------------------------------------------------------------";
// $mail_Body .= "\n" . "Nombre d'objets dans le panier: " . $num_cart_items;
// if (strlen($item_name1) > 1) { $mail_Body .= "\n\n" . "1er objet en commande: " . $item_name1 . "\n" . "Numéro de l'objet 1: " . $item_number1 . " - " . "Quantité: " . $quantity1; }
// if (strlen($item_name2) > 1) { $mail_Body .= "\n\n" . "2e objet en commande: " . $item_name2 . "\n" . "Numéro de l'objet 2: " . $item_number2 . " - " . "Quantité: " . $quantity2; }
// if (strlen($item_name3) > 1) { $mail_Body .= "\n\n" . "3e objet en commande: " . $item_name3 . "\n" . "Numéro de l'objet 3: " . $item_number3 . " - " . "Quantité: " . $quantity3; }
// if (strlen($item_name4) > 1) { $mail_Body .= "\n\n" . "4e objet en commande: " . $item_name4 . "\n" . "Numéro de l'objet 4: " . $item_number4 . " - " . "Quantité: " . $quantity4; }
// if (strlen($item_name5) > 1) { $mail_Body .= "\n\n" . "5e objet en commande: " . $item_name5 . "\n" . "Numéro de l'objet 5: " . $item_number5 . " - " . "Quantité: " . $quantity5; }
// if (strlen($item_name) > 1) {
// $mail_Body .= "\n" . "Objet en commande: " . $item_name;
// $mail_Body .= "\n" . "Numéro de l'objet: " . $item_number;
// $mail_Body .= "\n" . "Quantité: " . $quantity;
// }
// $mail_Body .= "\n";
// $mail_Body .= "\n---------------------------------------------------------------------------------";
// $mail_Body .= "\n";
// $mail_Body .= "Equipe de ....";
mail($mail_To, $mail_Subject, $mail_Body, $entetes);
// }
// }else{
// file_put_contents('log','Transaction déja éffectué ');
// }
}else{
file_put_contents('log','le paiement ne correspond a aucune offre');
}
}else{
// problème sur le statut de paiement
file_put_contents('log','Il y a un problème sur le statut de paiement');
}
exit();
}
else if (strcmp ($res, "INVALID") == 0) {
// log for manual investigation
// transaction invalide
file_put_contents('log','Transaction invalide');
}
}
fclose ($fp);
}
?>[/php]