MobupayMobupay
Chargement de vos clés API…

Odoo

Module de paiement pour Odoo 17, 18, 19 et 20.

Validé de bout en bout

Prérequis

  • Odoo 17.0, 18.0, 19.0 ou 20.0, auto-hébergé ou sur Odoo.sh.
  • Une instance joignable depuis internet, en HTTPS : Mobupay y livre les confirmations de paiement.
  • Une clé API Mobupay (sk_test_… pour tester, sk_live_… en production), depuis votre espace marchand, rubrique Développeurs, Clés API. C'est le seul secret à saisir : le secret de signature des webhooks est récupéré automatiquement.

Installation

Le module est publié sur Odoo Apps, sous le nom Mobupay Payment. Odoo publie une fiche par version : ouvrez celle qui correspond à la vôtre.

Depuis cette fiche, le parcours dépend de votre hébergement.

  • Sur Odoo.sh : depuis la fiche du module, cliquez sur « Deploy on Odoo.sh ». Odoo ajoute le module au dépôt de votre projet et reconstruit. Il apparaît ensuite dans vos applications.
  • Si vous hébergez votre Odoo vous-même : téléchargez le module, placez le dossier mobupay_payment/ dans votre répertoire addons, puis redémarrez le service Odoo.

Pour l'installation manuelle, une étape est indispensable et souvent oubliée : activez le mode développeur avant de mettre à jour la liste des applications. Sans lui, le menu correspondant n'existe pas, et le module reste introuvable alors qu'il est bien en place.

  1. 1Paramètres, section Outils du développeur, « Activer le mode développeur ».
  2. 2Applications, menu à trois points, « Mettre à jour la liste des applications ».
  3. 3Cherchez « Mobupay » et installez le module.

Configuration

Comptabilité (ou Site web), Configuration, Fournisseurs de paiement, Mobupay. Renseignez votre clé API, puis enregistrez.

Le module vérifie alors la clé, récupère le secret de signature des webhooks et vous confirme dans quel environnement vous êtes, test ou production. Le bouton « Vérifier la connexion » rejoue ce contrôle à tout moment, et vous prévient si votre adresse publique ne permet pas de recevoir les confirmations.

Le module s'installe désactivé (non publié en Odoo 20) : un moyen de paiement ne doit jamais arriver prêt à encaisser. Passez en mode test, encaissez un paiement d'essai, puis passez en production.

  • Détail de la commande, actif par défaut : transmet les articles, les taxes par ligne, les frais de port et les remises. Le client voit le récapitulatif de son panier sur la page de paiement.
  • Coordonnées du client, actif par défaut : nom, adresse de facturation, téléphone et adresse de livraison. Nécessaire pour qu'une facture porte les mentions obligatoires.
  • Qui établit les factures, Odoo par défaut. Une vente ne porte jamais deux factures : si vous facturez dans Odoo, Mobupay n'en établit aucune. Choisissez Mobupay si vous encaissez depuis Odoo sans y facturer : une facture est alors établie à chaque paiement, réglée, et envoyée au client si vous le souhaitez. Le module Facturation doit être activé dans votre espace marchand : le bouton « Activer la facturation Mobupay » y mène, et « Vérifier la connexion » vous dit s'il est prêt. S'il manque une mention obligatoire, le paiement aboutit quand même et la facture reste en brouillon, à compléter.
  • Nature de l'opération : livraison de biens, prestation de services, ou les deux. C'est une mention obligatoire de la facture, et sans elle une facture ne peut pas être émise. « Livraison de biens » convient à une boutique qui vend des produits ; ce choix ne vous est demandé qu'une fois.

Une sécurité vous empêche de confondre les environnements : une clé de test sur un fournisseur activé en production est refusée, et une clé de production en mode test également. Une autre empêche la double facturation : si la facturation automatique d'Odoo est active, Mobupay ne peut pas facturer à sa place. Le paiement d'une facture Odoo, depuis le portail client ou un lien de paiement, n'en produit jamais une seconde.

Ce que le module transmet

Tout est déduit de la commande : vous n'avez aucun champ à remplir. Les taxes partent avec le nom que vous leur avez donné, « TGC » en Nouvelle-Calédonie comme « TVA » en France, sans réglage particulier.

  • Les lignes de commande au prix taxe comprise, avec leur libellé.
  • Les taxes par ligne, et les frais de port comme une ligne à part entière.
  • Les coordonnées du client, depuis le partenaire de facturation.

Les lignes de section et de note sont ignorées : ce sont des titres de mise en page, et les transmettre produirait des lignes à zéro sur votre facture.

Fonctionnement

  1. 1Le client choisit Mobupay et valide sa commande.
  2. 2Le module crée une session Mobupay et redirige vers la page hébergée ; la transaction passe en attente.
  3. 3Le client paie par carte sur la page Mobupay.
  4. 4Mobupay envoie un webhook signé ; le module vérifie la signature, retrouve la transaction via externalId et confirme la commande.

Si ce webhook n'arrive pas, une reprise prend le relais : au retour du client, le module interroge Mobupay avant d'afficher la page de statut, et une tâche planifiée rattrape toutes les dix minutes ce que personne n'a vu. Un paiement encaissé ne laisse jamais une commande en attente.

Devises

Mobupay encaisse en XPF et en EUR. Le module ne se propose pas au paiement d'une commande dans une autre devise : mieux vaut ne pas apparaître que d'apparaître et refuser.

Remboursement

Depuis le paiement dans Odoo, bouton « Rembourser ». En une ou plusieurs fois, jusqu'au montant payé : un article, puis un autre. Seul le montant demandé est remboursé à chaque fois. Un remboursement fait depuis votre espace marchand Mobupay apparaît aussi dans Odoo.

Code source

Le module est publié sous licence LGPL-3. Vous pouvez le lire, l'auditer ou l'installer directement depuis le dépôt : github.com/mobupay/mobupay-odoo. Chaque série a sa branche (17.0, 18.0, 19.0, 20.0), qui porte la version de cette série.

Tester

Avec une clé sk_test_… et le fournisseur en mode test, passez une commande et payez sur la page Mobupay avec la carte de test Monext 5476 4309 9999 9892 (CVV 123, date d'expiration future). La commande doit se confirmer seule après le webhook, sans que vous ayez à revenir dessus.