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.
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.
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.
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 :
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();
©2003-2012 Pxxo
Partenaires : INIST-CNRS | Sourcesup | Web2.0 chat server | Jeux gratuits