Paypal : Mise en place IPN

Paypal : Mise en place IPN - PHP - Programmation

Marsh Posté le 21-08-2008 à 10:38:42    

Bonjour tout le monde,
 
Je suis actuellement entrain de créer mon site web et j'ai besoin d'y incorporer un système de payement par Paypal.
Il faudrait que le traitement de la commande se fasse au moment du payement.
 
Donc j'ai regarder les IPN, qui renvoi le résultat d'un payement à une page du site.
Donc je pourrai traiter la commande directement et automatiquement via se script.
 
ça fait deux jours que je retourne le site de paypal dans tout les sens, que je télécharge plein de pdf, d'aide et de tuto.
 
Mais j'ai vraiment dur...
 
Voivi mon script actuellement :
 
Le bouton d'achat

Code :
  1. <form action="https://www.paypal.com/cgi-bin/webscr" method="post">
  2. <input type="hidden" name="cmd" value="_xclick">
  3. <input type="hidden" name="business" value="aaaaaaaa@aaaa.com">
  4. <input type="hidden" name="item_name" value="pot de fleur">
  5. <input type="hidden" name="custom" value="<?php echo $_SESSION['Id'];?>">
  6. <input type="hidden" name="amount" value="6.50">
  7. <input type="hidden" name="shipping" value="0.00">
  8. <input type="hidden" name="no_shipping" value="0">
  9. <input type="hidden" name="logo_custom" value="http://www.aaaaaaaaaa.png">
  10. <input type="hidden" name="no_note" value="1">
  11. <input type="hidden" name="currency_code" value="EUR">
  12. <input type="hidden" name="tax" value="0.00">
  13. <input type="hidden" name="lc" value="FR">
  14. <input type="hidden" name="bn" value="PP-BuyNowBF">
  15. <input type="image" src="http://www.aaaaaaaa.png" border="0" name="submit" alt="PayPal - la solution de paiement en ligne la plus simple et la plus sécurisée !">
  16. <img alt="" border="0" src="https://www.paypal.com/fr_FR/i/scr/pixel.gif" width="1" height="1">
  17. </form>


 
Le script IPN

Code :
  1. <?php
  2. $pos_relative = '';
  3. include($pos_relative."include/function.php" );
  4. include($pos_relative."include/Connect_DB.php" );
  5. // lire le formulaire provenant du système PayPal et ajouter 'cmd'
  6. $req = 'cmd=_notify-validate';
  7. foreach ($_POST as $key => $value) {
  8. $value = urlencode(stripslashes($value));
  9. $req .= "&$key=$value";
  10. }
  11. // renvoyer au système PayPal pour validation
  12. $header .= "POST /cgi-bin/webscr HTTP/1.0\r\n";
  13. $header .= "Content-Type: application/x-www-form-urlencoded\r\n";
  14. $header .= "Content-Length: " . strlen($req) . "\r\n\r\n";
  15. $fp = fsockopen ('ssl://www.paypal.com', 80, $errno, $errstr, 30);
  16. // affecter les variables du formulaire aux variables locales
  17. $item_name = $_POST['item_name'];
  18. $item_number = $_POST['item_number'];
  19. $payment_status = $_POST['payment_status'];
  20. $payment_amount = $_POST['mc_gross'];
  21. $payment_currency = $_POST['mc_currency'];
  22. $txn_id = $_POST['txn_id'];
  23. $receiver_email = $_POST['receiver_email'];
  24. $payer_email = $_POST['payer_email'];
  25. $idmembre = intval($_POST['custom']);
  26. if (!$fp)
  27. {
  28. // ERREUR HTTP
  29. }
  30. else
  31. {
  32. fputs ($fp, $header . $req);
  33. while (!feof($fp))
  34. {
  35.  $res = fgets ($fp, 1024);
  36.  if (strcmp ($res, "VERIFIED" ) == 0)
  37.  {
  38.   if ( $payment_status == "Completed" AND $receiver_email = "aaaaaa@aaaaaa.com" AND $payment_currency = "EUR" )
  39.   {
  40.    $dejavalide = mysql_result(mysql_query("SELECT COUNT(*) FROM Membre_Log WHERE (Code = 'AM3' OR Code = 'AM4') AND Commentaire = '".$txn_id."'" ), 0);
  41.    if ($dejavalide == 0)
  42.    {
  43.     if ( $payment_amount == 6.5 )
  44.     {
  45.      Log_membre($idmembre, 1, 'AM3', $txn_id, 5)
  46.      mysql_query("UPDATE Membre SET Credit = Credit + 5 WHERE Id = $idmembre" );
  47.     }
  48.     if ( $payment_amount == 12 )
  49.     {
  50.      Log_membre($idmembre, 1, 'AM3', $txn_id, 10)
  51.      mysql_query("UPDATE Membre SET Credit = Credit + 10 WHERE Id = $idmembre" );
  52.     }
  53.     if ( $payment_amount == 28 )
  54.     {
  55.      Log_membre($idmembre, 1, 'AM3', $txn_id, 25)
  56.      mysql_query("UPDATE Membre SET Credit = Credit + 25 WHERE Id = $idmembre" );
  57.     }
  58.    }
  59.    else
  60.    {
  61.     Log_membre($idmembre, 1, 'AM4', $txn_id, $payment_amount)
  62.    }
  63.   }
  64.   else
  65.   {
  66.    Log_membre($idmembre, 1, 'AM4', $txn_id, $payment_amount)
  67.   }
  68.  }
  69.  else if (strcmp ($res, "INVALID" ) == 0) {
  70.   // consigner pour étude manuelle
  71.   Log_membre($idmembre, 1, 'AM4', $txn_id, $payment_amount)
  72.  }
  73. }
  74. fclose ($fp);
  75. }
  76. mysql_close();
  77. ?>


 
Si quelqu'un pouvait y jeter un petit coup d'oeil et me dire ce qu'il en pense, ce serait vraiment super sympa :)
 
Merci d'avance et bonne journée ;)
 
Balzard.

Reply

Marsh Posté le 21-08-2008 à 10:38:42   

Reply

Marsh Posté le 06-05-2010 à 22:07:42    

Salut Balzard, désolé de déterrer le topic, as-tu trouvé ce que tu cherchais ?
Je galère moi aussi sur les échanges IPN.
Si tu as fini par réussir, peux-tu m'envoyer ton code ?
 
Merci d'avance ;)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed