NIP Paypal problème

WRInaute impliqué
Bonjours, je suis en train de terminer un NIP par paypal, pour ceux qui connaissent ca doit vouloir dire quelque chose;)

Je vous montre le formulaire:

Code:
<form action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post">		
		<input type="hidden" name="cmd" value="_xclick">
		<input type="hidden" name="business" value="'.$premiumrow['receved_paypal'].'">
		<input type="hidden" name="email" value="'.$userrow['email'].'">
		<input type="hidden" name="amount" value="'.$premiumrow['price'].'">
		<input type="hidden" name="item_name" value="Compte Premium">
		<input type="hidden" name="no_shipping" value="0">
		<input type="hidden" name="no_note" value="1">
		<input type="hidden" name="currency_code" value="EUR">
		<input type="hidden" name="lc" value="FR">
		<input type="hidden" name="custom" value="'.$userrow['id'].'">
		<input name="return" type="hidden" value="'.$controlrow['gamename'].'community.php?do=reg_premium_end">
		<input type="hidden" name="bn" value="PP-BuyNowBF">
		<input type="image" src="https://www.paypal.com/fr_FR/FR/i/btn/btn_paynowCC_LG.gif" border="0" name="submit" alt="Effectuez vos paiements via PayPal : une solution rapide, gratuite et sécurisée">
		<img alt="" border="0" src="https://www.paypal.com/fr_FR/i/scr/pixel.gif" width="1" height="1">
		</form>

Le soucis c'est que je n'arrive pas à récupérer ce champ:

<input type="hidden" name="email" value="'.$userrow['email'].'">

Quand je met par la suite : $payer_email = $_POST['email'];

$payer_email ne me retourne rien, pourtant il est bien égal à une adresse email.

Je me demande ce qu'il faut que je fasse. Si quelqu'un à une idée, je suis preneur.

Merci
 
WRInaute accro
sff a dit:
Bonjours, je suis en train de terminer un NIP par paypal, pour ceux qui connaissent ca doit vouloir dire quelque chose;)

Je vous montre le formulaire:

Code:
<form action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post">		
		<input type="hidden" name="cmd" value="_xclick">
		<input type="hidden" name="business" value="'.$premiumrow['receved_paypal'].'">
		<input type="hidden" name="email" value="'.$userrow['email'].'">
		<input type="hidden" name="amount" value="'.$premiumrow['price'].'">
		<input type="hidden" name="item_name" value="Compte Premium">
		<input type="hidden" name="no_shipping" value="0">
		<input type="hidden" name="no_note" value="1">
		<input type="hidden" name="currency_code" value="EUR">
		<input type="hidden" name="lc" value="FR">
		<input type="hidden" name="custom" value="'.$userrow['id'].'">
		<input name="return" type="hidden" value="'.$controlrow['gamename'].'community.php?do=reg_premium_end">
		<input type="hidden" name="bn" value="PP-BuyNowBF">
		<input type="image" src="https://www.paypal.com/fr_FR/FR/i/btn/btn_paynowCC_LG.gif" border="0" name="submit" alt="Effectuez vos paiements via PayPal : une solution rapide, gratuite et sécurisée">
		<img alt="" border="0" src="https://www.paypal.com/fr_FR/i/scr/pixel.gif" width="1" height="1">
		</form>

Ca c'est le formulaire qui permet de renvoyer vers le paiement Paypal.

sff a dit:
Le soucis c'est que je n'arrive pas à récupérer ce champ:

<input type="hidden" name="email" value="'.$userrow['email'].'">

Quand je met par la suite : $payer_email = $_POST['email'];

$payer_email ne me retourne rien, pourtant il est bien égal à une adresse email.

Le "POST" IPN est complètement indépendant de ton POST ci-dessus, et les noms des variables ne sont pas les mêmes. Ce que tu veux c'est probablement $_POST['payer_email'].

Pour que tu comprennes mieux:

