Salut a tous,

j'ai un bug depuit quelque jours avant mon api de paypal. J'essais de creer un simple panier d'achat (qui est fait ) l'envoyer a paypal avec le formulaire en method post (qui est fais ) je fais la transaction sur le site de paypal(avec les donne recu item, prix, ect...) mais je ne suis pas capable de recevoir les donner que paypal menvoie.

pourtant si je bypass paypal et que j'envoie mon formulaire directement a mon ipn sur mon site je recupere bien des valeur que j'envoie a paypal...

Je debug avec firebug et pourtant il voit bien le post de paypal quand je retoune sur mon site.

mon ipn j'ai pris sur paypal directement (et modifier un peu)

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
<?php
 
	// lire le formulaire provenant du système PayPal et ajouter 'cmd'
    $req = 'cmd=_notify-validate';
 
    foreach ($_POST as $key => $value) {
        $value = urlencode(stripslashes($value));
        $req .= "&$key=$value";
        echo $req. '<br />';
    }   
    echo 'fin de la loop';
    echo '<br />';
    echo '$req '. $req;
   // renvoyer au système PayPal pour validation
    $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);
 
	//$i pour le nombre d'item
    $i = 1;
 
    for ($=1; $_POST['item_name.'$i];$i++)
    	{
    		$item_name.$i = $_POST['item_name'.$i];
 
    	}
 
    // $i pour le nombre d'item
 
    for ($i=1;$_POST['item_number'.$i];$i++)
    	{
    		$item_number.$i = $_POST['item_number'.$i];
    	}
 
    $payment_status = $_POST['payment_status'];
 
	// $i pour le nombre d'item
 
	for ($i=1;$_POST['mc_gross'.$i];$i++)
		{
			$payment_amount.$i = $_POST['mc_gross'.$i];
		}
 
    $payment_currency = $_POST['mc_currency'];
    $txn_id = $_POST['txn_id'];
    $receiver_email = $_POST['receiver_email'];
    $payer_email = $_POST['payer_email'];
    $info_client = $_POST['custom'];
 
    if (!$fp) 
    	{
    		// ERREUR HTTP
 
    		echo $errno. ' et ' . $errstr;
    	} 
    else 
    	{
        fputs ($fp, $header . $req);
        echo '<br />'. ' $fp ($header $req) <br />';
        echo $fp;
      	 while (!feof($fp)) 
      	  	{
            	$res = fgets ($fp, 1024);
            		if (strcmp ($res, "VERIFIED") == 0) 
            			{
                			// transaction valide
                			echo 'valide';
            			}
            		else if (strcmp ($res, "INVALID") == 0) 
            			{
                			// Transaction invalide
                			echo 'invalide';                
            			}
        		}
        fclose ($fp);
    }
    // transaction valide
	               // vérifier que payment_status a la valeur Completed
                if ( $payment_status == "Completed") {
                    // vérifier que txn_id n'a pas été précédemment traité: Créez une fonction qui va interroger votre base de données
                    if (VerifIXNID($txn_id) == 0) {
                        // vérifier que receiver_email est votre adresse email PayPal principale
                        if ( "votreEmailSeller" == $receiver_email) {
                            // vérifier que payment_amount et payment_currency sont corrects
                            // traiter le paiement
                         }
			  else {
				// Mauvaise adresse email paypal
			  }
			}
			else {
				// ID de transaction déjà utilisé
					}
			}
		  else {
		        	// Statut de paiement: Echec
		  }
 
 
?>
dans mon fichier qui envoie les donnez a paypal j'ai bien

finaliser.php
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
<input type="hidden" name="return" value="'.site.'/processAchat.php">
									<input type="hidden" name="cancel_return" value="'.site.'/processAchat.php">
									<input type="hidden" name="notify_url" value="'.site.'/processAchat.php">
et si je change pour mon l,adresse de mon ipn dans le form finaliser.php j'obtien ma variable avec tous les donne qu'il faut envoyer avec "cmd=_notify-validate&cmd=_cart&upload=1&business=vente..."

si je vais sur mon compte developpeur sur paypal et que je test mon ipn il me dit qu'il ne repond pas.

J,ai bien vu tout les poste on sensiblement le meme probleme mais je voie pas de solution alors si quelqu'un peu m'aider

mataxa