Bonjour à tous,

Je vous écris ici car je galère sur une intégration de paypal sur mon site.
Comme sur le titre ci-dessus, j'ai intégré paypal sur mon site perso, quand je fais un test pour voir si le paiement se déroule bien, je clique sur mon bouton "acheter" puis je suis redirigé sur paypal à l'aide de ce script :

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
<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
			<input name="cmd" type="hidden" value="_xclick">
			<input name="business" type="hidden" value="acheteur@gmail.com">
			<input name="item_name" type="hidden" value="Inscription à MonSite">
			<input name="amount" type="hidden" value="<?php //echo $totalSum;?> ">
			<input name="currency_code" type="hidden" value="EUR">
			<input name="no_shipping" type="hidden" value="1">
			<input name="return" type="hidden" value="http://www.monsite.com/pagePaypal.php">
			<input name="last_name" type="hidden" value="<? //echo $nom; ?>">
			<input name="first_name" type="hidden" value="<? //echo $prenom; ?>">
			<input name="address1" type="hidden" value="<? //echo $adresse;?>">
			<input name="address2" type="hidden" value="<? //echo $adresse2 ?>">
			<input name="city" type="hidden" value="<? //echo $ville; ?>">
			<input name="zip" type="hidden" value="<? //echo $cp;?>">
			<input name="country" type="hidden" value="FR">
			<input name="email" type="hidden" value="<? echo $email;?>">
			<input name="custom" type="hidden" value="<? echo $idUnique?>">
			<input name="night_phone_a" type="hidden" value="<? //echo $tel;?>0000000000">
			<input type="submit" name="Submit" class="envoyer" value="Accéder au Règlement">	
		</form>
Là tout déroule nickel, et mon compte acheteur est débité de la somme demandée (je ne teste pas sur le sandbox car j'ai deux vrais comptes paypal avec des vrais argents dessus pour effectuer le test).

Par contre mon compte vendeur n'est pas crédité mais dans le tableau "activités récentes" qui récapitule les argents reçus, paypal affiche que j'ai reçu un paiement à une telle date mais dans "etat de commande/actions" il m'affiche illico "effectuer un remboursement" comme les captures ci-dessous.





Deuxièmement la notification de paiement configuré dans le compte du vendeur ne marche pas (code ci-dessous):

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
 
<?php
 
$req = 'cmd=_notify-validate';
 
foreach ($_POST as $key => $value) 
 
{
 
  $value = urlencode(stripslashes($value));
 
  $req .= "&$key=$value";
 
}
 
$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://ipnpb.paypal.com', 443, $errno, $errstr, 30);
 
 
$payment_status = $_POST['payment_status']; // Si Completed : tout est OK sinon aïe, aïe !
$payment_amount = $_POST['mc_gross'];
 
// Identifiant de la transaction
$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'];
 
// On récupère notre identifiant unique
$idUnique = $_POST['custom'];
 
// Raison pour laquelle le paiement a été placé en attente.
$pending_reason = $_POST['pending_reason'];
 
// Devise de paiement
$payment_currency = $_POST['mc_currency'];
 
if (!$fp) 
{
// ERREUR HTTP
}
else
{
fputs ($fp, $header . $req);
while (!feof($fp))
{
   $res = fgets ($fp, 1024);
 
   if (strcmp ($res, "VERIFIED") == 0)
   {
/*

Afin d'éviter tout problème de paiement, il faut vérifier les paramètres suivants :
Vérifier que payment_status est Completed
Vérifier que txn_id n'a pas été précédemment traité
Vérifier que receiver_email est votre adresse email PayPal principale
Vérifier que payment_amount et payment_currency sont corrects
Traiter le paiement
A partir de là, Paypal ne fournit plus de code ... C'est à nous de jouer. On va donc vérifier que chaque condition est OK, puis modifier la base.
*/
 
/* CONNECTION A LA BASE DE DONNEES */
$conn = @mysql_connect( "localhost", "bistic", "******") or die ( "erreur: connexion à la base" );
$rs = @mysql_select_db( "bisticbase", $conn) or die ( "erreur: base de données" );
 
switch ($payment_status)
   {
      case "Completed" : // Le paiement est Completed
 
	  // idTransaction = dejà dans la bdd ?
          $query = mysql_query("SELECT * FROM xhtml WHERE idTransaction= '$txn_id'");
          $data = mysql_fetch_object($query);
		if ($data)
 
    // Si l'Id de Transaction est déjà dans la base de données on attribue 1 à $erreur.
             $erreur = 1;
 
    // email business = ok ?
           if ($receiver_email != "vendeur@gmail.com")
 
             $erreur = 2;
 
 
 
    // montant reglé = tarif du service ?
 
          if ($payment_amount != 10)
 
             $erreur = 3;
 
    // devise pour régler = devise acceptée ?
    // On avait définit l'Euro comme devise dans Tuto II.
 
          if ($payment_currency != "EUR")
 
             $erreur = 4;
/*

Voilà, maintenant qu'on a vérifié toutes les conditions, il ne reste plus qu'à mettre à jour la base de données, pour activer le compte de l'utilisateur qui vient de payer.

*/
          if (!isset($erreur))
          { 
        // Il n'y pas d'erreurs. S'il y a des erreurs vous devez en prévoir la gestion.
 
        $query = "UPDATE xhtml SET idTransaction='$txn_id', autorisation='1', date = NOW() WHERE idUnique='$idUnique'";
        mysql_query($query);
/*

Pour faire encore plus chic, vous pouvez même envoyer un E-mail au client pour lui confirmer que son paiement a été accepté et que son compte est activé. Ca ne fonctionne que si votre serveur est paramétré pour envoyer les mails...

*/
           }
         break;
      }
}
else if (strcmp ($res, "INVALID") == 0) 
 
{
  // consigner pour enquête manuelle
}
}
fclose ($fp);
}
?>
Est ce que someone peut m'aider ? ou a déjà ce genre de problème sur paypal? je pose surtout la question : pourquoi mon compte vendeur n'est pas crédité de la somme mais peut seulement effectuer un remboursement, alors que mon compte acheteur est débité de la somme.

Merci aux âmes bienveillantes.