- Marquer comme nouveau
- Ajouter en favori
- S'abonner
- Sourdine
- S'abonner au fil RSS
- Surligner
- Imprimer
- Signaler un contenu inapproprié
IPN envoyé OK via sandbox mais script non executé
Bonjour à tous,
cela fait 2 mois que je m'arrache les cheveux parce que l'IPN ne veut pas fonctionner sur mon site même après avoir réécrit mon code en suivant le tuto Tutorial_Paypal_php_MySQL_NIP.doc de PRSTSCcolonDTL mais en vain.
Sur la sandbox, on me dit que mes IPN sont envoyé ok (HTTP 200) mais mon script n'execute rien (que ce soit en mode SSL ou non)
$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 ('www.sandbox.paypal.com', 80, $errno, $errstr, 30); // liste des parametres reçu par paypal, exemple : $payment_status = $_POST['payment_status']; // Si Completed : tout est OK $payer_email = $_POST['payer_email']; // mail de l'acheteur $first_name = $_POST['first_name']; // prénom de l'acheteur $last_name = $_POST['last_name']; // nom de l'acheteur $txn_type = $_POST['txn_type']; // id paypal de transaction if (!$fp) { // HTTP ERROR echo "%NIP-F-SOCKOPEN, HTTP error " . $errno . " " . $errstr; exit; } else { fputs ($fp, $header . $req); while (!feof($fp)) { $res = fgets($fp, 1024); if (strcmp ($res, "VERIFIED") == 0) { // CODE envoi email + maj SQL completed } else if (strcmp ($res, "INVALID") == 0) { // CODE envoi email + maj SQL cancelled } } fclose ($fp); } ?>
Donc, je pense que Paypal accède bien à mon script IPN mais rien ne s'execute à l'interéieur et là je sèche carrément.
Si vous pouviez m'aider, çà me sauverai.
Merci d'avance.
Résolu ! Accéder à la solution.
Solutions approuvées
- Marquer comme nouveau
- Ajouter en favori
- S'abonner
- Sourdine
- S'abonner au fil RSS
- Surligner
- Imprimer
- Signaler un contenu inapproprié
Merci, grâce aux documents fournis par Toulousaing cela fonctionne désormais, j'ai pu débugguer mon script grâce aux log des erreurs.
MERCI
- Marquer comme nouveau
- Ajouter en favori
- S'abonner
- Sourdine
- S'abonner au fil RSS
- Surligner
- Imprimer
- Signaler un contenu inapproprié
Je précise que la paiement s'effectue correctement et que je reçoit bien l'email de confirmation de paiement de paypal.
Juste l'IPN qui dit fonctionne sur l'historique d'envoi d'IPN sans que j'en vois la couleur.
Après, je n'ai pas réussi non plus à mettre en place un système de log pour savoir si paypal vient vraiment ou non sur mon fichier paypal_ipn.php
- Marquer comme nouveau
- Ajouter en favori
- S'abonner
- Sourdine
- S'abonner au fil RSS
- Surligner
- Imprimer
- Signaler un contenu inapproprié
Source du nip.php avec le code de l'error logger : http://www.ddtl.fr/monsite/nip_ano.php.txt
idem pour le pdt.php : http://www.ddtl.fr/monsite/pdt_ano.php.txt
resultat du log : http://www.ddtl.fr/monsite/nip_log.htm
Good luck
et evitez de me téléphoner le week-end...
- Marquer comme nouveau
- Ajouter en favori
- S'abonner
- Sourdine
- S'abonner au fil RSS
- Surligner
- Imprimer
- Signaler un contenu inapproprié
- Marquer comme nouveau
- Ajouter en favori
- S'abonner
- Sourdine
- S'abonner au fil RSS
- Surligner
- Imprimer
- Signaler un contenu inapproprié
Bonjour,
Ah, enfin une piste sérieuse! Effectivement, j'ai trouvé le tuto très bien fait mais comme pas mal de monde, je peine tout de même à le faire fonctionner.
J'ai remplacé le NIP.php par nip_ano.php de toulousaing et je peux faire quelques constatations:
1- Dans le tuto, il est expliqué que pour l'adresse du Nip.php, il faut inscrire dans le compte paypal: http://adresseIP/monsite/nip.phpou bien http://127.0.0.1/monsite/nip.php
--> J'ai tenté les deux mais ça ne fonctionne qu'avec l'adresse inscrite normalement: http://www.lesiteaveclequeljevaisgagnerdesmillions.com/monsite/nip.php
2- concernant le fichier de log, j'ai comparé avec le fichier nip_log.htm de Toulousaing et je n'ai pas la totalité sans pour autant recevoir de message d'erreur. Le script semble bloquer à l'étape "set cookie". Voici mon rapport de log:
2012-12-03 13:11:49 : nip.php - === nip.php version v3.3-0. Début. === 2012-12-03 13:11:49 : nip.php - req = >cmd=_notify-validate&test_ipn=1&payment_type=instant&payment_date=04%3A10%3A23+Dec+03%2C+2012+PST&payment_status=Completed&address_status=confirmed&payer_status=verified&first_name=John&last_name=Smith&payer_email=buyer%40paypalsandbox.com&payer_id=TESTBUYERID01&address_name=John+Smith&address_country=United+States&address_country_code=US&address_zip=95131&address_state=CA&address_city=San+Jose&address_street=123%2C+any+street&business=seller%40paypalsandbox.com&receiver_email=seller%40paypalsandbox.com&receiver_id=TESTSELLERID1&residence_country=US&item_name=something&item_number=AK-1234&quantity=1&shipping=3.04&tax=2.02&mc_currency=USD&mc_fee=0.44&mc_gross=12.34&mc_gross_1=9.34&txn_type=web_accept&txn_id=231231210¬ify_version=2.1&custom=xyz123&charset=windows-1252&verify_sign=A-JCugmDzymduTqz8KX2P-RFUig9AcRy2WI5RnJNiZM1cAs9-RNd97do< 2012-12-03 13:11:49 : nip.php - lecture des data du Post 2012-12-03 13:11:49 : nip.php - Paypal Transaction ID = >231231210< 2012-12-03 13:11:49 : nip.php - Paiement status = >Completed< 2012-12-03 13:11:49 : nip.php - Paiement date = >04:10:23 Dec 03, 2012 PST< 2012-12-03 13:11:49 : nip.php - Buyer Last Name = >Smith< 2012-12-03 13:11:49 : nip.php - Buyer First Name = >John< 2012-12-03 13:11:49 : nip.php - SQL unique ID = >xyz123< 2012-12-03 13:11:49 : nip.php - Paiement amount = >12.34< 2012-12-03 13:11:49 : nip.php - Paiement Currency = >USD< 2012-12-03 13:11:49 : nip.php - Pending reason (if any) = >< 2012-12-03 13:11:49 : nip.php - Refund reason (if any) = >< 2012-12-03 13:11:49 : nip.php - Buyer email = >b_u_y_e_r< 2012-12-03 13:11:49 : nip.php - Vendor email = >s_e_l_l_e_r< 2012-12-03 13:11:49 : nip.php - ouverture socket réel SSL 2012-12-03 13:11:51 : nip.php - res = HTTP/1.1 200 OK 2012-12-03 13:11:51 : nip.php - res = Date: Mon, 03 Dec 2012 12:11:20 GMT 2012-12-03 13:11:51 : nip.php - res = Server: Apache 2012-12-03 13:11:51 : nip.php - res = X-Frame-Options: SAMEORIGIN 2012-12-03 13:11:51 : nip.php - res = Set-Cookie: cwrClyrK4LoCV1fydGbAxiNL6iG=qvQ-C0AkkbSPrC18R4hTYXyKXiVsGdrJuu9PJ28B2UfOs_e2i8sBYaN0k-awzoc0EE8bgk-e__6j-w02EQbmsg_9Hw7ryis4oGM2wK8OwwtVvSnMvUG2gZGb482H3qRVZUPAPW%7csI5uZSsPKSZJIV4k7NET6moIrWKKtsy5z24kbrPtejI3ms_9jKsIT5d4l7wRzmdTcgO690%7cx5QZqyKdp3xQ4l2nptzEwZMP4unyu4j7E70InJMmK7LB8TzJvr9TU1XnaAdGxjA_9qgKj0%7c1354536680; domain=.paypal.com; path=/; Secure; HttpOnly 2012-12-03 13:11:51 : nip.php - res = Set-Cookie: cookie_check=yes; expires=Thu, 01-Dec-2022 12:11:20 GMT; domain=.paypal.com; path=/; Secure; HttpOnly
Est-il possible d'avoir un coup de main?
- Marquer comme nouveau
- Ajouter en favori
- S'abonner
- Sourdine
- S'abonner au fil RSS
- Surligner
- Imprimer
- Signaler un contenu inapproprié
Voilà ce que me donne le nip_error_log.txt:
[03-Dec-2012 15:25:04] PHP Warning: date() [<a href='function.date'>function.date</a>]: It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Europe/Berlin' for 'CET/1.0/no DST' instead in /home/XXX/www/monsite/nip.php on line 22
Le problème peut-il venir de là?
- Marquer comme nouveau
- Ajouter en favori
- S'abonner
- Sourdine
- S'abonner au fil RSS
- Surligner
- Imprimer
- Signaler un contenu inapproprié
Suite des investigations:
le log.htm et le nip_error_log.txt semblaient me dire que mon serveur n'était pas à l'heure alors j'ai refais une petite manip internet et dans le nip.php j'ai ajouté tout au début:
<?php date_default_timezone_set('UTC');
Le nip.php semble du coup commencer à s'exécuter mais ça ne va pas jusqu'au bout comme le montre le errlog.htm:
2012-12-03 22:43:53 : nip.php - === nip.php version v3.3-0. Début. === 2012-12-03 22:43:53 : nip.php - req = >cmd=_notify-validate&mc_gross=10.00&protection_eligibility=Ineligible&payer_id=5QDTJ8DHDX5YL&tax=0.00&payment_date=14%3A43%3A19+Dec+03%2C+2012+PST&payment_status=Completed&charset=windows-1252&first_name=toto&mc_fee=0.59¬ify_version=3.7&custom=PoUbKPZdYZ&payer_status=verified&business=ADRESSEBIZ&quantity=1&verify_sign=A4YCF8aeQSx10D4zGWW4-6QyjyUAAFH24B89th.Ywd5CVw7D-lr84XS6&payer_email=ADRESSPER%boulot.net&txn_id=35T62486VN697745Y&payment_type=instant&last_name=tutu&receiver_email=ADRESSEBIZ%40boulot.net&payment_fee=&receiver_id=SW8U2KBA2Z34S&txn_type=web_accept&item_name=Inscription+%C3%A0+MonSite&mc_currency=EUR&item_number=&residence_country=FR&test_ipn=1&handling_amount=0.00&transaction_subject=PoUbKPZdYZ&payment_gross=&shipping=0.00&ipn_track_id=9d4043b5d90dc< 2012-12-03 22:43:53 : nip.php - lecture des data du Post 2012-12-03 22:43:53 : nip.php - Paypal Transaction ID = >35T62486VN697745Y< 2012-12-03 22:43:53 : nip.php - Paiement status = >Completed< 2012-12-03 22:43:53 : nip.php - Paiement date = >14:43:19 Dec 03, 2012 PST< 2012-12-03 22:43:53 : nip.php - Buyer Last Name = >tutu< 2012-12-03 22:43:53 : nip.php - Buyer First Name = >toto< 2012-12-03 22:43:53 : nip.php - SQL unique ID = >PoUbKPZdYZ< 2012-12-03 22:43:53 : nip.php - Paiement amount = >10.00< 2012-12-03 22:43:53 : nip.php - Paiement Currency = >EUR< 2012-12-03 22:43:53 : nip.php - Pending reason (if any) = >< 2012-12-03 22:43:53 : nip.php - Refund reason (if any) = >< 2012-12-03 22:43:53 : nip.php - Buyer email = >ADRESSE MAIL PER< 2012-12-03 22:43:53 : nip.php - Vendor email = > ADRESSE MAIL BIZ< 2012-12-03 22:43:53 : nip.php - ouverture socket réel SSL 2012-12-03 22:43:54 : nip.php - res = HTTP/1.1 200 OK 2012-12-03 22:43:54 : nip.php - res = Date: Mon, 03 Dec 2012 22:43:23 GMT 2012-12-03 22:43:54 : nip.php - res = Server: Apache 2012-12-03 22:43:54 : nip.php - res = X-Frame-Options: SAMEORIGIN 2012-12-03 22:43:54 : nip.php - res = Set-Cookie: cwrClyrK4LoCV1fydGbAxiNL6iG=lBVFkBUCGTN1E_qmFZ3K96nKGgHq2yixNco8ifeNDGqqTyhIgjmnbCumtiqAVq7xaJunIS0xLjRoXAAY_hkqnDOCCMuzJzGyU3KSOMNwvhxzslwJO0knrVleKKFkaODBxTDknW%7cVCcsqYSd_mvmWj99oYRFD1N2R6NFn9WLpol_RJ6v4Cpprh6NdjdUbFiHnbIP9leWKUE-cm%7cZMmUEcX_hHfc4OkPxGytGb5XtBcnlGm7hZbAMvtseB3ItV8M5_fcPQfss-Kh1d8iR3cJgW%7c1354574604; domain=.paypal.com; path=/; Secure; HttpOnly 2012-12-03 22:43:54 : nip.php - res = Set-Cookie: cookie_check=yes; expires=Thu, 01-Dec-2022 22:43:24 GMT; domain=.paypal.com; path=/; Secure; HttpOnly 2012-12-03 22:43:54 : nip.php - res = Set-Cookie: navcmd=_notify-validate; domain=.paypal.com; path=/; Secure; HttpOnly 2012-12-03 22:43:54 : nip.php - res = Set-Cookie: navlns=0.0; expires=Sun, 28-Nov-2032 22:43:24 GMT; domain=.paypal.com; path=/; Secure; HttpOnly 2012-12-03 22:43:54 : nip.php - res = Set-Cookie: Apache=10.74.8.43.CHIFFREINTERDIT; path=/; expires=Wed, 26-Nov-42 22:43:23 GMT 2012-12-03 22:43:54 : nip.php - res = Vary: Accept-Encoding 2012-12-03 22:43:54 : nip.php - res = Strict-Transport-Security: max-age=14400 2012-12-03 22:43:54 : nip.php - res = Connection: close 2012-12-03 22:43:54 : nip.php - res = Content-Type: text/html; charset=UTF-8 2012-12-03 22:43:54 : nip.php - res = 2012-12-03 22:43:54 : nip.php - res = INVALID 2012-12-03 22:43:54 : nip.php - Status INVALID retourné par Paypal 2012-12-03 22:43:54 : nip.php - === Script interrompu anormalement ===
Je ne comprends pas trop ce statut invalid retourné par paypal car lorsque je check l'historique des envois de nip dans la sandbox, tout est ok.
- Marquer comme nouveau
- Ajouter en favori
- S'abonner
- Sourdine
- S'abonner au fil RSS
- Surligner
- Imprimer
- Signaler un contenu inapproprié
Ah, j'ai finalment réussi!
Alors pour ceux qui seraient eventuellement bloqués et je pense qu'il s'agit de débutants comme moi qui tente de tester le script dans la sandbox, il ne faut pas oublier de changer la localisation du serveur en sandbox.paypal.com. Le tuto étant destiné à des "testeurs", je n'ai pas trop compris pourquoi était inscrit:
$fp = @fsockopen ('ssl://ipnpb.paypal.com', 443, $errno, $errstr, 30);
Ensuite, il y a une erreur sur cette ligne dans le script modifié:
$query = "UPDATE utilisateurs SET idTransaction='$txn_id', autorisation='3', date = NOW(), email_a = '$payer_email' WHERE idUnique='$idUnique'";
Il faut en fait enlever enlever le "_a" qui n'est attribué à rien et juste garder:
$query = "UPDATE utilisateurs SET idTransaction='$txn_id', autorisation='3', date = NOW(), email = '$payer_email' WHERE idUnique='$idUnique'";
Voilà, un grand bravo aux bénévoles qui ont élaboré ce tuto! 🙂
- Marquer comme nouveau
- Ajouter en favori
- S'abonner
- Sourdine
- S'abonner au fil RSS
- Surligner
- Imprimer
- Signaler un contenu inapproprié
Merci, grâce aux documents fournis par Toulousaing cela fonctionne désormais, j'ai pu débugguer mon script grâce aux log des erreurs.
MERCI
- Marquer comme nouveau
- Ajouter en favori
- S'abonner
- Sourdine
- S'abonner au fil RSS
- Surligner
- Imprimer
- Signaler un contenu inapproprié
ébin voilà, Bonne Année...
Le truc que t'avais pas compris, c'est page 21 ?
Effectivement, je suis par l'esprit dans la Sandbox, et tout d'un coup le code ouvre le site de prod de PP.
Erreur grossière, corrigée subséquemment et nonobstant.
Content d'avoir été utile au moins une fois...
Bye
Haven't Found your Answer?
It happens. Hit the "Login to Ask the community" button to create a question for the PayPal community.
- confirmation de paiement dans Les Archives
- Paiement par CB, sommes nous obliger de s'inscrire à paypal ? dans Les Archives
- Paiement par CB, sommes nous obliger de s'inscrire à paypal ? dans Les Archives
- Mise en place d'un bouton de paiement dans Les Archives
- Page IPN paypal appellée mais script non exécuté (sandbox) dans Les Archives