Skip to content

Plugin Odoo

Le fournisseur de paiement Genius Checkout pour Odoo ajoute Genius Checkout comme option native dans le module Payment d'Odoo. Il prend en charge le checkout hébergé carte, les remboursements partiels et totaux depuis les écrans comptables, les cartes enregistrées via tokenisation, et Odoo Subscriptions via des transactions merchant-initiated.

Prérequis

  • Odoo 17.0, 18.0 ou 19.0 (Community ou Enterprise). Un backport 16.0 est direct — voir "Backport Odoo 16".
  • Un compte Genius Checkout avec l'intégration Odoo activée sous Merchant → Connected Apps.

Installation

Étape 1 — connectez côté GC d'abord

Faites ceci avant d'installer le module Odoo pour avoir votre webhook secret sous la main :

  1. Connectez-vous à https://app.geniuscheckout.com.
  2. Connected Apps → Connect Odoo.
  3. Collez votre URL Odoo + votre Odoo personal API key.
  4. GC affiche un webhook secret unique — copiez-le maintenant.

Étape 2 — installez le module dans Odoo

  1. Copiez le dossier du module dans votre path addons Odoo sous payment_geniuscheckout (ou utilisez l'import branche GitHub d'odoo.sh).
  2. Redémarrez Odoo et mettez à jour la liste des apps.
  3. Apps → cherchez "Genius Checkout" → Installer.

Étape 3 — configurez le provider

Accounting → Configuration → Payment Providers → Genius Checkout :

RéglageValeur
API KeyVotre gc_test_… ou gc_live_… (le préfixe contrôle l'environnement)
Webhook SecretLa valeur copiée du tableau de bord GC à l'étape 1
StateTest Mode (validation) ou Enabled (live)

Flux de checkout

  1. Le client arrive au checkout Odoo, choisit Carte bancaire (la méthode GC).
  2. Le provider crée une session via POST /api/v1/checkout-sessions et redirige le client vers le checkout hébergé GC.
  3. Le client complète le paiement (3DS par GC).
  4. De manière asynchrone, GC envoie l'événement à /payment/geniuscheckout/webhook. Le récepteur vérifie HMAC-SHA256 sur {timestamp}.{body} et fait transitionner la payment transaction Odoo.
  5. Le retour côté navigateur à /payment/geniuscheckout/return re-fetch la session GC par ID et ne fait confiance qu'au statut de l'API (le tampering d'URL de retour est rejeté).

Fonctionnalités supportées

CapacitéStatut
Remboursements (total + partiel)Oui — Odoo 17 vérifié live
TokenisationOui — les clients peuvent enregistrer une carte au checkout
Cartes enregistréesOui — réutilisation one-click sur les commandes suivantes
AbonnementsOui — fonctionne avec Odoo Subscriptions ; les factures récurrentes se débitent via /api/v1/payments en sémantique MIT
Auth HMAC webhookOui — {timestamp}.{body}, hex, secret par instance
i18nOui — chaînes traduites ; help text aligné avec les fichiers PO

Abonnements

Si sale_subscription est installé, GC apparaît automatiquement comme provider pour les produits abonnement. La première vente capture la carte et la tokenise ; les factures suivantes sont débitées silencieusement via _send_payment_request — pas de redirection client.

Remboursements

Depuis une commande ou facture confirmée :

  1. Ouvrez la Payment Transaction liée.
  2. Cliquez Refund (action standard Odoo — affichée automatiquement quand support_refund='partial' est détecté sur le provider).
  3. Saisissez un montant (≤ original) ou laissez vide pour un remboursement total.
  4. Odoo crée une refund transaction ; le module l'envoie à POST /api/v1/payments/{id}/refund et reflète l'état de la réponse.

Endpoints

RouteDirectionRôle
/payment/geniuscheckout/returnentrant (navigateur)Le client revient du checkout GC
/payment/geniuscheckout/webhookentrant (S2S)Événements transactionnels server-to-server

Sécurité webhook

  • HMAC-SHA256 sur {timestamp}.{body} (hex) dans X-GC-Signature.
  • Fenêtre de rejeu de 5 minutes sur X-GC-Timestamp.
  • Le récepteur rejette les providers dont le secret configuré est vide ou fait moins de 16 caractères.

Backport Odoo 16

Remplacez l'extension de selection support_refund par support_refund_partial et ajustez la signature _get_specific_rendering_values (Odoo 16 utilisait une forme différente de processing-values). Tout le reste se porte proprement.

Dépannage

  • Commande reste en draft après paiement — confirmez que l'URL webhook dans le tableau de bord GC correspond à votre hostname public Odoo ; vérifiez le log Odoo pour les échecs HMAC.
  • L'URL /return ne fait pas avancer la commande — c'est intentionnel : le retour côté navigateur re-fetch désormais la session GC et ne fait confiance qu'au statut de l'API, donc une URL trafiquée reste en draft. Attendez le webhook (généralement quelques secondes).
  • Icône provider générique — videz le cache statique d'Odoo ; l'icône est dans static/description/icon.png et câblée dans data/payment_provider_data.xml.

Support

Released under the proprietary Genius Checkout license.