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 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237
| <?php
include('connexion_base.php');
mail('monemail', 'transaction', 'ligne 3 executee'); //déjà je m'envoie un mail ici pour voir si ça s'execute vraiment
/*
ETAPE 1
On commence par générer la requête à réenvoyer à PayPal
(Au départ, PayPal envoie une requête à une URL que vous aurez spécifiée dans
votre espace PayPal dans la rubrique "Préférences de Notification instantanée
de paiement" et qui est donc l'adresse URL de cette page même sur votre serveur).
*/
// Il faut ajouter 'cmd=_notify-validate' à la requête reçue
$req = 'cmd=_notify-validate';
// On reforme la requête avec les variables envoyées par Paypal
foreach ($_POST as $key => $value)
{
$value = urlencode(stripslashes($value));
$req .= "&$key=$value";
}
/*
ETAPE 2
On renvoie la requête au système PayPal pour validation (par POST) qui nous
permettra d'avoir toutes les informations de la transaction et de vérifier
si la transaction est bien validée.
*/
$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);
/*
ETAPE 3
On affecte les variables fournies par PayPal
*/
// Désignation d'achat (ex : Achat de vidéos)
$designation = $_POST['item_name'];
// A utiliser de préférence pour définir un id ou autre qui représente le payeur (voir autre page fournit dans la source)
$compte = $_POST['item_number'];
// Statut du paiement
$statutpaiement = $_POST['payment_status'];
// Montant réglé (au format 10.00)
$montantpaiement = $_POST['mc_gross'];
// Devise de paiement (pour € on a EUR)
$devisepaiement = $_POST['mc_currency'];
// ID de transaction
$idtransaction = $_POST['txn_id'];
// Adresse email du receveur du paiement (qui doit être la votre !)
$receveurpaiement = $_POST['receiver_email'];
// Adresse email du payeur (pratique pour envoyer un email de confirmation du paiement)
$payeur = $_POST['payer_email'];
/*
ETAPE 4
Exécution de la requête en envoyant ce qui a été définit en étape 1 & 2
*/
if ($fp)
{
fputs ($fp, $header . $req);
while (!feof($fp))
{
$res = fgets ($fp, 1024);
if (strcmp ($res, 'VERIFIED') == 0)
{
if($statutpaiement == 'Completed')
{
/*
DEBUT DE L'ETAPE 5
A partir de cet instant, on sait que le paiement a été accepté.
Reste à savoir si la devise de paiement est bonne, si le montant est bon, si vous êtes bien le receveur du paiement, etc...
Notez qu'il est inutile de spécifier des messages d'erreur car cette page sera simplement exécutée par un serveur en cache, personne ne verra donc cette page.
*/
/* EXEMPLE DE CODAGE : */
// Si la devise est l'euro et l'adresse email du receveur du paiement est bien celle de mon compte Paypal.
if($devisepaiement == 'EUR' && $receveurpaiement == 'monemail')
{
// Je cherche des doublons de cette transaction
$doublonidtrans = mysql_num_rows(mysql_query("SELECT id FROM `transaction` WHERE id='$idtransaction' LIMIT 1"));
if($doublonidtrans == 0)
{
/*
>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<
>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<
>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<
DANS CE CAS ON VALIDE FINALEMENT LA TRANSACTION...
AVEC ENVOI D'EMAIL DE CONFIRMATION...
INSERTION DANS BASE DE DONNEES... ETC...
>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<
>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<
>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<
*/
//bon là j'ai supprimé mais je m'envoie un mail et je fais quelques manipulations dans la BDD
}
}
/*
FIN DE L'ETAPE 5
A partir de cet instant, il ne faut plus rien modifier.
*/
}
}
}
fclose ($fp);
}
?> |
Partager