- tu fais un post vers Paypal qui démarre le processus de paiement en passant certaines infos
- le paiement s'effectue sur le site Paypal
- une fois que le paiement est effectué, il y a un autre post complètement distinct vers ton serveur pour t'indiquer que le paiement a été effectué. Les noms des variables peuvent être complètement différents de ceux du premier post.

Voir:
https://www.paypal.com/IntegrationCente ... rence.html

pour le détail des variables. Note que si tu utilises l'email pour faire le lien entre le POST initial et l'IPN, c'est une mauvaise idée, l'utilisateur peut très bien utiliser un autre e-mail pour son compte Paypal, il vaut mieux utiliser custom pour retrouver ses petits.

Jacques.
 
WRInaute passionné
Il te faut un script PHP pour récupérer l'info de Paypal qui te dit que tu as reçu le paiement, donc un fichier paypal.php (dans mon cas) qui récupère le paiement...

Voilà le contenu complet de ma page
Code:
<?

require "backend/functions.php";
dbconn(true);

// 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";
$fp = fsockopen ('www.paypal.com', 80, $errno, $errstr, 30);

// assign posted variables to local variables
$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'];
$clid = $_POST['custom'];

if (!$fp) {
// HTTP ERROR
} else {
fputs ($fp, $header . $req);
while (!feof($fp)) {
$res = fgets ($fp, 1024);
if (strcmp ($res, "VERIFIED") == 0) {



if ($receiver_email == "mail@domaine.tlf"){
  $query = "UPDATE users SET donated = donated + '$payment_amount' where id='$clid'";
  $result = mysql_query($query);
  $query = "UPDATE site_settings SET donations = donations + '$payment_amount' ";
  $result = mysql_query($query);
}


header("Location: http://www.site.tld");
}
else if (strcmp ($res, "INVALID") == 0) {
}
}
fclose ($fp);
}
?>

Bonne chance c'est vraiment vraiment vraiment galère...
 
WRInaute impliqué
suite

Le problème c'est que justement le $_POST['email'] de

Code:
<input type="hidden" name="email" value="'.$userrow['email'].'">

me retourne pas la meme valeur que $_POST['payer_email']

.

Sur mon site $userrow['email'] n'est pas forcement l'adresse paypal de celui qui paye. Dans mon cas c'est l'email avec lequel le membre s'est incrit sur mon site.

C'est pour cela que lors de la finalisation du paiement je voulais récupérer $_POST['email'] pour l'envoi d'un mail de confirmation. Mais visiblement c'est impossible. On peu uniquement récupérer l'adresse email (id paypal) du payeur avec $_POST['payer_email'].

Il y a pas possibilité de faire ce que je cherche?
 
WRInaute accro
Re: suite

sff a dit:
Le problème c'est que justement le $_POST['email'] de

Code:
<input type="hidden" name="email" value="'.$userrow['email'].'">

me retourne pas la meme valeur que $_POST['payer_email']

Euh, tu veux dire que tu ne récupères pas forcément dans $_POST['payer_email'] la même valeur que tu as passé dans ton formulaire initial? Oui, c'est ce que je disais, c'est parfaitement normal.

sff a dit:
Sur mon site $userrow['email'] n'est pas forcement l'adresse paypal de celui qui paye. Dans mon cas c'est l'email avec lequel le membre s'est incrit sur mon site.

C'est pour cela que lors de la finalisation du paiement je voulais récupérer $_POST['email'] pour l'envoi d'un mail de confirmation. Mais visiblement c'est impossible. On peu uniquement récupérer l'adresse email (id paypal) du payeur avec $_POST['payer_email'].

Il y a pas possibilité de faire ce que je cherche?

Utiliser le champ custom, soit pour y stocker l'adresse e-mail du compte chez toi, ou son ID, ou l'ID d'une "transaction" qui ferait ensuite le lien avec ce compte...

Jacques.
 
WRInaute passionné
Comme l'a dit jcaron oui, moi je stocke de pseudo de l'utilisateur :
don de $nick
Et paypal me renvois ce $nick
Tu dois pouvoir faire la même chose avec un email...
paiement de $email << celui de ton membre
Et paypal te renverra ça...
 
Discussions similaires
Haut