paypal

Eléphanteau du PHP | 32 Messages

13 mars 2005, 15:23

Bonjour,

Je sèche sur Paypal à la confirmation de réception d'un paiement.

Voici l'url reçue par exemple suite à un paiement effectué sur mon site :
http://www.monsite.com/success.php?tx=6 ... mcmdBMuWa0

Je n'arrive pas à récupérer le n° de panier et de la commande envoyé à la base :

//n° du panier
$paypal[item_name]="$_POST[item_name]";
$paypal[item_number]="$_POST[item_number]";

//montant du panier
$paypal[amount]="$_POST[amount]";
le montant est facilement récupérable avec la variable amt dans l'url.

Pour le reste, je n'arrive pas à decrypter la variable tx, st et sig de cette url ni à connaître leur signification.

Quelqu'un peut m'aider à décrypter cette url en php avec Paypal ? O:-)
Pour info, je suis plutôt du type "autodidacte" et la partie cryptage, M'pas trop...
Merci.

Mammouth du PHP | 859 Messages

13 mars 2005, 16:58

Et avec ça?
//n° du panier
$paypal['item_name']=$_POST['item_name'];
$paypal['item_number']=$_POST['item_number'];

//montant du panier
$paypal['amount']=$_POST['amount'];

Invité
Invité n'ayant pas de compte PHPfrance

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... :wink:

Eléphanteau du PHP | 32 Messages

14 mars 2005, 00:49

oups, j'avais oublié de signaler ma présence.

Pour faire suite au message, l'url devient maintenant plus longue avec ces variables :
http://www.monsite.com/success.php?tx=2 ... W8nJzf4%3d :roll:

Eléphanteau du PHP | 32 Messages

18 mars 2005, 00:49

personne pour m'aider à décrypter cette url ?? :cry:

Eléphant du PHP | 205 Messages

18 mars 2005, 01:48

Si tu es client de PayPal, pourquoi ne pas leur demander directement la signification exacte de tous les éléments de l'URL?
Si vous pensez que l'éducation coûte cher, essayez l'ignorance!

Eléphanteau du PHP | 32 Messages

18 mars 2005, 11:19

Je souci, c'est que toute la partie "développeur" est en Anglais. Et pour tout dire, je ne comprend pas tout...
:?
J'aurais aimé profiter de l'expérience de quelqu'un pour finaliser cette étape afin de mettre en relation de paiement avec ma BDD. Etant plutôt du type "autodidicate", je patauge un peu dès que ça se complique... J'ai vérifié dans le kit php que paypal fournit mais je bloque sur les NIP.

Mammouth du PHP | 19672 Messages

18 mars 2005, 16:34

Est-ce que par hasard PayPal ne fournirait pas des exemples de scripts pour le CGI de validation ?

Pour ce qui est de décortiquer ton url, elle se découpe facilement :
nomDuSite.com/page.php ... jusque là, rien de complexe
? là, c'est le début des paramètres
param=valeur ... sans commentaire
& séparateur de paramètres
Le problème, c'est le décryptage des valeurs de paramètre: quel est l'algorithme de cryptage, y-a-t-il une clé de cryptage et si oui, y as-tu accès ?

Regarde bien dans la package PayPal, tu sa sûrement des infos utiles à trouver pour tout ça.
Je pourrais pas t'aider beaucoup, j'ai un peu le même genre de problème avec un Kit CyberMut...
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

newto0
Invité n'ayant pas de compte PHPfrance

22 mars 2005, 10:56


Eléphanteau du PHP | 32 Messages

22 mars 2005, 12:04

J'ai enfin trouvé.
Il fallait ajouter la clé de déchiffrement au moment où mon serveur dialogue avec le serveur paypal pour échanger et vérifier les données

voici le bout de code en intro de la page success.php :

Code : Tout sélectionner

$req = 'cmd=_notify-synch'; $tx_token = $_GET['tx']; $auth_token = "n° de la clé de déchiffrement"; $req .= "&tx=$tx_token&at=$auth_token";
C'est plus facile de réfléchir à plusieurs :D
Je cloture...