Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 19/01/2012, 12h29   #1
Membre du Club
 
Inscription : septembre 2007
Messages : 402
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 402
Points : 68
Points : 68
Par défaut paiement paypal

Bonjour à tous, je viens vous demander de l'aide car là je commence a perdre patience en ce qui concerne l'integration de paypal ...

Je vous explique, j'ai integré un code html de paiement paypal via le sandbox pour faire des tests . Sa marchait bien, il s'agit de commandes, donc en parametre dans "custom", je passe le numéro unique de commande qui etait auparavant stocké dans la table qui concerne les commandes que j'avais nommé paypal . quand on faisait son choix, avant de payer, sa s'enregistrai dans la table, avec un parametre qui disait que c'était en attente de paiement, puis, une fois le paiement effectué, l'IPN changeait ce parametre en payé ... tout marchait bien ...

Maintenant, j'ai voulu restructurer celà sachant que je rajoute la possibilité de paiements par cheques, je stock donc dans une table provisoire les commandes qui se nomme "commandeProvisoire", puis, si on choisit le paiement par cheque, sa enregistre dans la table "cheque" les infos de commande et supprime de "commandeProvisoire" sa sa marche bien ...

En revanche, quand je coisis paypal comme moyen de paiement, avec mes comptes test toujours de la sandbox, le paiement s'effectue bien, mais la table "paypal" n'est pas alimentée, et donc la commande table commandeProvisoire n'est pas effacé ...

Surpris que d'un seul coup sa ne marche plus, dans le fichier IPN appelé noprmalement apres paiement, j'ai ajouté des mail(); à differents endroits pour savoir d'ou vient le probleme ... je ne recois aucun mail, même pas celui qui se trouve avant les tests :s

Je vais vous mettre le code html de paiement paypal, puis la page IPN ... mais là sa fait comme si la page de l'IPN n'est pas appelée

HTML :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
<form action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post">
            <input type="hidden" value="<?php echo $prix; ?>" name="amount" />
            <input name="currency_code" type="hidden" value="EUR" />
            <input name="shipping" type="hidden" value="0.00" />
            <input name="tax" type="hidden" value="0.00" />
            <input name="return" type="hidden" value="http://www.site.com/confirmation.php" />
            <input name="cancel_return" type="hidden" value="http://www.site.com/annulation.php" />
            <input name="notify_url" type="hidden" value="http://www.site.com/composants/abonnements/donneespaypal.php" />
            <input name="cmd" type="hidden" value="_xclick" />
            <input name="business" type="hidden" value="sel123_1326039112_biz@hotmail.fr" />
            <input name="item_name" type="hidden" value="<?php echo $nom; ?>" />
            <input name="no_note" type="hidden" value="1" />
            <input name="lc" type="hidden" value="FR" />
            <input name="bn" type="hidden" value="PP-BuyNowBF" />
            <input name="custom" type="hidden" value="<?php echo $uniqid; ?>" />
            <input alt="Effectuez vos paiements via PayPal : une solution rapide, gratuite et sécurisée" name="submit" src="https://www.paypal.com/fr_FR/FR/i/btn/btn_buynow_LG.gif" type="image" /><img src="https://www.paypal.com/fr_FR/i/scr/pixel.gif" border="0" alt="" width="1" height="1" />
		</form>
la page IPN qui se nomme donneespaypal.php
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
 
