Pxxo_Widget_PaymentPaypal

Ce widget gère le paiement par paypal. Le widget utilise la technique de la notification instantanée de paiement (IPN) qui permet de garantir que le paiement sera enregistré sur votre site même si le client ferme son navigateur juste après le paiement. Cette technique permet également de garantir l'authenticité de la transaction. Ce widget implémente également une couche de sécurité qui permet d'éviter la validation multiple de la même transaction.

Ce widget n'est pas maintenu officiellement.

Paramètres

Voici les paramètres spécifiques pour ce widget :

Nom Type Valeur par défaut Description
payment_ownerid integer - Un éventuel identifiant utilisateur qui sera conservé dans l'historique des paiements réalisés (utile pour relier les transaction à des identifiants internes à votre application).
paypal_business string - L'identifiant de votre compte paypal qui sera crédité du paiement (obligatoire).
paypal_item_name string - Le nom du produit que vous vendez.
paypal_currency_code string - La monnaie qui sera utilisée pour le paiement
onpayment_callback callback - Une éventuelle callback utilisateur qui sera appelée lorsque le paiement est réalisé. L'unique paramètre de la callback est une instance vers ce widget. Il est ainsi aisé de récupérer la somme versée etc…
skip_payment_button boolean false Evite d'afficher le bouton paypal et redirige directement l'utilisateur vers le site de paypal pour effectuer le paiement

Du coté de votre compte paypal qui recevra l'argent, vous devez le configurer pour qu'il effectue la notification instantanée de paiement vers votre site web ce qui permettra de garantir que votre site web enregistrera la transaction même si le client a fermé son navigateur entre temps.

Retours

Le mode dans lequel le widget se trouver permet d'effectuer vos différents traitements. Les modes disponibles sont les suivants :

  • paymentaccepted : indique qu'un paiement a été reçu (le widget implémente une protection qui empêche l'utilisateur de valider plusieurs fois cette transaction, donc ce mode est appelé une et une unique fois).
  • paymentrefused : indique que le paiement a été refusé par paypal.

La méthode getPaymentData() permet de récupérer les informations de la transaction (grand tableau php). Les paramètres mc_gross et mc_currency sont particulièrement intéressants car ils contiennent le montant et la devise du paiement.

Configuration IPN

Sur votre compte paypal (ne fonctionne qu'avec les comptes business), vous pouvez configurer la notification instantanée de paiement de la façon suivante :

  1. Se rendre dans les préférences :
  2. Cliquer sur Préférence de notifications instantanée de paiement :
  3. Cochez la case et entrez une url bidon (car elle sera surchargée par un paramètre que ce widget réglera) :

Exemple

require_once "Pxxo/Widget/PaymentPaypal.php";
$params = array();
$params['payment_ownerid'] = $identifiant_interne_de_utilisateur_faisant_le_paiement;
$params['paypal_business'] = 'emaildemoncomptepaypal@gmail.com';
$params['paypal_item_name'] = 'Produit XXX';
$params['paypal_currency_code'] = 'EUR';
$o = new Pxxo_Widget_PaymentPaypal($params);
$o->addDecorator('Pxxo_Widget_Decorator_Core');
$o->main();
$o->dump();
 
if ($o->getMode() == 'paymentaccepted') {
  $paymentdata = $o->getPaymentData();
  $somme_depensee = $paymentdata['mc_gross'];
  $devise_somme_depensee = $paymentdata['mc_currency'];
  $somme_depensee_par = $o->getPaymentOwnerId();
 
  // placez ici le traitement en cas de paiement réussi
}
 
if ($o->getMode() == 'paymentrefused') {
  // placez ici l'éventuel traitement en cas de paiement refusé
}
...

La même chose mais en traitant le résultat du paiement dans une callback utilisateur :

 
function my_payment_callback($o) {
  $paymentdata = $o->getPaymentData();
  $somme_depensee = $paymentdata['mc_gross'];
  $devise_somme_depensee = $paymentdata['mc_currency'];
  $somme_depensee_par = $o->getPaymentOwnerId();
  ... // placez ici le traitement en cas de paiement réussi
}
 
require_once "Pxxo/Widget/PaymentPaypal.php";
$params = array();
$params['payment_ownerid'] = $identifiant_interne_de_utilisateur_faisant_le_paiement;
$params['paypal_business'] = 'emaildemoncomptepaypal@gmail.com';
$params['paypal_item_name'] = 'Produit XXX';
$params['paypal_currency_code'] = 'EUR';
$params['onpayment_callback'] = 'my_payment_callback';
$o = new Pxxo_Widget_PaymentPaypal($params);
$o->addDecorator('Pxxo_Widget_Decorator_Core');
$o->main();
$o->dump();
fr/doc/pxxo_widget_paymentpaypal.txt · Dernière modification: 2012/01/14 00:12 (édition externe)
 
 

©2003-2012 Pxxo

Partenaires : INIST-CNRS | Sourcesup | Web2.0 chat server | Jeux gratuits