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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 ...