Webmaster Hub: Paypal : configuration - Webmaster Hub

Aller au contenu

Page 1 sur 1
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

Paypal : configuration Noter : -----

#1 L'utilisateur est hors-ligne   smile 

  • Groupe : Hubmaster
  • Messages : 1 149
  • Inscrit(e) : 07-octobre 03
  • Genre:Homme
  • Localisation:marseille
  • Société:Mayocrea

Posté 10 novembre 2004 - 18:06

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à ?
Smile
Graphiste, développeur freelance Mayocrea Conception de sites web
0

#2 L'utilisateur est hors-ligne   smile 

  • Groupe : Hubmaster
  • Messages : 1 149
  • Inscrit(e) : 07-octobre 03
  • Genre:Homme
  • Localisation:marseille
  • Société:Mayocrea

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
0

#3 L'utilisateur est hors-ligne   AvenueDuWeb 

  • Groupe : Hubmaster
  • Messages : 453
  • Inscrit(e) : 10-mai 04
  • Genre:Homme
  • Localisation:Rennes - France
  • Société:Avenue Du Web

Posté 10 novembre 2004 - 23:28

Salut,

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à ! @+
0

#4 L'utilisateur est hors-ligne   smile 

  • Groupe : Hubmaster
  • Messages : 1 149
  • Inscrit(e) : 07-octobre 03
  • Genre:Homme
  • Localisation:marseille
  • Société:Mayocrea

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 :)
Smile
Graphiste, développeur freelance Mayocrea Conception de sites web
0

#5 L'utilisateur est hors-ligne   AvenueDuWeb 

  • Groupe : Hubmaster
  • Messages : 453
  • Inscrit(e) : 10-mai 04
  • Genre:Homme
  • Localisation:Rennes - France
  • Société:Avenue Du Web

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 ! @+
0

#6 L'utilisateur est hors-ligne   steph 

  • Membre Bienfaiteur
  • Groupe : Webmaster Régulier
  • Messages : 54
  • Inscrit(e) : 27-juillet 04
  • Genre:Homme
  • Localisation:Les marches
  • Société:Agence 6 Degres

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

// 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
0

#7 L'utilisateur est hors-ligne   smile 

  • Groupe : Hubmaster
  • Messages : 1 149
  • Inscrit(e) : 07-octobre 03
  • Genre:Homme
  • Localisation:marseille
  • Société:Mayocrea

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.

Ce message a été modifié par smile - 11 novembre 2004 - 10:58.

Smile
Graphiste, développeur freelance Mayocrea Conception de sites web
0

#8 L'utilisateur est hors-ligne   smile 

  • Groupe : Hubmaster
  • Messages : 1 149
  • Inscrit(e) : 07-octobre 03
  • Genre:Homme
  • Localisation:marseille
  • Société:Mayocrea

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 :D
Smile
Graphiste, développeur freelance Mayocrea Conception de sites web
0

Partager ce sujet :


Page 1 sur 1
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

1 utilisateur(s) en train de lire ce sujet
0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)