Venez baraguiner avec la communauté !
Vous n'êtes pas identifié.
avant tout, merci pour le tuto.
ET comme beaucoup de personne, j'ai un pb avec l'IPN.
Je fais ma transaction, les comptes sont crediter et debiter, il me renvoie bien sur la page de retour, il me lit bien ma page de retour de l'IPN, j'ai bien la transaction dans mon historique IPN, mais après, j'ai plus rien.
Je lui ai juste dis de m'envoyé un mail en php dans chaque categorie, mais rien.
Il m'envoie juste mon mail que j'ai mis en tout debut du code de la page de retour d'IPN.
merci d'avance pour votre aide.
Hors ligne
Tout d'abord merci pour le tuto.
Voilà j'ai commencé à mettre en place le système de paiement mais je rencontre un soucis au niveau du contrôle des IPN. Pour vérifier que ma page est bien appelée par paypal j'effectue l'envoie d'un mail mais j'ai remarqué que ce dit mail était envoyé plusieurs fois donc j'aimerais savoir si il était normal que mon script soit appelé plusieurs fois de suite.
Après j'ai l'impression que mon script ne s'exécute pas entièrement mais cela pourrait venir de mes conditions de vérification.
Pour information, mon site est développé sous Zend Framework.
Merci d'avance
Hors ligne
J'ai modifier l'emplacement de mes envoies de mail pour voir et j'ai plus rien des que je rentre dans les controles de la connexion
if (!$fp) {
$message .="Erreur HTTP\n";
mail('monmail','Debugg Paypal',$message);
} else {
fputs ($fp, $header . $req);
$message .="Pas d'erreur HTTP";
mail('monmail','Debugg Paypal',$message);
while (!feof($fp)) {
$res = fgets ($fp, 1024);
if (strcmp ($res, "VERIFIED") == 0) {
$message .="transaction valide\n";
mail('monmail','Debugg Paypal',$message);
}
else if (strcmp ($res, "INVALID") == 0) {
$message .="transaction invalide\n";
mail('monmail','Debugg Paypal',$message);
}
}
fclose ($fp);
}
Hors ligne
Je suis en train de me demander si ca vient pas aussi de la fonction mail qui est capricieuse sous ovh ^^; je vais tester en faisant un fichier de log.
EDIT : Oui c'est le temps de latence pour l'envoi du mail ce matin je les ai tous eut. Je vais voir avec le log si c'est pas plus facile a débugger.
Dernière modification par n1k00 (29/11/2009 11:04:04)
Hors ligne
Bonjour à tous,
Bravo à Djo pour ce tuto qui est bien utile, en plus des infos dispo sur le site de Paypal et ce qu'on peut trouver sur google...
Comme beaucoup ici, j'ai un souci avec la récupération de données par l'IPN. Je vais tenter de décrire mon projet et ce qui me fait galérer, et si quelqu'un peut m'aider, j'en serais ravi et reconnaissant.
Je réalise actuellement un projet où après un paiement via Paypal, l'utilisateur est censé voir son compte crédité de "crédits" qu'il peut ensuite dépenser sur le site.
Je dois donc principalement récupérer le nombre de crédits achetés. Or je ne vois pas du tout comment débugguer la page qui récupère les infos de l'IPN puisqu'elle est appelée par Paypal de façon transparente. Je ne peux donc voir aucun message d'erreur ni mettre des "mouchards" (echo "erreur") dans le code pour voir où est le souci!
Par ailleurs, j'ai pu lire qu'on utilisais des "sockets" <- je tiens à dire que je n'y connais rien! J'utilise un hébergeur gratuit: 000webhost.com, je sais pas s'il tolère les sockets... bref, je vois pas du tout comment détecter le(s) problème(s)
Merci à celui ou celle qui saura m'aider
Hors ligne
Oula effectivement, ton hébergeur sera trop limité ...
Ensuite pour le debug, comme le disais n1k00, tu peux utiliser un fichier de log dans lequel tu écrira. fopen, fput ...
Hors ligne
Merci Djo pour cette réponse si rapide. Pour le log, je vais essayer ça! Y a-t-il des hébergeurs gratuits permettant l'utilisation d'IPN? (comme c'est pour un projet, ça m'embète de payer, mais si je n'ai pas le choix, tanpis!)
Hors ligne
Je n'en ai malheureusement pas à ma connaissance.
Mieux vaut prendre un petit serveur pas trop cher chez OVH par exemple qui te serviras pour tes autres projets web, c'est toujours utile 
Hors ligne
Ok merci 
Hors ligne
L'offre Pro (4.99€) suffit-elle, ou faut-il directement selectionner celle business (9.99€)? Et pour combien de temps on s'engage?
Parce que ça fait un peu raide si je m'en sers pas trop après le projet... 
Hors ligne
Bonsoir,
Désolé de revenir poster à nouveau mais je suis un peu perdu, et je me dis aussi que mon problème pourra servir à ceux qui auront le même souci.
J'ai donc hébergé mon site sur OVH comme l'on m'avait conseillé (j'ai un forfait "perso"), et je suis exactement dans la même situation qu'alain: c'est à dire que mon compte buyer est débité, celui du seller est crédité, mais je n'arrive pas à récupérer les info de l'ipn.
J'ai également suivi le conseil de créer un fichier log pour voir déjà si je passais mais rien n'est modifié dans le log non plus... Il doit y avoir quelque chose que je fais mal. Je c/c le code de ma page de récupération, si quelqu'un voit une erreur évidente ou peut m'aider sur ma façon de tester...
<?php
// read the form from PayPal system & add 'cmd'
$req = 'cmd=_notify-validate';
foreach ($_POST as $key => $value) {
$value = urlencode(stripslashes($value));
$req .= "&$key=$value";
}
// send back to PayPal system for 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 ('ssl://www.sandbox.paypal.com', 443, $errno, $errstr, 30);
$filename = "log.txt"
$filePointer = fopen($filename,"w");
fputs($filePointer,"ping");
$credits_add = $_POST['on0'];
$payment_status = $_POST['payment_status'];
$txn_id = $_POST['txn_id'];
$receiver_email = $_POST['receiver_email'];
$payer_email = $_POST['payer_email'];
$id_user = $_POST['custom'];
if (!$fp) { // ERROR HTTP
}
else {
fputs ($fp, $header . $req);
while (!feof($fp)) {
$res = fgets ($fp, 1024);
if (strcmp ($res, "VERIFIED") == 0) {
// Valid Transaction :
// check if payment_status is equal to "Completed "
if ( $payment_status == "Completed"){
// check that txn_id has not been previously processed: Créez une fonction qui va interroger votre base de données
if (VerifIXNID($txn_id) == 0) {
// check receiver_email is our email
if ( "votreEmailSeller" == $receiver_email) {
// process the payment >> credit the customer credit account
require("conf.php");
// CONNEXION MYSQL
$db_link = @mysql_connect($sql_serveur,$sql_user,$sql_passwd);
// SELECTION OF THE MEMBER CORRESPONDING TO THE ID
$request=mysql_db_query($sql_db,'select * from member where MemberId="'.$id_user.'"',$db_link) or die(mysql_error());
// IF ID DOES NOT EXIST
if(mysql_num_rows($request)==0){
header("Location:$url_erreur");
exit;
}
$number_credits=mysql_result($request,0,"Credits");
$number_credits+=$credits_add;
$request2=mysql_db_query($sql_db,'update member set Credits="'.$number_credits.'"where MemberId="'.$id_user.'"',$db_link) or die(mysql_error());
mysql_close();
echo "Congrats, you have now:".$number_credits."Credits in your account";
}
else { echo "wrong paypal adress"
}
}
else { echo "Transcation ID already used"
}
}
else { echo "Payment status: fail";
}
}
else if (strcmp ($res, "INVALID") == 0){ // Invalid Transaction
}
}
fclose ($fp);
}
?>Merci à ceux qui auront le temps d'y jeter un oeil et par la même occasion de me jeter une bouée de sauvetage 
Hors ligne
Bonsoir ou Bonjour 
J'aurais aimé savoir quel était l'adresse à mettre pour le passage en prod pour les IPN?? j'ai mis ssl://www.paypal.com par déduction mais je préfère être sur de moi
Hors ligne
Bonsoir à tous,
Je pense avoir bien débuggé mon code. D'ailleurs, j'en profite pour aider les débutants comme moi qui ont des Parse Error un peu partout dans leur scripts pour débugger: dans ce cas les fichiers log ou mail sont inutiles car s'il y a des erreurs de ce type, le script ne passera pas. Je conseillerais donc de faire une page test html avec un formulaire bidon où on envoie des variables aux noms de ceux utilisés par l'IPN. Ca permet d'avoir les messages d'erreur dans le navigateur (c'est une solution bricolage, mais bon, ça m'a permis de débuggé en 2 minutes ce que je farfouillais depuis 2 jours
)
Par contre, ma condition "VERIFIED" n'est jamais vérifié (en effet maintenant que mon script tourne, je m'envoie des mail à chaque cas, et je suis toujours dans le cas "INVALID"). Pourtant, côté Paypal, tout à l'air de bien passer, mes deux comptes sandbox sont Verified, la transcation est prise en compte, etc... Je vois pas d'où ça peut venir... Peut-être quelqu'un a-t-il déjà eu ce problème?
Bonsoir 
Hors ligne
Le principe du log permet de voir ou ton script se stope mais c'est sur que si ont à pas l'habitude de développer c'est pas forcement facile de repérer l'erreur que l'on peut obtenir
Hors ligne
Bonjour,
Petite question.
Tout est bien installé, lorsque le client clique sur acheter il est bien redirigé sur la plateforme de paiement Paypal.
Par contre en haut de la page j'ai une adresse email et non le titre du site. De plus en bas on a le "Annuler et retourner sur le site [email protected]" et non le nom du site.
Je ne trouve pas ou personnaliser ce titre.
Pouvez-vous m'aider ?
Merci d'avance !
Hors ligne
Bonjour,
j'ai une petite question sur le tuto:
dans les champs du formulaire, on a le champs "amount" du paiement (voir ici) et quand on récupère les données, on récupère à partir de mc_gross : $payment_amount = $_POST['mc_gross']; ici
Il n'y a pas un problème la? Lequel doit on utiliser pour récupérer le montant total que le client doit payer?
Merci.
Hors ligne
mc_gross est bien le montant qu'à payé le client sur Paypal. Le montant final.
Alors que dans le formulaire, il peut être traffiqué en HTML avec firebug ou autre.
Hors ligne
Bonjour
alors premièrement ton tuto est super car je les réussi ...
Neamoin j'ai une question la page du ipn est exécuter depuis les deveurs de paypal ? donc, sa ne peut pas être depuis cette page que jajoute des crédits aux membres ? Puisque l'utilisateur est connecter depuis son ordi mais mon site ne va pas le voir connecter si c'est avec le script ipn donc il ne pourras pas créditer ?
Dites moi si je me trompe
a bientot
Hors ligne
bonjour,
Je me permet d'upper ce topic car demain soir nous avons reunion de l'assoc et je voudrai avoir avancer ...
Cordialement
Hors ligne