SCRIPT PAYPAL IPN

cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 - 27 mars 2012 à 21:10
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 - 4 avril 2012 à 14:43
Bonsoir,

Un souci avec ce script qui ne m'envoie pas de mail...

<?php
$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 .= "Host: ipnpb.paypal.com:443\r\n";
$header .= "Content-Type: application/x-www-form-urlencoded\r\n";
$header .= "Content-Length: " . strlen($req) . "\r\n\r\n";
$fp = fsockopen ('ssl://ipnpb.paypal.com', 443, $errno, $errstr, 30);

$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'];
$receiver_id = $_POST['receiver_id'];

if ($fp)
{
fputs ($fp, $header . $req);

while (!feof($fp))
{
$res = fgets ($fp, 1024);

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

$mail_From = "From: MonSite.com";

$mail_To = "MonEmail@toto.fr";

$mail_Subject = $payer_email.'/'.$receiver_id;      
$mail_Body = $req;		                    

foreach ($_POST as $key => $value)
{
$emailtext .$key . " " .$value ."\n\n";
}

mail($mail_To, $mail_Subject, $emailtext . "\n\n" . $mail_Body, $mail_From);
}
}
}
fclose ($fp);
}
?>



merci pour votre aide

cordialement

cantador

3 réponses

NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
30 mars 2012 à 21:32
Bonjour,

As-tu espionné les valeurs retournées par Paypal ?

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualVasic (onglet Références dans les propriétés du projet).
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
0
TychoBrahe Messages postés 1309 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 5 juin 2013 12
31 mars 2012 à 17:22
Salut,

$res = fgets ($fp, 1024);

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

Attention ! fgets() conserve le retour à la ligne. En conséquent, $res ne contient pas "VERIFIED" comme tu t'y attend mais "VERIFIED\r\n" (ou autre en fonction des cas). Bref, tu as plusieurs solution pour corriger ce problème :
- Utiliser trim() sur $res afin de virer ces caractères.
- Utiliser strncmp() afin de préciser la taille de la chaîne à calculer.

J'insiste fortement sur le fait que dans tous ces cas il faut impérativement que la chaîne "VERIFIED" soient seuel sur la ligne. Si d'autres données se trouvent sur cette même ligne, tu devrais plutôt utiliser strpos() ou autre fonction de ce genre.
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
4 avril 2012 à 14:43
Bonjour,

Merci à NHenry et TychoBrahe.

Après pas mal de galère, j'ai enfin réussi, à tout paramétrer et écrire les scripts PHP.
et tout marche nickel chrome.

cantador
0
Rejoignez-nous