Debug nip

slyckers
Contributeur
Contributeur

Bonjour,

Si je poste c'est que je ne sais plus comment faire pour faire marcher cette API.

<?php
if(isset($_POST)){
    file_put_contents('logPOST.txt', print_r($_POST,true));
}
//permet de traiter le retour ipn de paypal
$email_account = "xxx";
$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) { // Ici que s'arrête l'envoie de mail pour debug
        // 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=xxx;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 paiement a bien été confirmé');
                            $to      = 'xxx';
                            $subject = 'Payement réussi';
                            $message = 'Le payement Paypal a réussi';
                            $headers = 'From: xxx' . "\r\n" .
                                'Reply-To: xxx' . "\r\n" .
                                'X-Mailer: PHP/' . phpversion();
                            mail($to, $subject, $message, $headers);
                        }else{
                            file_put_contents('log.txt', 'Le paiement ne correspond à aucune offre');
                        }
                        /**
                         * FIN CODE
                         */
                    }
               }
        }
        else {
                // Statut de paiement: Echec
                file_put_contents('log.txt', 'Echec du paiement');
        }
        exit();
   }
    else if (strcmp ($res, "INVALID") == 0) {
       
        file_put_contents('log.txt', 'Transaction invalide'); // J'arrive donc toujours ici
        file_put_contents('log2.txt', print_r($_POST,true));
    }
}
fclose ($fp);
}

 Pour débuguer le code je m'envoie des mails après chaque étape du code et j'ai fini par voir qu'après ce if je n'ai plus rien

if (strcmp ($res, "VERIFIED") == 0) {

 Et que juste avant, je reçois bein un mail me disant que le code s'execute....

Vous avez une idée car moi honnêtement, je suis vidé depuis 2 jous de recherche sur google et ici Smiley triste

Merci à tous ceux qui m'aideront.

Anthony

Login to Me Too
2 RÉPONSES 2

slyckers
Contributeur
Contributeur

2013-01-04 19:54:22 : ipn.php - res = INVALID

Login to Me Too

PRSTSCcolonDTL
Contributeur
Contributeur

Haven't Found your Answer?

It happens. Hit the "Login to Ask the community" button to create a question for the PayPal community.