Balzard | 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 :
- <form action="https://www.paypal.com/cgi-bin/webscr" method="post">
- <input type="hidden" name="cmd" value="_xclick">
- <input type="hidden" name="business" value="aaaaaaaa@aaaa.com">
- <input type="hidden" name="item_name" value="pot de fleur">
- <input type="hidden" name="custom" value="<?php echo $_SESSION['Id'];?>">
- <input type="hidden" name="amount" value="6.50">
- <input type="hidden" name="shipping" value="0.00">
- <input type="hidden" name="no_shipping" value="0">
- <input type="hidden" name="logo_custom" value="http://www.aaaaaaaaaa.png">
- <input type="hidden" name="no_note" value="1">
- <input type="hidden" name="currency_code" value="EUR">
- <input type="hidden" name="tax" value="0.00">
- <input type="hidden" name="lc" value="FR">
- <input type="hidden" name="bn" value="PP-BuyNowBF">
- <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 !">
- <img alt="" border="0" src="https://www.paypal.com/fr_FR/i/scr/pixel.gif" width="1" height="1">
- </form>
|
Le script IPN
Code :
- <?php
- $pos_relative = '';
- include($pos_relative."include/function.php" );
- include($pos_relative."include/Connect_DB.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";
- }
- // 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 ('ssl://www.paypal.com', 80, $errno, $errstr, 30);
- // affecter les variables du formulaire aux variables locales
- $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'];
- $idmembre = intval($_POST['custom']);
- if (!$fp)
- {
- // ERREUR HTTP
- }
- else
- {
- fputs ($fp, $header . $req);
- while (!feof($fp))
- {
- $res = fgets ($fp, 1024);
- if (strcmp ($res, "VERIFIED" ) == 0)
- {
- if ( $payment_status == "Completed" AND $receiver_email = "aaaaaa@aaaaaa.com" AND $payment_currency = "EUR" )
- {
- $dejavalide = mysql_result(mysql_query("SELECT COUNT(*) FROM Membre_Log WHERE (Code = 'AM3' OR Code = 'AM4') AND Commentaire = '".$txn_id."'" ), 0);
- if ($dejavalide == 0)
- {
- if ( $payment_amount == 6.5 )
- {
- Log_membre($idmembre, 1, 'AM3', $txn_id, 5)
- mysql_query("UPDATE Membre SET Credit = Credit + 5 WHERE Id = $idmembre" );
- }
- if ( $payment_amount == 12 )
- {
- Log_membre($idmembre, 1, 'AM3', $txn_id, 10)
- mysql_query("UPDATE Membre SET Credit = Credit + 10 WHERE Id = $idmembre" );
- }
- if ( $payment_amount == 28 )
- {
- Log_membre($idmembre, 1, 'AM3', $txn_id, 25)
- mysql_query("UPDATE Membre SET Credit = Credit + 25 WHERE Id = $idmembre" );
- }
- }
- else
- {
- Log_membre($idmembre, 1, 'AM4', $txn_id, $payment_amount)
- }
- }
- else
- {
- Log_membre($idmembre, 1, 'AM4', $txn_id, $payment_amount)
- }
- }
- else if (strcmp ($res, "INVALID" ) == 0) {
- // consigner pour étude manuelle
- Log_membre($idmembre, 1, 'AM4', $txn_id, $payment_amount)
- }
- }
- fclose ($fp);
- }
- mysql_close();
- ?>
|
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. |