Retour IPN paypal invalide

Jemeca
Nouveau membre de la communauté

Bonjour,

 

J'essai de mettre en place un module de paiement paypal avec un retour IPN.

J'ai créé des comptes tests acheteur et vendeur sur  https://developer.paypal.com/, j'ai paramétré mon paiement avec l'adresse mail du compte test vendeur et j'ai bien activé le retour IPN.

J'indique bien les url de retour et  celle du retour IPN (notify_url). Ma page de notify_url est bien appelé mais quand je renvoi sur cette page les données à paypal pour vérification la réponse de paypal n'est jamais "VERIFIED" même si le paiement est valide...

La réponse que j'obtiens est la suivante :

 

HTTP/1.0 302 Found

Location: https://www.sandbox.paypal.com

Server: BigIP

Connection: close

Content-Length: 0

 

Ma question est pourquoi ? et comment régler ce problème ?

Voici mon code de page  notify_url :

 

  <?php 
    // lire le formulaire provenant du système PayPal et ajouter 'cmd'
    $req = 'cmd=_notify-validate';
    
    foreach ($_POST as $key => $value) {
        $value = urlencode(stripslashes($value));
        $req .= "&$key=$value";
    }
    
    // renvoyer au système PayPal pour validation
    $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 ('www.sandbox.paypal.com', 80, $errno, $errstr, 30);
    
    $item_name = $_POST['item_name'];
    $id_commande = clean_var($_POST['item_number'],1);
    $payment_status = $_POST['payment_status'];
    $payment_amount = $_POST['mc_gross']; // verif total
    $payment_currency = $_POST['mc_currency']; // verif EUR
    $txn_id = $_POST['txn_id'];
    $receiver_email = $_POST['receiver_email'];
    $payer_email = $_POST['payer_email'];
    $id_user = $_POST['custom'];
    if(!$fp){
    	// ERREUR HTTP
    }else{
        fputs ($fp, $header . $req);
        while(!feof($fp)){
            $res = fgets ($fp, 1024);
            // Mon code bloque ici car ne valide jamais cette condition, ni le else car je ne reçois ni VERIFIED ni INVALID
            if(strcmp ($res, "VERIFIED") == 0){
            // vérifier que payment_status a la valeur Completed
                if($payment_status == "Completed"){
                        if("mon_email_de_test" == $receiver_email){
                            // vérifier que payment_amount et payment_currency sont corrects
                
                            // traiter le paiement
                           
                            } 
                         }else{
			// Mauvaise adresse email paypal			
			 }
		 }else{
		 // Statut de paiement: Echec   
		 }
            }else if(strcmp($res, "INVALID") == 0) {
                // Transaction invalide  
            }
        }
        fclose ($fp);
    }
 ?>

 

 

Merci par avance pour votre aide.

 

Cordialement.

 

Login to Me Too
49 RÉPONSES 49

herbamiel
Contributeur
Contributeur

Bonjour,

 

J'ai le même problème depuis 1 semaine.

J'ai effectué, auparavant, des tests et tout fonctionnait bien avec ce code, il y a quelque chose qui a changé dernièrement, mais je ne sais pas quoi???

 

Merci!

 

 

Login to Me Too

herbamiel
Contributeur
Contributeur

Bonjour,

 

remplacer:

 

$fp = fsockopen ('www.sandbox.paypal.com', 80, $errno, $errstr, 30);

 

par:

 

$fp = fsockopen ('ssl://www.sandbox.paypal.com', '443', $errno, $errstr, 30);

Login to Me Too

PayPal_Alban
Employé PayPal
Employé PayPal

Bonjour à tous,

 

La soliution d'Herbamiel a-t-elle réglé votre problème?

 

Cordialement,

Alban

Login to Me Too

titia8000
Nouveau membre de la communauté

Bonsoir,

 

Je rencontre exactement le même problème mais la solution proposée n'a rien changé, quelqu'un a-t-il une autre solution ?

 

Merci d'avance

 

titia8000

Login to Me Too

Kookyoo
Contributeur
Contributeur

Bonjour, j'ai exactement le même soucis, mais la solution proposée ici n'a pas réglé mon soucis, je récupère une page html complexe au lieu du simple retour "VERIFIED" ou "INVALID" attendu.

 

Est-ce que quelqu'un ici a le même soucis ? Est-ce qu'il y a une solution à ce problème ?

Mon système marchait très bien (sur le port 80) depuis plus d'un an jusqu'à ce mois ci, je ne comprends pas ce qui se passe.

Login to Me Too

Kookyoo
Contributeur
Contributeur

Note : Il est important pour cette nouvelle solution d'avoir OpenSSL d'activé sur la configuration de PHP ( "<?php phpinfo(); ?>" pour vérifier). Dans mon cas c'est bien le cas mais la réponse n'est toujours pas conforme à mes attentes.

Login to Me Too

foyout
Contributeur
Contributeur

Bonjour

 

Je suis également en train de tester sur sandbox un systeme de paiement paypal avec traitement IPN et j'ai exactement le même problème qui a été soulevé ici.

Mon code a été vérifié donc je ne pense que ca vienne de là. J'ai testé la solution de herbamiel et le problème est toujours là.

D'apres ce que j'ai reussi a voir, le probleme viendrais de la ligne "if (strcmp ($res, "VERIFIED") == 0)" qui n'est pas validé et donc le reste du code n'est pas traité. 

Si quelqu'un a une solution, je suis tres preneur.

Merci d'avance

 

Florian

 

 

Login to Me Too

Kookyoo
Contributeur
Contributeur

Bonjour foyout,

 

Je confirme que c'est bien le ( "VERIFIED" == 0 ) qui pose problème, est-ce que tu peux afficher quelque part le résultat de $res pour voir ce qui t'as été renvoyé ?

Normalement le résultat est "VERIFIED" ou "INVALID" mais dans mon cas c'est une page HTML complète qui est retournée. Je serais curieux de savoir ce que tu obtiens de ton côté.

Cordialement,

Login to Me Too

PRSTSCcolonDTL
Contributeur
Contributeur

Bienvenue au Club, les Mecs, Smiley heureux

 

J'ai loggué un call chez Paypal sur ce problème insoluble il y a une heure.

 

Il y a des centaines de messages identiques dans tous les forums PP et php sur Internet, et aucun n'a eu de réponse.

Je suis en train de mettre à jour le tuto de Shaun Wourm (ex http://www.althacker.com) de 2005 sur ce sujet (dont les exemples ne marchent plus). J'ai déjà trouvé plein de trucs que PP a changé sans mettre leurs docs à jour ni leurs exemples, ces rats ! Smiley frustré

 

Dès que "ca remarche", je finis la maj du tuto et je la poste PARTOUT !

(une version de travail est dispo ici : http://www.ddtl.fr/monsite/Tutorial_Paypal_php_MySQL_NIP.doc)

 

Après, j'ajoute php et MySQL à mon site sur la gestion des erreurs sous Windaube...

 

A+

 

Didier

http://www.didiermorandi.fr/vbscript/

Login to Me Too

Haven't Found your Answer?

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