Bonjour, je dois intégrer la plateforme de paiement paypal sur mon site et je rencontre quelques difficultés. J'ai un compte sur la sandbox et lorsque je fais des tests tout marche sauf que ma page IPN n'est pas appelée ! Donc aucun enregistrement dans la BDD.

Je vous montre mon formulaire au cas où et ensuite mon IPN :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
<form name="_xclick" action="https://www.sandbox.paypal.com/fr/cgi-bin/webscr" method="post"><input type="hidden" name="cmd" value="_xclick"><input type="hidden" name="item_number" value="1"><input type="hidden" name="item_name" value="Produit"><input type="hidden" name="amount" value="10"><input type="hidden" name="charset" value="utf-8"><input type="hidden" name="lc" value="FR"><input type="hidden" name="business" value="vendeur@jecache.com"><input type="hidden" name="currency_code" value="EUR"><input type="hidden" name="cert_id" value=""><input type="hidden" name="invoice" value="1"><input type="hidden" name="cancel_return" value="jecache.com/cancel.html"><input type="hidden" name="return" value="jecache.com/thanks.html"><input type="hidden" name="notify_url" value=jecache.com/purchase_api.php"><input type="hidden" name="cpp_header_image" value="logo.png"><input type="hidden" name="no_note" value="1"><input type="hidden" name="cpp_headerback_color" value=""><input type="hidden" name="image_url" value=""><input type="hidden" name="no_shipping" value="1"><input type="hidden" name="redirect_cmd" value="_xclick"><input type="hidden" name="cbt" value="Transaction réussie. Retourner sur le site."><input type="image" src="http://www.paypal.com/fr_FR/i/btn/x-click-but01.gif" border="0" name="submit" alt="Effectuez vos paiements via PayPal : une solution rapide, gratuite et sécurisée !"></form>
J'ai "caché" les urls de retour et de mon IPN mais elles sont bonnes et j'en suis sûr.

Voici le script de mon IPN :
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
<?php

include('connexion_base.php');
mail('monemail', 'transaction', 'ligne 3 executee'); //déjà je m'envoie un mail ici pour voir si ça s'execute vraiment



/*

ETAPE 1

On commence par générer la requête à réenvoyer à PayPal

(Au départ, PayPal envoie une requête à une URL que vous aurez spécifiée dans

votre espace PayPal dans la rubrique "Préférences de Notification instantanée

de paiement" et qui est donc l'adresse URL de cette page même sur votre serveur).

*/



	// Il faut ajouter 'cmd=_notify-validate' à la requête reçue

	$req = 'cmd=_notify-validate';

	// On reforme la requête avec les variables envoyées par Paypal

	foreach ($_POST as $key => $value)

	{

		$value = urlencode(stripslashes($value));

		$req .= "&$key=$value";

	}



/*

ETAPE 2

On renvoie la requête au système PayPal pour validation (par POST) qui nous

permettra d'avoir toutes les informations de la transaction et de vérifier

si la transaction est bien validée.

*/



	$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.sandbox.paypal.com', 80, $errno, $errstr, 30);



/*

ETAPE 3

On affecte les variables fournies par PayPal

*/



	// Désignation d'achat (ex : Achat de vidéos)

	$designation = $_POST['item_name'];

	// A utiliser de préférence pour définir un id ou autre qui représente le payeur (voir autre page fournit dans la source)

	$compte = $_POST['item_number'];

	// Statut du paiement

	$statutpaiement = $_POST['payment_status'];

	// Montant réglé (au format 10.00)

	$montantpaiement = $_POST['mc_gross'];

	// Devise de paiement (pour € on a EUR)

	$devisepaiement = $_POST['mc_currency'];

	// ID de transaction

	$idtransaction = $_POST['txn_id'];

	// Adresse email du receveur du paiement (qui doit être la votre !)

	$receveurpaiement = $_POST['receiver_email'];

	// Adresse email du payeur (pratique pour envoyer un email de confirmation du paiement)

	$payeur = $_POST['payer_email'];



/*

ETAPE 4

Exécution de la requête en envoyant ce qui a été définit en étape 1 & 2

*/



	if ($fp)

	{

		fputs ($fp, $header . $req);



		while (!feof($fp))

		{

			$res = fgets ($fp, 1024);



			if (strcmp ($res, 'VERIFIED') == 0)

			{	

				if($statutpaiement == 'Completed')

				{

					/*

DEBUT DE L'ETAPE 5

A partir de cet instant, on sait que le paiement a été accepté.

Reste à savoir si la devise de paiement est bonne, si le montant est bon, si vous êtes bien le receveur du paiement, etc...

Notez qu'il est inutile de spécifier des messages d'erreur car cette page sera simplement exécutée par un serveur en cache, personne ne verra donc cette page.

*/





					/* EXEMPLE DE CODAGE : */

					// Si la devise est l'euro et l'adresse email du receveur du paiement est bien celle de mon compte Paypal.

					if($devisepaiement == 'EUR' && $receveurpaiement == 'monemail')

					{

						

						// Je cherche des doublons de cette transaction

						$doublonidtrans = mysql_num_rows(mysql_query("SELECT id FROM `transaction` WHERE id='$idtransaction' LIMIT 1"));

						

						if($doublonidtrans == 0)

						{

							/*

		>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<

		>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<

		>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<

		DANS CE CAS ON VALIDE FINALEMENT LA TRANSACTION...

		AVEC ENVOI D'EMAIL DE CONFIRMATION...

		INSERTION DANS BASE DE DONNEES... ETC...

		>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<

		>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<

		>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<

		*/
							//bon là j'ai supprimé mais je m'envoie un mail et je fais quelques manipulations dans la BDD

						}

						

					}

					

					/*

FIN DE L'ETAPE 5

A partir de cet instant, il ne faut plus rien modifier.

*/	

				}		

			}

		}



		fclose ($fp);

	}







?>
Je cherche depuis deux jours mais rien, cette page n'est pas exécuté par paypal apparemment.

Je vous remercie d'avance pour votre aide et vous souhaite une bonne nuit.