Exècution IPN paypal

Fermé
ZauChoco - Modifié par ZauChoco le 22/02/2017 à 18:35
 ZauChoco - 22 févr. 2017 à 19:21
Bonsoir,

J' installe en ce moment un IPN sur mon site web pour faire des paiement:
Mais problème: Tout est bon (Normalement) mais mon code dans le ipn ne s'execute pas.
J'ai tout tenté mais la je seche !

Pouvez vous trouver ou est mon erreur svp:
ipn.php:
<?php
    
// 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.[/sites/details/paypal.com 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) {
  // on s'envoie un mail pour être informé de l'erreur
  $msg = 'Erreur de socket, l\'url n\'a pas pu être ouverte';
  mail('***@***', 'erreur socket', $msg);
}

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'];
    include 'bdd.php';
                 $sommereq = $bdd->prepare("SELECT * FROM buy WHERE ID = ? AND statue = 0");
                 $sommereq->execute(array($custom['id']));
                 $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['id']
    ));
                }
                 
                }
      // 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) {
      // on s'envoie un mail pour être informé de l'erreur
      $msg = 'Message de l\'IPN : '.$res;
      mail('***@***', 'erreur IPN', $msg);
    }
  }  
    
  fclose ($fp);
}

Formulaire avant paiement paypal:
<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=""quot;"quot;"quot;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=""quot;"quot;"quot;https://www.paypalobjects.com/fr_FR/i/scr/pixel.gif" width="2" height="2">
</form>



Merci :)

1 réponse

Up
0