<?php
// 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 ('ssl://www.sandbox.paypal.com', 443, $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'];
$first_name = $_POST['first_name'];
$last_name = $_POST['last_name'];
$address_street = $_POST['address_street'];
$address_city = $_POST['address_city'];
$address_zip = $_POST['address_zip'];
$custom = $_POST['custom'];
mail("jonathan.fortune@hotmail.fr","bizarre","bizarre"); // meme celui là je le reçois pas c'est pas normal !
if (!$fp) {
// HTTP ERROR
mail("jonathan.fortune@hotmail.fr","erreur","erreur");
} else {
fputs ($fp, $header . $req);
while (!feof($fp)) {
$res = fgets ($fp, 1024);
if (strcmp ($res, "VERIFIED") == 0) {
 
mysql_connect($host,$user,$pass);
mysql_select_db($user);
$query=mysql_query("SELECT * FROM commandeProvisoire WHERE id_site='$custom'"); $num=mysql_num_rows($query);
if ($num==1)
	{mail("jonathan.fortune@hotmail.fr","ok","ok");
	$assoc=mysql_fetch_assoc($query); $id_user=$assoc['id_user']; $name=$assoc['name']; $id_site=$assoc['id_site']; $qualite=$assoc['qualite']; $date=date("d/m/Y");
	$recupeNbrOffres=mysql_query("SELECT * FROM boutonspaypal WHERE name='$name'"); $assocNbrOffres=mysql_fetch_assoc($recupeNbrOffres); $nbrOffres=assocNbrOffres['offres']; $duree=$assocNbrOffres['duree']; $report=$assocNbrOffres['report'];
	if ($duree="1 an") {$datefin=date('d/m/Y',strtotime('+1 year'));} else if ($duree="1 mois") {if ($report=="non") {$datefin=date('d/m/Y',strtotime('+1 month'));} else if ($report=="oui") {$datefin=date('d/m/Y',strtotime('+2 month'));}} else if ($duree="1 offre") {$datefin="1 offre";}
	if (mysql_query("INSERT INTO paypal VALUES('','$id_user','$payment_amount','$name','$custom','$date','$datefin','valide','$nbrOffres','$payment_status','$payer_email','$txn_id','$first_name','$last_name','$address_street','$address_zip','$address_city')"))
		{
		mail($payer_email,"choisistonartisan.com : Validation de votre abonnement","Vous avez souscris à l'offre $name, nous vous en remercions . Rappel des références : numéro de transaction paypal : $txn_id , numéro de votre abonnement sur choisistonartisan.com : $id_site . Vous pouvez dès à présent déposer des offres sur les projets déposés sur le site dans le domaine de : $qualite .");
		}
	else
		{mail($payer_email,"choisistonartisan.com : Echec d'enregistrement de votre abonnement","Bonjour, Vous avez effectué un paiement, qui cependant a bien été validé, pour votre abonnement $name, cependant, un problème est survenu lors de l'enregistrement dans notre base de données et nous nous en excusons, merci de nous contacter en nous mentionnant 1) le numéro de transaction paypal : $txn_id 2) le numéro de commande choisistonartisan.com : $id_site 3) la cause du problème . Merci de nous excuser pour la gène occasionnée, bien cordialement .");}
 
	if (mysql_query("INSERT INTO abonnements VALUES('','$id_user','$date','$datefin','$nbrOffres','$nbrOffres','$custom','paypal','$name')"))
		{
		mail($payer_email,"choisistonartisan.com : $nbrOffres offres crédités sur votre compte","Vous avez été crédité de $nbrOffres sur votre compte choisistonartisan.com .");
		}
	else
		{mail($payer_email,"choisistonartisan.com : $nbrOffres offres n'ont pas pû être crédités sur votre compte","Bonjour, suite à une erreur technique, votre compte n'a pas pû être crédité du nombre d'appels d'offres de $nbrOffres offres sur votre compte choisistonartisan.com . Merci de nous contacter en nous mentionnant le numéro d'abonnement suivant : $id_site afin que nous créditions votre compte manuellement . Nous nous excusons pour ce désagrément .");}
	}
else
	{mail("jonathan.fortune@hotmail.fr","non","non"); mail($payer_email,"Echec d'enregistrement de votre abonnement sur choisistonartisan.com","Bonjour, Vous avez effectué un paiement pour votre abonnement $name, cependant, un problème est survenu lors de l'enregistrement dans notre base de données et nous nous en excusons, merci de nous contacter en nous mentionnant 1) le numéro de transaction paypal : $txn_id 2) le numéro de commande choisistonartisan.com : $id_site 3) la cause du problème . Merci de nous excuser pour la gène occasionnée, bien cordialement .");}
}
else if (strcmp ($res, "INVALID") == 0) {
// log for manual investigation
}
}
fclose ($fp);
}
?>
Voilà, désolé sa fait un gros paté, mais en gros le problème survient apres que j'ai modifié les conditions d'enregistrement avec les if et else ...

Merci beaucoup pour votre aide précieuse ...
cuisto44000 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/01/2012, 13h10   #2
Membre du Club
 
Inscription : septembre 2007
Messages : 402
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 402
Points : 68
Points : 68
je me dis que peut etre je n'ai pas posté dans le bon forum, si c'est le cas, pouvez-vous le déplacer à l'endroit concerné svp ? merci
cuisto44000 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/01/2012, 19h37   #3
Membre du Club
 
Inscription : septembre 2007
Messages : 402
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 402
Points : 68
Points : 68
J'avais aussi opté pour une nautre solution bien avant tout ça, créer un bouton different dans mon compte sandbox vendeur, sa faisait je crois 14 boutons differents, je stockai les codes des boutons dans une table de la base de données, puis, selon le produit selectionné, le bouton afferant s'affichait, le seul problème, c'est que quand on créé un bouton de paiement, sa nous propose :
1) une page de redirection lors qu'on annule un paiement
2) une page de redirection lors qu'on complète le paiement

Questions :
1) pourquoi ne peut on pas mettre de page ipn aussi ?
2) si je le rajoute en parametre dans le textarea prévu à cet effet avec:
notify_url=http://www.site.com/composants/abonnements/donneespaypal.php
3) si oui, ce parametre suffit-il, oubien dois-je en rajouter dans ce champ pour que la page donneespaypal.php soit bien appelée et traite bien les infos retournées ?
4) si non, alors est-ce que si je mets le code de donneespaypal.php dans confirmation.php sa va récupérer les données du paiement ?

Merci encore pour vos infos, je pose la question aulieu de tester et retester des choses et faire des conneries, cette mise en place de paiement paypal n'est pas si facile qu'elle n'en a l'air en fin de compte ...

Merci encore
cuisto44000 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h33.


 
 
 
 
Partenaires

Hébergement Web