Mettre en place la notification instantané avec Paypal
Voici comment faire pour obtenir la notification instantané avec Paypal. (IPN en anglais instant payment notification).L'installation de l'IPN permet a un site marchand de savoir quand une commande est payé et permet de faire les étapes relative qui suit le payement d'une commande.
Il y a deux étapes pour mettre en place ce système de confirmation en temps réel des achat sur PayPal:
- Créé un script qui va être appeler par PayPal lors d'un achat
- Donner a paypal l'url du fichier a appeler sur votre site
Voici le code source d'un script qui permet la récupération des information sur un achat d'une commande:
<?php
// read the post from PayPal system and add 'cmd'
$req = 'cmd=_notify-validate';
foreach ($_POST as $key => $value) {
$value = urlencode(stripslashes($value));
$req .= "&$key=$value";
}
// post back to PayPal system to validate
$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 ('www.paypal.com', 80, $errno, $errstr, 30);
// assign posted variables to local variables
$item_name = $_POST['item_name'];
$item_number = $_POST['item_number']; // id commande
$payment_status = $_POST['payment_status']; // Completed,
$payment_amount = $_POST['mc_gross']; //0.01
$payment_currency = $_POST['mc_currency']; //CAD
$txn_id = $_POST['txn_id'];
$receiver_email = $_POST['receiver_email'];
$payer_email = $_POST['payer_email'];
if (!$fp) {
// HTTP ERROR
} else {
fputs ($fp, $header . $req);
while (!feof($fp)) {
$res = fgets ($fp, 1024);
if (strcmp ($res, "VERIFIED") == 0) {
// check the payment_status is Completed
// check that txn_id has not been previously processed
// check that receiver_email is your Primary PayPal email
// check that payment_amount/payment_currency are correct
// process payment
if ($payment_status == "Completed")
{
// si le payment est accepter traitement de l'information
}
}
else if (strcmp ($res, "INVALID") == 0) {
// log for manual investigation
}
}
fclose ($fp);
}
?>
Vous n'avez qu'a rajouter votre programmation si la transaction est complété ("Completed")
Une fois ce fichier créé il ne reste plus qu'a indiquer son url à Paypal. Pour ce faire il existe 2 méthodes différentes a utiliser la façon simple ou la façon compliquer :
Installation IPN Version Simple
Pour indiquer à Paypal quel fichier a appeler à chaque transaction effectuer, il suffit de rajouter dans le formulaire du bouton Paypal l'url de votre script dans un champ cacher du nom de notify_urlExemple :
<form action=https://www.paypal.com/cgi-bin/webscr method=post target=new>
<input type=hidden name=cmd value=_xclick>
<input type=hidden name=business value=votre@courriel.com>
<input type=hidden name=undefined_quantity value=1>
<input type=hidden name=item_name value='Nom du produit'>
<input type=hidden name=item_number value='204'><input type=hidden name=amount value=99.00>
<input type=hidden name=currency_code value=USD>
<input type=hidden name=shipping value=0.00>
<input type=hidden name=image_url value=http://www.images.jpg>
<input type=hidden name=return value=http://www.site-web.com>
<input type=hidden name=cancel_return value=http://www.site-web.com>
<input type=hidden name=no_note value=0>
<input type=hidden name=notify_url value=http://www.site-web.com/payment_paypal.php>
<input type=submit value="Paypal">
</form>
Cette méthode pour activer la notification instantané avec Paypal est rapide à mettre en place et pratique puisque l'on a pas besoin des accès au compte Paypals pour l'installer (si on ne peux pas l'avoir). Et permet aussi d'assigner différents fichiers de script à différentes sections de note site web au besoin.
Installation IPN Vesrsion compliquer
Voici la façon compliquer d'installer l'IPN (instant notification payment) mais qui a l'avantage d'être appeler a toutes les transaction de votre compte paypals puisque c'est configurer au niveau de votre compte paypal directement :
- Ouvrer votre compte paypal et cliquer dans le menu du haut sur 'Solution e-commerce'
- Cliquer dans le menu de côté sur 'Paiements sur site marchand' puis sur 'Liste de fonctions'
- Dans cette page trouver 'Notification instantanée de paiement' puis cliquez sur configuration.
Par la suite: cocher la case, entrer l'url de votre page script et cliquer sur enregistrer.
L'installation est maintenant terminer et votre script va être automatiquement appeler à chaque transaction Paypal.