Je me retrouve avec un problème qui me casse le crane
depuis le début de l'après midi avec l'ipn paypal. Après parcouru le net dans tous les sens je ne trouve pas la solution mon soucis. En faite tous fonction jusqu'au paiement mais le script IPN ne me retourne pas les info sur la commandes.Voilas mon script ipn :
Syntaxe: [ Télécharger ] [ Masquer ]
Code php
<?php
$notify_email = "contact@monsite.fr";
// read the post from PayPal system and add 'cmd'
$req = 'cmd=_notify-validate';
foreach ($_POST as $key => $value) {
$value = urlencode(stripslashes($value));
$req .= "&$key=$value";
}
// post back to PayPal system to validate
$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.paypal.com', 80, $errno, $errstr, 30);
$fp = fsockopen ('www.sandbox.paypal.com', 80, $errno, $errstr, 30);
// assign posted variables to local variables
$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'];
$custom = $_POST['custom'];
$headerMail= "Content-Type:text/html;charset=utf8\n";//permet d'envoyer les message au format html
$headerMail.= "Content-Transfer-Encoding: 8bit\n";//permet d'envoyer les message au format html
$headerMail.="From: me";//pour répondre au message
//on prépare le texte de l'email
$textMail="
<strong>Détail de la commande</strong><br />
Commande numéro:".$item_number."<br />
prix: ".$payment_amount." €<br />
siren: ".$custom."
";
if (!$fp) {
// HTTP ERROR
} else {
fputs ($fp, $header . $req);
while (!feof($fp)) {
$res = fgets ($fp, 1024);
if (strcmp ($res, "VERIFIED") == 0) {
// vérifier que payment_status a la valeur Completed
if ( $payment_status == "Completed") {
// vérifier que txn_id n'a pas été précédemment traité: Créez une fonction qui va interroger votre base de données
if (VerifIXNID($txn_id) == 0) {
// vérifier que receiver_email est votre adresse email PayPal principale
if ( "contac_1322151745_biz@cliquerctrouver.fr" == $receiver_email) {
// vérifier que payment_amount et payment_currency sont corrects
// traiter le paiement
}
else {
// Mauvaise adresse email paypal
}
}
else {
// ID de transaction déjà utilisé
}
}
else {
// Statut de paiement: Echec
}
// si le payment est accepter traitement de l'information
include("../php/connexion_bd.php");
mysql_connect("$nom_du_serveur","$nom_utilisateur","$passe");
mysql_select_db("$nom_de_la_base") or die('Impossible de sélectionner une base de donnée. Assurez vous d\'avoir correctement remplit les données du fichier connexion_bd.php.');
$sql = 'UPDATE adherent SET validation = 1 WHERE siren = '.$custom.'';
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.''.mysql_error());
}
else if (strcmp ($res, "INVALID") == 0) {
// log for manual investigation
}
}
fclose ($fp);
}
?>
$notify_email = "contact@monsite.fr";
// read the post from PayPal system and add 'cmd'
$req = 'cmd=_notify-validate';
foreach ($_POST as $key => $value) {
$value = urlencode(stripslashes($value));
$req .= "&$key=$value";
}
// post back to PayPal system to validate
$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.paypal.com', 80, $errno, $errstr, 30);
$fp = fsockopen ('www.sandbox.paypal.com', 80, $errno, $errstr, 30);
// assign posted variables to local variables
$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'];
$custom = $_POST['custom'];
$headerMail= "Content-Type:text/html;charset=utf8\n";//permet d'envoyer les message au format html
$headerMail.= "Content-Transfer-Encoding: 8bit\n";//permet d'envoyer les message au format html
$headerMail.="From: me";//pour répondre au message
//on prépare le texte de l'email
$textMail="
<strong>Détail de la commande</strong><br />
Commande numéro:".$item_number."<br />
prix: ".$payment_amount." €<br />
siren: ".$custom."
";
if (!$fp) {
// HTTP ERROR
} else {
fputs ($fp, $header . $req);
while (!feof($fp)) {
$res = fgets ($fp, 1024);
if (strcmp ($res, "VERIFIED") == 0) {
// vérifier que payment_status a la valeur Completed
if ( $payment_status == "Completed") {
// vérifier que txn_id n'a pas été précédemment traité: Créez une fonction qui va interroger votre base de données
if (VerifIXNID($txn_id) == 0) {
// vérifier que receiver_email est votre adresse email PayPal principale
if ( "contac_1322151745_biz@cliquerctrouver.fr" == $receiver_email) {
// vérifier que payment_amount et payment_currency sont corrects
// traiter le paiement
}
else {
// Mauvaise adresse email paypal
}
}
else {
// ID de transaction déjà utilisé
}
}
else {
// Statut de paiement: Echec
}
// si le payment est accepter traitement de l'information
include("../php/connexion_bd.php");
mysql_connect("$nom_du_serveur","$nom_utilisateur","$passe");
mysql_select_db("$nom_de_la_base") or die('Impossible de sélectionner une base de donnée. Assurez vous d\'avoir correctement remplit les données du fichier connexion_bd.php.');
$sql = 'UPDATE adherent SET validation = 1 WHERE siren = '.$custom.'';
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.''.mysql_error());
}
else if (strcmp ($res, "INVALID") == 0) {
// log for manual investigation
}
}
fclose ($fp);
}
?>
Et mon bouton paypal :
Syntaxe: [ Télécharger ] [ Masquer ]
Code html
<form action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post">
<input type='hidden' value="90" name="amount" />
<input name="currency_code" type="hidden" value="EUR" />
<input name="return" type="hidden" value="http://dev.monsite.fr/php/recap.php" />
<input name="cancel_return" type="hidden" value="http://dev.monsite.fr/php/annule.php" />
<input name="notify_url" type="hidden" value="http://dev.monsite.fr/php/IPN.php" />
<input name="cmd" type="hidden" value="_xclick" />
<input name="business" type="hidden" value="contac_1322151745_biz@monsite.fr" />
<input name="item_name" type="hidden" value="Site ecommerce" />
<input name="no_note" type="hidden" value="1" />
<input name="lc" type="hidden" value="FR" />
<input name="bn" type="hidden" value="PP-BuyNowBF" />
<input name="custom" type="hidden" value="<?php echo $id ?>" />
<input alt="Effectuez vos paiements via PayPal : une solution rapide, gratuite et sécurisée" name="submit" src="https://www.paypal.com/fr_FR/FR/i/btn/btn_buynow_LG.gif" type="image" /><img src="https://www.paypal.com/fr_FR/i/scr/pixel.gif" border="0" alt="" width="1" height="1" />
</form>
<input type='hidden' value="90" name="amount" />
<input name="currency_code" type="hidden" value="EUR" />
<input name="return" type="hidden" value="http://dev.monsite.fr/php/recap.php" />
<input name="cancel_return" type="hidden" value="http://dev.monsite.fr/php/annule.php" />
<input name="notify_url" type="hidden" value="http://dev.monsite.fr/php/IPN.php" />
<input name="cmd" type="hidden" value="_xclick" />
<input name="business" type="hidden" value="contac_1322151745_biz@monsite.fr" />
<input name="item_name" type="hidden" value="Site ecommerce" />
<input name="no_note" type="hidden" value="1" />
<input name="lc" type="hidden" value="FR" />
<input name="bn" type="hidden" value="PP-BuyNowBF" />
<input name="custom" type="hidden" value="<?php echo $id ?>" />
<input alt="Effectuez vos paiements via PayPal : une solution rapide, gratuite et sécurisée" name="submit" src="https://www.paypal.com/fr_FR/FR/i/btn/btn_buynow_LG.gif" type="image" /><img src="https://www.paypal.com/fr_FR/i/scr/pixel.gif" border="0" alt="" width="1" height="1" />
</form>
Voilas je pense tout vous avoir dis... Si vous avez une soluce.
PS: aprés avoir tester mon script plusieur foi j'ai supprimer le fichier ipn.php et la visiblement le fichier n'est pas utiliser car il y a aucune erreur lors de la transaction.
Merci




