par
Invité » 14 mars 2005, 00:45
En fait, tout roule jusqu'à la confirmation du paiement.
Je voudrait récupérer les infos de ma transaction en clair pour finaliser ma commande dans ma BDD.
C'est une NIP qui transmet un jeton d'identité codé.
Il faut un script CGI pour dialoguer avec le serveur Paypal pour me retourner les valeurs en clair du type par le biais d'un HTTP POST vers paypal.
Voilà le type d'infos que devrait me renvoyer paypal :
REUSSITE
payment_status=Completed
payment_gross=150
mc_currency=EUR
...
avec mon n° de panier de départ et mon n° de commande de départ.
Voilà le code fourni par paypal que j'ai mis en intro sur ma page success.php :
Code : Tout sélectionner
$req = 'cmd=_notify-validate';
foreach ($_POST as $key => $value) {
$value = urlencode(stripslashes($value));
$req .= "&$key=$value";
}
// 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.paypal.com', 80, $errno, $errstr, 30);
// affecter les variables publiées aux variables locales
$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'];
if (!$fp) {
// ERREUR HTTP
} else {
fputs ($fp, $header . $req);
while (!feof($fp)) {
$res = fgets ($fp, 1024);
if (strcmp ($res, "VERIFIE") == 0) {
// vérifier que payment_status est Terminé
// vérifier que txn_id n'a pas été précédemment traité
// vérifier que receiver_email est votre adresse email PayPal principale
// vérifier que payment_amount et payment_currency sont corrects
// traiter le paiement
}
else if (strcmp ($res, "NON VALIDE") == 0) {
// consigner pour enquête manuelle
}
}
fclose ($fp);
}
Est-ce que c'est le bon emplacement ?
Comment envoyer le HTTP POST vers paypal ?
Si quelqu'un c'est déjà fait les dents la-dessus, je veux bien de son aide...

En fait, tout roule jusqu'à la confirmation du paiement.
Je voudrait récupérer les infos de ma transaction en clair pour finaliser ma commande dans ma BDD.
C'est une NIP qui transmet un jeton d'identité codé.
Il faut un script CGI pour dialoguer avec le serveur Paypal pour me retourner les valeurs en clair du type par le biais d'un HTTP POST vers paypal.
Voilà le type d'infos que devrait me renvoyer paypal :
REUSSITE
payment_status=Completed
payment_gross=150
mc_currency=EUR
...
avec mon n° de panier de départ et mon n° de commande de départ.
Voilà le code fourni par paypal que j'ai mis en intro sur ma page success.php :
[code]
$req = 'cmd=_notify-validate';
foreach ($_POST as $key => $value) {
$value = urlencode(stripslashes($value));
$req .= "&$key=$value";
}
// 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.paypal.com', 80, $errno, $errstr, 30);
// affecter les variables publiées aux variables locales
$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'];
if (!$fp) {
// ERREUR HTTP
} else {
fputs ($fp, $header . $req);
while (!feof($fp)) {
$res = fgets ($fp, 1024);
if (strcmp ($res, "VERIFIE") == 0) {
// vérifier que payment_status est Terminé
// vérifier que txn_id n'a pas été précédemment traité
// vérifier que receiver_email est votre adresse email PayPal principale
// vérifier que payment_amount et payment_currency sont corrects
// traiter le paiement
}
else if (strcmp ($res, "NON VALIDE") == 0) {
// consigner pour enquête manuelle
}
}
fclose ($fp);
}[/code]
Est-ce que c'est le bon emplacement ?
Comment envoyer le HTTP POST vers paypal ?
Si quelqu'un c'est déjà fait les dents la-dessus, je veux bien de son aide... :wink: