Je me retrouve avec un problème qui me casse le crane
Voilas mon script ipn :
<?php
$notify_email = "[email protected]";
// 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 ( "[email protected]" == $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 :
<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="[email protected]" />
<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