1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101
| <?php
// lire le formulaire provenant du système PayPal et ajouter 'cmd'
$req = 'cmd=_notify-validate';
foreach ($_POST as $key => $value) {
$value = urlencode(stripslashes($value));
$req .= "&$key=$value";
echo $req. '<br />';
}
echo 'fin de la loop';
echo '<br />';
echo '$req '. $req;
// renvoyer au système PayPal pour validation
$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);
//$i pour le nombre d'item
$i = 1;
for ($=1; $_POST['item_name.'$i];$i++)
{
$item_name.$i = $_POST['item_name'.$i];
}
// $i pour le nombre d'item
for ($i=1;$_POST['item_number'.$i];$i++)
{
$item_number.$i = $_POST['item_number'.$i];
}
$payment_status = $_POST['payment_status'];
// $i pour le nombre d'item
for ($i=1;$_POST['mc_gross'.$i];$i++)
{
$payment_amount.$i = $_POST['mc_gross'.$i];
}
$payment_currency = $_POST['mc_currency'];
$txn_id = $_POST['txn_id'];
$receiver_email = $_POST['receiver_email'];
$payer_email = $_POST['payer_email'];
$info_client = $_POST['custom'];
if (!$fp)
{
// ERREUR HTTP
echo $errno. ' et ' . $errstr;
}
else
{
fputs ($fp, $header . $req);
echo '<br />'. ' $fp ($header $req) <br />';
echo $fp;
while (!feof($fp))
{
$res = fgets ($fp, 1024);
if (strcmp ($res, "VERIFIED") == 0)
{
// transaction valide
echo 'valide';
}
else if (strcmp ($res, "INVALID") == 0)
{
// Transaction invalide
echo 'invalide';
}
}
fclose ($fp);
}
// transaction valide
// 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 ( "votreEmailSeller" == $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
}
?> |
Partager