IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

EDI, CMS, Outils, Scripts et API PHP Discussion :

[PayPal] Page IPN non appelée


Sujet :

EDI, CMS, Outils, Scripts et API PHP

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mai 2009
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 34
    Points : 26
    Points
    26
    Par défaut [PayPal] Page IPN non appelée
    Bonjour,

    Je suis en train de développer un site Internet pour un client qui a écrit un e-book et qui souhaite vendre celui-ci via PayPal.

    Pour l'instant j'en suis encore à la phase de test avec la SandBox. Niveau transaction, le compte acheteur est bien débité et le compte vendeur, crédité. Le soucis c'est que ma page de notification de paiement (IPN) n'est pas appelée. En effet, peu importe le résultat, j'ai fait en sorte qu'il y ai une trace dans un fichier de log. Or ce fichier de log reste vide. J'ai tenté d'appeler cette page directement : il n'y a aucune erreur et j'ai bien quelque chose qui s'inscrit dans les logs. J'ai bien activé la notification dans les préférences du compte vendeur. L'adresse de la page est bien renseignée (dans les préférences du compte vendeur, et dans le formulaire sur la page d'achat). De plus, PayPal m'indique dans "Historique des notifications instantanées de paiement" que la page IPN a bien été appelée...

    Voici le code de ma page IPN que j'ai simplifié :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    <?php
    if ( $fp = fsockopen('www.sandbox.paypal.com', 80, $errno, $errstr, 30) ) {
    	$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";
    	fputs($fp, $header . $req);
     
    	while ( !feof($fp) ) {
    		$res = fgets($fp, 1024);
     
    		if ( strcmp($res, "VERIFIED") == 0 ) {
    			if ( $_POST['payment_status'] == 'Completed' ) {
    				if ( verifier_TXN_ID($_POST['txn_id']) ) {
    					if ( $_POST['receiver_email'] == 'email.vendeur@domaine.com' ) {
    						if ( enregistrer_dans_BDD($_POST) ) {
    							if ( envoi_ebook($_POST) )
    								// OK !
    							else {
    								// erreur lors de l'envoi du mail contenant l'e-book
    							}
    						}
    						else {
    							// erreur lors de l'enregistrement en BDD
    						}
    					}
    					else {
    						// email vendeur incorrect
    					}
    				}
    				else {
    					// transaction déjà traitée
    				}
    			}
    			else {
    				// paiement incomplet
    			}
    		}
    		else {
    			// non vérifié
    		}
    	}
     
    	fclose($fp);
    }
    else {
    	// erreur HTTP
    }
     
    // enregistrement des résultats dans fichier de log
     
    ?>
    Voici le détail de l'IPN qui s'affiche dans PayPal :


    L'URL de la page est de la forme : http://www.mon-domaine.com/paypal_notify_url.php

    C'est la première fois que j'intègre PayPal à un site web donc je ne connais pas encore très bien. J'ai suivis les instructions de ce tuto :
    http://www.wikistuce.info/doku.php/a..._site_marchand
    ... et j'ai réorganisé (optimisé) le code à ma manière.


    Par ailleurs, j'aurais besoin de quelques explications sur cette page IPN car il y a un truc que je n'ai pas vraiment saisi. Un des buts de la page IPN, si j'ai bien compris, est de vérifier que les données sont bien valides. Par exemple vérifier si la transaction n'a pas déjà été traitée. Or à aucun moment on ne renvoie quelque chose à PayPal pour lui indiquer de ne pas prendre en compte le paiement si cette condition n'a pas été vérifiée... et de même pour toutes les autres vérifications (si l'e-mail du vendeur est correcte, si l'enregistrement en BDD a bien été effectué, etc.).

    Merci de votre attention et de votre aide !

  2. #2
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2009
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2009
    Messages : 127
    Points : 179
    Points
    179
    Par défaut
    Par ailleurs, j'aurais besoin de quelques explications sur cette page IPN car il y a un truc que je n'ai pas vraiment saisi. Un des buts de la page IPN, si j'ai bien compris, est de vérifier que les données sont bien valides. Par exemple vérifier si la transaction n'a pas déjà été traitée. Or à aucun moment on ne renvoie quelque chose à PayPal pour lui indiquer de ne pas prendre en compte le paiement si cette condition n'a pas été vérifiée... et de même pour toutes les autres vérifications (si l'e-mail du vendeur est correcte, si l'enregistrement en BDD a bien été effectué, etc.).
    Ipn est une notification serveur paypal vers votre serveur, en gros de façon cachée, le serveur paypal appel une page secrète de votre serveur pour lui confirmer, indépendament de la navigation du client, un paiement.
    C'est une notification qui ne se fait que si tout c'est bien passé (votre appel à paypal et la confirmation de paiement du client), si un problème est survenu il sera affiché bien avant au client.

    bon dev

  3. #3
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2009
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2009
    Messages : 127
    Points : 179
    Points
    179
    Par défaut
    En regardant le code de votre page a priori il y a une confusion entre 'envoi du client vers paypal pour paiement' et 'paypal me confirme de façon sécurisée et cachée que j'ai reçu un paiement'.
    On n'envoi pas de formulaire à Paypal dans le fichier notify.php., on traite les données que Paypal nous envoi

    Bon courage

  4. #4
    Nouveau membre du Club
    Inscrit en
    Mai 2009
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 34
    Points : 26
    Points
    26
    Par défaut
    Tout d'abord, merci beaucoup mkweb pour tes réponses

    Ipn est une notification serveur paypal vers votre serveur, en gros de façon cachée, le serveur paypal appel une page secrète de votre serveur pour lui confirmer, indépendament de la navigation du client, un paiement.
    Oui oui, ça je l'ai bien compris. Je travaille dans une agence web et j'ai déjà mis en place un système de paiement en ligne pour un site. On y retrouve une page de réponse automatique (appelée de serveur à serveur) au même titre que la page IPN pour PayPal.

    C'est une notification qui ne se fait que si tout c'est bien passé (votre appel à paypal et la confirmation de paiement du client), si un problème est survenu il sera affiché bien avant au client.
    D'accord, d'accord, j'ai compris. Je m'étais un peu embrouillé ^^"

    En regardant le code de votre page a priori il y a une confusion entre 'envoi du client vers paypal pour paiement' et 'paypal me confirme de façon sécurisée et cachée que j'ai reçu un paiement'.
    On n'envoi pas de formulaire à Paypal dans le fichier notify.php., on traite les données que Paypal nous envoi
    Je ne vois pas où j'ai fait cette confusion ? J'envoi les données (item_number, receiver_email, account, etc.) à travers un formulaire sur la page d'achat, avec un bouton "acheter maintenant" qui redirige l'utilisateur vers PayPal. Mais je ne fais bien évidemment aucun envoi de formulaire dans la page de notification. Je renvoie juste les données à PayPal pour authentification de la transaction (via fsockopen et fputs).


    Avec tout ça, je ne vois toujours pas pourquoi je n'ai aucune trace du passage de PayPal sur ma page IPN... Elle n'est pas du tout appelée car, comme je l'ai dit, je devrais avoir quelque chose qui s'inscrit dans un fichier de log peu importe le résultat.

    Encore une fois merci de votre aide !

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    36
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 36
    Points : 27
    Points
    27
    Par défaut
    Bonsoir Bioteck & mkweb,

    Je me permets de répondre à ce message, même si je pense que je ne vais pas beaucoup aider... En effet, si je suis tombé sur ce sujet, c'est que j'ai exactement le même problème que Bioteck: j'ai l'impression que les infos de paiement que Paypal est censé renvoyer sur mon serveur n'arrivent jamais et que le script que j'ai spécifié dans notify_url n'est jamais appelé (J'ai essayé de faire un mouchard en écrivant dans un fichier log au début de mon script, et rien n'est écrit à la fin du paiement).

    Au début, je me suis demandé si c'était mon hébergeur (OVH) qui bloquait les scripts extérieurs mais après échange de mails au support, ils m'ont dit que ce n'était pas le cas normalement...

    Si quelqu'un peut nous aider, ça serait génial

    Cordialement

  6. #6
    Nouveau membre du Club
    Inscrit en
    Mai 2009
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 34
    Points : 26
    Points
    26
    Par défaut
    Salut Picard64

    Alors en fait, j'ai trouvé ce week-end où ça coinçait : j'avais une erreur PHP dans ma page IPN Je suis vraiment stupide de ne pas y avoir pensé plus tôt car je sais très bien que les Fatal Error et les Parse Error exit le script donc c'est normal qu'il n'y avait rien dans mon fichier de log...

    J'espère que ça pourra t'aider !

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    36
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 36
    Points : 27
    Points
    27
    Par défaut
    (Re)Bonsoir,

    J'ai également réussi à débugguer mon script. Pour les débutants comme moi qui n'arrivent pas forcément à trouver les bugs avec des fichiers logs, je conseille l'utilisation d'un formulaire fictif qui appelle la page du "notify_url" pour le débugguer .

    Bonne soirée

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 16
    Points : 15
    Points
    15
    Par défaut
    Je UP ce sujet car j'ai exactement le même problème, ma page ipn.php n'est pas visitée par paypal... je ne sais vraiment pas pourquoi ça fait plus de 3 semaines que je ne trouve pas la solution

Discussions similaires

  1. [AJAX] header et page non appelée
    Par Tymk dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 26/05/2007, 15h42
  2. Page "Sources DirectX" : appel à contributions
    Par raptor70 dans le forum DirectX
    Réponses: 1
    Dernier message: 14/07/2006, 05h09
  3. Ouvrir une page internet non redimensionnable et sans menu
    Par Orionmel dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 07/01/2006, 00h30
  4. Verifier formulaire - fonction non appelée
    Par nerick dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 08/12/2005, 17h44
  5. Réponses: 3
    Dernier message: 23/08/2005, 11h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo