dimanche 14 avril 2013

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:

  1. Créé un script qui va être appeler par PayPal lors d'un achat
  2. 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_url
Exemple :
<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.

Aucun commentaire:

Enregistrer un commentaire