Salut,
je suis en train de configurer paypal, j'ai ajouté un lien de retour sur mon site si le paiement est accepté, mais je souhaiterai avoir une trace de la transaction, l'enregistré dans ma table.
Donc ajouté une variable de retour sécurisé, comment fait-on là ?
Page 1 sur 1
Paypal : configuration
#1
Posté 10 novembre 2004 - 18:06
Smile
Graphiste, développeur freelance Mayocrea Conception de sites web
Graphiste, développeur freelance Mayocrea Conception de sites web
#2
Posté 10 novembre 2004 - 19:05
Je suis en train de lire la doc, apparement il faut lire les infos depuis Paypal pour savoir le statut de la transaction avec l'utilisation tx et ensuite renvoyer par la methode POST, j'en suis là pour le moment
Smile
Graphiste, développeur freelance Mayocrea Conception de sites web
Graphiste, développeur freelance Mayocrea Conception de sites web
#3
Posté 10 novembre 2004 - 23:28
Salut,
Alors voici un code que tu peux utiliser pour récupérer des infos :
Après tout ça rien ne t'empêche de faire une requête sur le numéro de l'item par exemple... Personnellement, j'enregistre les infos d'abord dans ma base, puis le client fait son paiement par paypal et là j'update ma table en mettant que le paiement a bien été effectué. Voilà ! @+
Alors voici un code que tu peux utiliser pour récupérer des infos :
// read the post from PayPal system and add 'cmd'
$req = 'cmd=_notify-synch';
$tx_token = $_GET['tx'];
$auth_token = "icilecodequetefilepaypal";
$req .= "&tx=$tx_token&at=$auth_token";
// post back to PayPal system to validate
$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);
// If possible, securely post back to paypal using HTTPS
// Your PHP server will need to be SSL enabled
// $fp = fsockopen ('ssl://www.paypal.com', 443, $errno, $errstr, 30);
if (!$fp) {
// HTTP ERROR
} else {
fputs ($fp, $header . $req);
// read the body data
$res = '';
$headerdone = false;
while (!feof($fp)) {
$line = fgets ($fp, 1024);
if (strcmp($line, "\r\n") == 0) {
// read the header
$headerdone = true;
}
else if ($headerdone)
{
// header has been read. now read the contents
$res .= $line;
}
}
// parse the data
$lines = explode("\n", $res);
$keyarray = array();
if (strcmp ($lines[0], "SUCCESS") == 0) {
for ($i=1; $i<count($lines);$i++){
list($key,$val) = explode("=", $lines[$i]);
$keyarray[urldecode($key)] = urldecode($val);
}
// check the payment_status is Completed
// check that txn_id has not been previously processed
// check that receiver_email is your Primary PayPal email
// check that payment_amount/payment_currency are correct
// process payment
$firstname = $keyarray['first_name'];
$lastname = $keyarray['last_name'];
$itemname = $keyarray['item_name'];
$amount = $keyarray['payment_gross'];
$emailclient = $keyarray['payer_email'];
Après tout ça rien ne t'empêche de faire une requête sur le numéro de l'item par exemple... Personnellement, j'enregistre les infos d'abord dans ma base, puis le client fait son paiement par paypal et là j'update ma table en mettant que le paiement a bien été effectué. Voilà ! @+
#4
Posté 11 novembre 2004 - 00:58
Oui je viens de mettre en place le script, j'ai une page de test de 1 euros et si tout se passe bien je devrais recuperer les infos,
qui voudrait faire un test ?
je peux pas moi, on peut ensuite annuler la transaction...
AvenueDuWeb ca te dit
qui voudrait faire un test ?
je peux pas moi, on peut ensuite annuler la transaction...
AvenueDuWeb ca te dit
Smile
Graphiste, développeur freelance Mayocrea Conception de sites web
Graphiste, développeur freelance Mayocrea Conception de sites web
#5
Posté 11 novembre 2004 - 01:15
Perso pour les tests j'ai créé un deuxième compte avec une 2ème adresse mail. Car des tests j'ai dû en faire 50 au moins ;o) ! Mais si tu veux que je teste une fois ou deux pourquoi pas... Envoie-moi l'adresse de test par mp ! @+
#6
Posté 11 novembre 2004 - 09:38
Salut,
Pour tester ses transactions ipn sans passer par paypal il existe un simulateur :
http://www.eliteweav...ing/ipntest.php
J'ai un morceau e code qui marchait il y a quelques temps, il devrait encore marcher ...
Ce code est assez vieux et il n'est surement pas exempt de bug(s)
Utilisez le comme bon vous semble.
A+
Steph
Pour tester ses transactions ipn sans passer par paypal il existe un simulateur :
http://www.eliteweav...ing/ipntest.php
J'ai un morceau e code qui marchait il y a quelques temps, il devrait encore marcher ...
// read the post from PayPal system and add 'cmd'
$req = 'cmd=_notify-validate';
foreach ($_POST as $key => $value)
{
$value = urlencode(stripslashes($value));
$req .= "&$key=$value";
}
// post back to PayPal system to validate
$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";
if ($postmode == 1)
{
$domain = "www.paypal.com";
}
elseif ($postmode == 2)
{
$domain = "www.eliteweaver.co.uk";
// Il faut peut-être changer cette adresse par www.eliteweaver.co.uk/cgi-bin/webscr
// A tester si ça marche pas
}
$fp = fsockopen ($domain, 80, $errno, $errstr, 30);
// Standard - Instant Payment Notifiction Variables
$receiver_email = $_POST['receiver_email'];
$business = $_POST['business'];
$item_name = $_POST['item_name'];
$item_number = $_POST['item_number'];
$quantity = $_POST['quantity'];
$invoice = $_POST['invoice'];
$custom = $_POST['custom'];
$option_name1 = $_POST['option_name1'];
$option_selection1 = $_POST['option_selection1'];
$option_name2 = $_POST['option_name2'];
$option_selection2 = $_POST['option_selection2'];
$num_cart_items = $_POST['num_cart_items'];
$payment_status = $_POST['payment_status'];
$pending_reason = $_POST['pending_reason'];
$payment_date = $_POST['payment_date'];
$settle_amount = $_POST['settle_amount'];
$settle_currency = $_POST['settle_currency'];
$exchange_rate = $_POST['exchange_rate'];
$payment_gross = $_POST['payment_gross'];
$payment_fee = $_POST['payment_fee'];
$mc_gross = $_POST['mc_gross'];
$mc_fee = $_POST['mc_fee'];
$mc_currency = $_POST['mc_currency'];
$tax = $_POST['tax'];
$txn_id = $_POST['txn_id'];
$txn_type = $_POST['txn_type'];
$for_auction = $_POST['for_auction'];
$memo = $_POST['memo'];
$first_name = $_POST['first_name'];
$last_name = $_POST['last_name'];
$address_street = $_POST['address_street'];
$address_city = $_POST['address_city'];
$address_state = $_POST['address_state'];
$address_zip = $_POST['address_zip'];
$address_country = $_POST['address_country'];
$address_status = $_POST['address_status'];
$payer_email = $_POST['payer_email'];
$payer_id = $_POST['payer_id'];
$payer_status = $_POST['payer_status'];
$payment_type = $_POST['payment_type'];
$notify_version = $_POST['notify_version'];
$verify_sign = $_POST['verify_sign'];
if (!$fp)
{
// Connection au serveur impossible
}
else
{
fputs($fp, $header . $req);
while(!feof($fp))
{
$res = fgets($fp, 1024);
if (!strcmp($res,"VERIFIED") || !strcmp($res,"PENDING"))
{
// Check that txn_id has not been previously processed
// Because ipn.php will be called once when PENDING and another one
// when the payment will be VERIFIED
//TODO
// check for receiver_email and amount
if($receiver_email==$paypal_email && ($payment_gross==$total_ammount || $total_ammount=="0"))
{
// process payment
// Paiement accepté
}
else
{
// Paiement refusé
}
}
else if(!strcmp($res,"INVALID") || !strcmp($res,"FAILED"))
{
// log for manual investigation
//TODO
}
}
fclose ($fp);
}
Ce code est assez vieux et il n'est surement pas exempt de bug(s)
Utilisez le comme bon vous semble.
A+
Steph
Nano Framework le framework PHP 5.3 - Mon blog technique : sbnet.fr
36000.fr : Toutes les communes de France
36000.fr : Toutes les communes de France
#7
Posté 11 novembre 2004 - 10:58
Merci Steph,
j'ai fait des tests avec Avenueduweb, merci à toi Avenueduweb
ca fonctionne pas pour le moment (FAIL), je sais pas encore si ca vient du code ou d'une mauvaise config de mon compte,
je vais m'en occuper dans la journée.
j'ai fait des tests avec Avenueduweb, merci à toi Avenueduweb
ca fonctionne pas pour le moment (FAIL), je sais pas encore si ca vient du code ou d'une mauvaise config de mon compte,
je vais m'en occuper dans la journée.
Ce message a été modifié par smile - 11 novembre 2004 - 10:58.
Smile
Graphiste, développeur freelance Mayocrea Conception de sites web
Graphiste, développeur freelance Mayocrea Conception de sites web
#8
Posté 11 novembre 2004 - 22:00
Bon et bien ca fonctionne niveau verif Paypal 
J'aimerai remercier aussi Dan qui m'a aidé à faire des tests aujourd'hui
Il reste encore des ajustements à faire, d'ailleurs Dan si t'es libre demain, ca ne serait pas de refus
J'aimerai remercier aussi Dan qui m'a aidé à faire des tests aujourd'hui
Il reste encore des ajustements à faire, d'ailleurs Dan si t'es libre demain, ca ne serait pas de refus
Smile
Graphiste, développeur freelance Mayocrea Conception de sites web
Graphiste, développeur freelance Mayocrea Conception de sites web
Partager ce sujet :
Page 1 sur 1




Haut











