Intégration de Paybox avec Odoo

Présentation du module Paybox pour offrir à vos client le paiement en ligne rapide de vos factures via l'extranet d'Odoo
par Florent Jouatte, mis à jour le 15/12/2014

Ce module permet l'intégration du paiement en ligne, en utilisant la plateforme Paybox, directement dans Odoo. Cette intégration a été initialement réalisée pour un client disposant de la version OpenERP 7.

Le module est disponible sur Bitbucket :

https://bitbucket.org/anybox/anybox_paybox/

Comment cela fonctionne t-il ?

Tout d'abord, il faut savoir qu'OpenERP, dans sa version 7, permet l'utilisation du paiement en ligne via Paypal. C'est le module « Portal » qui amène cette fonctionnalité et la possibilité de définir des moyens de paiement. Ces moyens de paiement sont définis comme des objets 'portal.payment.acquirer'.

Dans un premier temps, il a donc fallu ajouter un nouvel élément à cette liste.

La communication avec la plateforme Paybox se fait grâce à un simple formulaire envoyant certaines données. Ces données permettent d'identifier le client Paybox et le montant à payer ainsi que de sécuriser l'échange.

 Le modèle 'portal.payment.acquirer' définit, dans sa version de base, une méthode appellée 'render_payment_block' qui, comme son nom l'indique, permet de retourner un bloc HTML prêt à être inclu dans une vue OpenERP, typiquement sur le formulaire d'une facture.

Cette méthode n'étant pas totalement adaptée à d'autres intermédiaires de paiement, il a été nécessaire de la surcharger pour prendre en compte les spécificités liées à Paybox et ainsi créer le bon formulaire.

Voici le résultat :

Paramétrage :

Le module Paybox nécessite bien évidemment certains paramètres. Tous ces paramètres sont utilisés pour communiquer avec la plateforme. Si un de ces paramètres est faux alors la communication ne pourra s'établir correctement.

Contrôleur :

Il existe plusieurs niveau d'offre Paybox. La plus basique permet de simplement rediriger l'utilisateur vers une url selon les cas de figure rencontrés (paiement accepté, refusé ou annulé). Il existe aussi une requête HTTP appelée IPN (Instant Payment Notification) qui permet de communiquer directement entre Paybox et le site d'appel, cela permet notamment de garantir la communication même si le navigateur est fermé au moment de la redirection.

Toutes ces requêtes doivent être gérées et traitées pour qu'ensuite les actions soient automatisées dans OpenERP. C'est pourquoi il a été nécessaire de créer plusieurs contrôleurs web en Python.

Chaque requête est associée à un contrôler. Dans le cas d'un paiement effectué avec succès et dans le cas de l'IPN, les paramètres renvoyés sont analysés et ainsi, si la facture est retrouvée et que les paramètres assurent que le paiement est valide et provient bien de Paybox, elle peut être directement validée et le paiement lettré avec la facture correspondante.

Pour que ces actions soient un peu visibles pour l'utilisateur, certaines méthodes écrivent un commentaire dans l'openchatter :

Dans ce module, nous avons même intégré l'envoi de mail lors de certains cas :

  • lorsque la facture n'est pas trouvée

  • lorsque le lettrage ne peut être effectué