Bonjour,
Personnellement je ne sais pas du tout ce qui se passe, à croire que cela vient de mon hébergeur car cela fait 2 jours que je suis dessus et elle ne fonctionne toujours pas. Aucune incrémentation dans la base de donnée. Les débits et crédits s'effectuent bien sur les comptes tests...
Si quelqu'un voit une grosse bêtises ou qui puisse m'aiguiller sur mon problème, ça serait très sympa.
<?php
if(isset($_POST)){
file_put_contents('logPOST.txt', print_r($_POST,true));//J4arrive ici et plus de log !
}
//permet de traiter le retour ipn de paypal
$email_account = "vend_1357239819_biz@gmail.com";
$req = 'cmd=_notify-validate';
foreach ($_POST as $key => $value) {
$value = urlencode(stripslashes($value));
$req .= "&$key=$value";
}
$header = "POST /cgi-bin/webscr HTTP/1.0\r\n";
$header .= "Content-Type: application/x-www-form-urlencoded\r\n";
$header .= "Content-Length: " . strlen($req) . "\r\n\r\n";
$fp = fsockopen ('ssl://www.sandbox.paypal.com', 443, $errno, $errstr, 30); // je vais essayer de tester avec le port 80 on ne sait jamais
$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'];
parse_str($_POST'custom'],$custom);
if (!$fp) {
file_put_contents('log.txt', 'Erreur de socket ssl');
} else {
fputs ($fp, $header . $req);
while (!feof($fp)) {
$res = fgets ($fp, 1024);
if (strcmp ($res, "VERIFIED") == 0) {
// vérifier que payment_status a la valeur Completed
if ( $payment_status == "Completed") {
if ( $email_account == $receiver_email) {
if( $payment_currency == "EUR" ){
/**
* C'EST LA QUE TOUT SE PASSE
* PS : tjrs penser à vérifier la somme !!
*/
file_put_contents('log.txt', print_r($_POST,true));
$dns = 'mysql:host=sql1.xxx.com;dbname=xxx';
$utilisateur = 'xxx';
$motDePasse = 'xxx';
$db = new PDO( $dns, $utilisateur, $motDePasse );
$req = $db->query('SELECT * FROM buy WHERE id = '.$custom'id'].' LIMIT 1');
$d = $req->fetch(PDO::FETCH_ASSOC);
if(!empty($d)){
$uid=$custom'id'];
$data=serialize($_POST);
$req = $db->query('SELECT * FROM offers WHERE price = '.$payment_amount.' LIMIT 1');
$c = $req->fetch(PDO::FETCH_ASSOC);
$offre_id = $c'id'];
$offre_duration = $c'duration'];
$offre_price = $c'price'];
//Mise à jour de la durée des abonnements par rapport au prix
if($payment_amount == '5'){ $offre_duration == '1';}
if($payment_amount == '10'){ $offre_duration == '2';}
if($payment_amount == '15'){ $offre_duration == '3';}
if($payment_amount == '20'){ $offre_duration == '4';}
//on mets à jour la balance du joueur
$db->query('UPDATE buy SET expiration_exclu = DATE_ADD(NOW(), INTERVAL '.$offre_duration.' WEEK) WHERE id = '.$uid.'');
//On sauvegarde la commande
$db->query("INSERT INTO orders SET user_id=$uid, amount=$payment_amount, created=NOW(), datas=$data");
file_put_contents('log.txt', 'Le payement a bien été confirmé');
$to = 'contact@xxx.com';
$subject = 'Payement réussi';
$message = 'Le payement Paypal a réussi';
$headers = 'From: contact@xxx.com' . "\r\n" .
'Reply-To: contact@xxx.com' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
mail($to, $subject, $message, $headers);
}else{
file_put_contents('log.txt', 'Le payement ne correspond à aucune offre');
}
/**
* FIN CODE
*/
}
}
}
else {
// Statut de paiement: Echec
file_put_contents('log.txt', 'Echec du payement');
}
exit();
}
else if (strcmp ($res, "INVALID") == 0) {
// Transaction invalide
file_put_contents('log.txt', 'Transaction invalide');
file_put_contents('log2.txt', print_r($_POST,true));
}
}
fclose ($fp);
}
Il faut savoir que j'ai que le premier log !
Merci par avance