ZauChoco
-
Modifié par ZauChoco le 22/02/2017 à 18:35
ZauChoco -
22 févr. 2017 à 19:21
Bonsoir,
J' installe en ce moment un IPN sur mon site web pour faire des paiement:
Mais problème: Tout est bon (Normalement) mais mon code dans le ipn ne s'execute pas.
J'ai tout tenté mais la je seche !
Pouvez vous trouver ou est mon erreur svp:
ipn.php:
<?php
// prépare la requête de vérification
$req = "cmd=_notify-validate";
// ajoute le message IPN au format NVP à la requête de vérification
foreach ($_POST as $key => $value) {
$value = urlencode(stripslashes($value));
$req .= '&$key=$value';
}
// définition des headers pour la requête de vérification
$header = "POST /cgi-bin/webscr HTTP/1.0rn";
// test
$header .= "Host: www.sandbox.[/sites/details/paypal.com paypal].com:443rn";
// production
//$header .= "Host: ipnpb.paypal.com:443rn";
$header .= "Content-Type: application/x-www-form-urlencodedrn";
$header .= "Content-Length: " . strlen($req) . "\r\n\r\n";
// Ouverture du socket
// test
$fp = fsockopen ('ssl://www.sandbox.paypal.com', 443, $errno, $errstr, 30);
// production
//$fp = fsockopen ('ssl://ipnpb.paypal.com', 443, $errno, $errstr, 30);
// s'il y a une erreur lors de l'ouverture du socket
if (!$fp) {
// on s'envoie un mail pour être informé de l'erreur
$msg = 'Erreur de socket, l\'url n\'a pas pu être ouverte';
mail('***@***', 'erreur socket', $msg);
}
else {
// on post la requête de vérification
fputs ($fp, $header . $req);
// créé une boucle tant qu'on est pas arrivé à la fin du fichier
while (!feof($fp)) {
// lit la réponse de paypal
$res = fgets ($fp, 1024);
// si paypal répond VERIFIED,
// tout s'est bien déroulé et on peut procéder à nos traitements
if (strcmp ($res, 'VERIFIED') == 0) {
$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'];
include 'bdd.php';
$sommereq = $bdd->prepare("SELECT * FROM buy WHERE ID = ? AND statue = 0");
$sommereq->execute(array($custom['id']));
$somme = $sommereq->fetch();
if($receiver_email == "***@outlook.fr") {
if($somme['prix'] == $payment_amount) {
$conf = $bdd->prepare('UPDATE buy SET statue = 1 WHERE ID = :ID');
$conf->execute(array(
'ID' => $custom['id']
));
}
}
// type de transaction
// $_POST['txn_type']
// mail du compte paypal à qui est destiné le paiement
// $_POST['receiver_email']
// montant
// $_POST['mc_gross']
// id de la transaction
// $_POST['txn_id']
// champ personnalisé
// $_POST['custom']
}
// si la transaction est invalide
else if (strcmp ($res, 'INVALID') == 0) {
// on s'envoie un mail pour être informé de l'erreur
$msg = 'Message de l\'IPN : '.$res;
mail('***@***', 'erreur IPN', $msg);
}
}
fclose ($fp);
}