IPN ne s'execute pas

ZauChoco
Nouveau membre de la communauté

Bonjour,

 

Depuis quelque jours j'essaye d'installer paypal sur mon site,apres de nombreux tests je me rends compte qu'apres un achat (Qui se deroule correctement d'apparence -> vers page de succes) l'ipn ne s'execute pas et le compte vendeur ne reçois pas l'argent (Compte acheteur perd son argent)

Formulaire vente:

<form action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post">
	<input name="amount" type="hidden" value="<?php echo $prix; ?>" />
	<input name="currency_code" type="hidden" value="USD" />
	<input name="shipping" type="hidden" value="0.00" />
	<input name="tax" type="hidden" value="0.00" />
	<input name="return" type="hidden" value="http://***.com/succes.php" />
	<input name="cancel_return" type="hidden" value="http://***.com/exit.php" />
	<input name="notify_url" type="hidden" value="http://***.com/ipn.php" />
	<input name="cmd" type="hidden" value="_xclick" />
	<input name="business" type="hidden" value="***@outlook.fr" />
	<input name="item_name" type="hidden" value="<?php echo $_SESSION['width'] * $_SESSION['height']; ?> Pixels on MyMillionPixel" />
	<input name="no_note" type="hidden" value="1" />
	<input name="lc" type="hidden" value="US" />
	<input name="bn" type="hidden" value="PP-BuyNowBF" />
	<input name="custom" type="hidden" value="id=<?php echo $_SESSION['idu'];?>" />
<input type="image" src="https://www.paypalobjects.com/en_US/FR/i/btn/btn_buynowCC_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!">
<img alt="" border="0" src="https://www.paypalobjects.com/fr_FR/i/scr/pixel.gif" width="2" height="2">
</form>

Fichier IPN:

<?php
  include 'bdd.php'; 
   $inserthiis = $bdd->prepare("INSERT INTO sellmail(mail, actif) VALUES(?, ?)");  
    $mail = 1;
    $actif = 0;                     $inserthiis->execute(array($mail, $actif));  
// prépare la requête de vérification
$req = "cmd=_notify-validate";

// ajoute le message IPN au format NVP à la requête de vérification
foreach ($_POST as $key => $value) {
  $value = urlencode(stripslashes($value));
  $req .= '&$key=$value';
}


// définition des headers pour la requête de vérification
$header  = "POST /cgi-bin/webscr HTTP/1.0rn";

// test 
$header .= "Host: www.sandbox.paypal.com:443rn";

// production
//$header .= "Host: ipnpb.paypal.com:443rn";      

$header .= "Content-Type: application/x-www-form-urlencodedrn";
$header .= "Content-Length: " . strlen($req) . "\r\n\r\n";


// Ouverture du socket

// test
$fp = fsockopen ('ssl://www.sandbox.paypal.com', 443, $errno, $errstr, 30);

// production
//$fp = fsockopen ('ssl://ipnpb.paypal.com', 443, $errno, $errstr, 30);

// s'il y a une erreur lors de l'ouverture du socket
if (!$fp) {
 
}

else {
  // on post la requête de vérification
  fputs ($fp, $header . $req);

  // créé une boucle tant qu'on est pas arrivé à la fin du fichier
  while (!feof($fp)) {
    // lit la réponse de paypal
    $res = fgets ($fp, 1024);
        
    // si paypal répond VERIFIED, 
    // tout s'est bien déroulé et on peut procéder à nos traitements
    if (strcmp ($res, 'VERIFIED') == 0) {
   
    
    $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'];
$custom = $_POST['custom'];
   
                 $sommereq = $bdd->prepare("SELECT * FROM buy WHERE ID = ? AND statue = 0");
                 $sommereq->execute(array($custom));
                 $somme = $sommereq->fetch();
  if($receiver_email == "***@outlook.fr") {             
                if($somme['prix'] == $payment_amount) {
                 $conf = $bdd->prepare('UPDATE buy SET statue = 1 WHERE ID = :ID');
$conf->execute(array(
    'ID' => $custom
    ));
                }
                 
                }
      // type de transaction
      // $_POST['txn_type'] 
            
      // mail du compte paypal à qui est destiné le paiement
      // $_POST['receiver_email']
            
      // montant
      // $_POST['mc_gross']
            
      // id de la transaction
      // $_POST['txn_id']
            
      // champ personnalisé
      // $_POST['custom']
    }

    // si la transaction est invalide
    else if (strcmp ($res, 'INVALID') == 0) {
   
    }
  }  
    
  fclose ($fp);
}

 

Une solution s'il vous plait ?

 

Merci

Login to Me Too
0 RÉPONSES 0

Haven't Found your Answer?

It happens. Hit the "Login to Ask the community" button to create a question for the PayPal community.