Plugins WooCommerce, PrestaShop et Shopify
Ajoutez le paiement par Mobile Money (MTN, Moov) à votre boutique en ligne en une dizaine de minutes, sans écrire de code : un plugin pour WooCommerce (WordPress), un module pour PrestaShop 1.7 et 8, et pour Shopify un pont honnête avec ce que Shopify autorise. Les plugins utilisent l'API v2, la page de paiement hébergée et les webhooks : chaque paiement est vérifié côté serveur avant que la commande passe en « payée ».
Télécharger
| Boutique | Fichier | Prérequis |
|---|---|---|
| WooCommerce | cashchap-woocommerce-1.0.0.zip | WordPress 6.0+, WooCommerce 6.0+ (testé jusqu'à 11.2), PHP 7.4+ avec cURL. Commande classique et commande par blocs, stockage des commandes en tables dédiées (HPOS). |
| PrestaShop | cashchap-prestashop-1.0.0.zip | PrestaShop 1.7.0 à 8.x, PHP 7.4+ avec cURL. |
| Shopify | Pas de plugin : voir Shopify. | Un moyen de paiement manuel et, pour automatiser, le pont CashChap (PHP) décrit plus bas. |
Les sommes SHA-256 des fichiers sont publiées avec chaque version dans le fichier SHA256SUMS. Les plugins sont gratuits ; seuls les frais CashChap habituels s'appliquent aux paiements.
Comment ça marche
Les deux plugins proposent le même moyen de paiement, « Mobile Money (MTN, Moov) avec CashChap », avec deux parcours au choix dans les réglages :
| Parcours | Ce que voit le client | Ce que fait la boutique |
|---|---|---|
| Page de paiement CashChap (par défaut) | Après « Commander », la page de paiement sécurisée CashChap s'ouvre par-dessus la boutique : il choisit MTN ou Moov, saisit son numéro, confirme sur son téléphone, voit son reçu, puis revient sur la boutique en fermant la page. | Ouvre la page avec le SDK JavaScript et la clé publique, le numéro de commande en référence et une clé d'idempotence. Au retour, relit la transaction avec la clé secrète (GET /v2/transactions/{id}), contrôle le statut, le mode, le montant et la devise, puis confirme la commande. |
| Paiement direct | Il choisit l'opérateur et saisit son numéro Mobile Money sur la page de commande de la boutique, puis confirme sur son téléphone pendant qu'une page d'attente suit le paiement. | Crée l'encaissement depuis son serveur (POST /v2/collections, en-tête Idempotency-Key = référence de commande et numéro d'essai, reference = numéro de commande), puis suit la transaction avec wait=5 jusqu'au statut final. |
- Webhook : dans les deux parcours, le webhook CashChap (signature HMAC vérifiée, charge déchiffrée, dédoublonnage par
X-CashChap-Delivery) met la commande à jour même si le client ferme son navigateur. Les événements de test sont acquittés sans effet. - Vérifications avant de confirmer : statut
succeeded, mode (Live ou Sandbox) identique à celui des réglages, montant et devise identiques à la commande. Un paiement incohérent met la commande « en attente de vérification » (WooCommerce) ou laisse une note (PrestaShop) sans la confirmer : regardez-la dans le portail avant de livrer. - Référence :
WC-417(préfixe réglable + numéro de commande) sur WooCommerce,PS-C417(préfixe + numéro du panier) sur PrestaShop. Un nouvel essai après un échec ajoute-2,-3… : l'API refuse une référence déjà utilisée (duplicate_reference). - Traçabilité : chaque commande reçoit une note avec la référence CashChap, l'opérateur, le montant et le mode ; les appels à l'API et les webhooks sont journalisés (WooCommerce › État › Journaux, source
cashchap; PrestaShop : Paramètres avancés › Journaux, objetcashchap). - Devises : XOF, XAF, EUR, USD, CAD, NGN, GHS, CDF (montants entiers en XOF et XAF). Une boutique dans une autre devise ne propose pas le moyen de paiement.
WooCommerce en dix minutes
- Installez : Extensions › Ajouter › Téléverser une extension ›
cashchap-woocommerce-1.0.0.zip› Installer, puis Activer. - Ouvrez les réglages : WooCommerce › Réglages › Paiements › CashChap (Mobile Money) › Gérer.
- Collez vos clés Sandbox (portail, Développeurs › Clés API & MCP, environnement Sandbox) : clé secrète
SKSANDBOX_…et clé publiquePKSANDBOX_…. Laissez le mode sur Sandbox pour commencer. - Déclarez le webhook : copiez l'adresse affichée dans les réglages (
https://votre-boutique/wc-api/cashchap_webhook/) dans le portail, Développeurs › Webhooks (mode Sandbox) › Ajouter un webhook, événements Paiement réussi et Paiement échoué. Collez le secret de signature affiché une seule fois dans « Secret du webhook Sandbox ». - Choisissez le parcours (page de paiement CashChap ou paiement direct), cochez Activer, enregistrez.
- Testez : passez une commande avec le numéro
01 66 00 00 00(succès) puis01 66 00 00 12(solde insuffisant) : voir Tester en Sandbox. - Passez en Live : collez les clés Live, déclarez le webhook dans le portail en mode Live (secret différent), mettez le mode sur Live. Les clés Live n'encaissent qu'une fois le compte activé.
Les réglages en détail
| Réglage | Rôle |
|---|---|
| Titre et texte affichés au client | Nom du moyen de paiement et phrase d'explication sur la page de commande. |
| Mode | Sandbox (simulé) ou Live (réel). Le plugin utilise les clés et le secret de webhook du mode choisi ; un paiement d'un autre mode n'est jamais accepté. |
| Parcours de paiement | Page de paiement CashChap (clé publique nécessaire) ou paiement direct. |
| Préfixe des références | WC- par défaut : la référence WC-417 apparaît dans le portail, sur les reçus et dans les webhooks. |
| Clés Live / Clés Sandbox | Clé secrète (serveur seulement), clé publique (page de paiement) et secret du webhook de chaque mode. |
| Journal | Appels à l'API et webhooks dans WooCommerce › État › Journaux (source cashchap), secrets jamais écrits. |
États de commande : En attente de paiement à la commande ; En cours ou Terminée (selon les produits, par payment_complete()) quand le paiement est confirmé, avec l'identifiant de transaction CashChap ; Échouée avec le motif en français (« Le solde Mobile Money du client est insuffisant. ») après un échec, le client pouvant réessayer depuis la page de paiement de la commande ; En attente (on-hold) si le montant, la devise ou le mode ne correspondent pas.
Commande par blocs : le moyen de paiement s'inscrit dans le « Checkout block » de WooCommerce (titre, texte, bandeau Sandbox, et pour le paiement direct les champs opérateur et numéro). Avec la commande classique (code court [woocommerce_checkout]), les mêmes champs s'affichent sous le moyen de paiement.
PrestaShop en dix minutes
- Installez : Modules › Gestionnaire de modules › Installer un module ›
cashchap-prestashop-1.0.0.zip. Le module crée l'état de commande « En attente du paiement CashChap ». - Configurez le module : mode, parcours, titre et texte, préfixe des références, clés Live et Sandbox.
- Déclarez le webhook : copiez l'adresse affichée en haut de la configuration (
https://votre-boutique/module/cashchap/webhook) dans le portail, Développeurs › Webhooks, événements Paiement réussi et Paiement échoué, puis collez le secret de signature. - Autorisez le module pour vos devises et groupes de clients : Paiement › Préférences.
- Testez en Sandbox, puis passez en Live comme pour WooCommerce.
États de commande : la commande est créée dès le lancement du paiement dans l'état En attente du paiement CashChap, puis passe à Paiement accepté (avec l'identifiant de transaction CashChap sur le paiement de la commande) ou Erreur de paiement ; chaque étape laisse un message privé sur la commande. Avec le parcours direct, le client voit une page d'attente du module ; avec la page de paiement CashChap, il revient sur la confirmation de commande, qui vérifie le paiement.
Le module suit les conventions PrestaShop (classe PaymentModule, hookPaymentOptions, contrôleurs redirect, attente, validation et webhook, traductions françaises) et n'écrit rien en dehors de sa table de suivi cashchap_paiement et de ses réglages.
Shopify : ce qui est possible
Sur Shopify, un moyen de paiement intégré à la page de commande ne peut être qu'une Payments App : seuls les partenaires de paiement approuvés par Shopify peuvent en construire une (candidature, accord de partage de revenus, double revue), et une app « sur mesure » pour une seule boutique est réservée aux marchands Shopify Plus. CashChap n'a pas aujourd'hui ce statut : il n'existe donc pas de plugin Shopify CashChap installable, et nous préférons le dire plutôt que de livrer un paquet qui ne fonctionnerait pas.
Ce qui fonctionne dès maintenant, sans approbation de Shopify :
- Moyen de paiement manuel « Mobile Money (MTN, Moov) avec CashChap » (Paramètres › Paiements › Moyens de paiement manuels), avec pour instruction : indiquer son numéro Mobile Money dans le champ Téléphone et confirmer le paiement sur son téléphone après la commande. La commande est enregistrée en attente de paiement.
- Pont CashChap (deux scripts PHP à héberger en HTTPS, fournis avec le guide) : à la création de la commande (webhook Shopify), il lance l'encaissement CashChap sur le numéro du client ; à la confirmation (webhook CashChap), il marque la commande payée par l'API Admin de Shopify et y note la référence CashChap et l'opérateur. Sans numéro valide, il laisse une note et vous rapprochez le paiement d'un CashChap Link à prix libre.
Limites : le client confirme sur son téléphone après la commande, sans page de paiement CashChap pendant la commande ni état en direct ; pensez à l'annulation automatique des commandes impayées dans Shopify. Le guide complet, le pont et ses tests sont dans le dossier shopify/ du dépôt des plugins (voir Code source). Si CashChap devient partenaire de paiement Shopify, cette page l'annoncera.
Tester en Sandbox
- Mode Sandbox avec les clés Sandbox : les pages de la boutique affichent « Mode test : aucun argent réel ne sera débité ».
- Commande avec le numéro
01 66 00 00 00: succès en 5 secondes environ, commande confirmée, note avec la référence CashChap. - Commande avec
01 66 00 00 12: échec « solde insuffisant » affiché, commande échouée, bouton Réessayer. - Dans le portail (mode Sandbox) : la transaction dans Paiements, le webhook livré dans Développeurs › Webhooks › Historique des livraisons (code HTTP 200). Utilisez aussi le bouton Tester du webhook : le plugin répond 200 et ne touche à aucune commande.
- Autres scénarios (attente longue, délai dépassé) avec les numéros correspondants, puis la liste de recette.
Questions fréquentes
- Le moyen de paiement n'apparaît pas à la commande
- Vérifiez qu'il est activé, que la clé secrète du mode choisi est renseignée (et la clé publique pour la page de paiement CashChap), que la devise de la boutique est acceptée (XOF, XAF, EUR, USD, CAD, NGN, GHS, CDF) et, sur PrestaShop, que le module est autorisé pour la devise et le groupe du client (Paiement › Préférences).
- La commande reste « en attente » alors que le client a payé
- Le webhook n'est probablement pas déclaré, ou l'a été dans l'autre mode, ou son secret est faux (le journal montre « signature invalide »). Consultez l'historique des livraisons du portail ; relancez la livraison après correction. En attendant, la page d'attente et le retour du client relisent la transaction par l'API.
- Le client a payé deux fois ?
- Impossible par construction : la référence est unique par commande et par essai, et la clé d'idempotence protège un appel rejoué. Un deuxième succès pour une commande déjà payée est ignoré et noté.
- Puis-je rembourser depuis la boutique ?
- Pas encore : les remboursements se demandent depuis le portail. Le plugin ne modifie pas la commande lors d'un remboursement.
- Frais et montant débité
- La boutique envoie le prix de la commande ; les frais à la charge du client éventuels et l'arrondi s'ajoutent sur la page de paiement et le reçu. Le contrôle du plugin porte sur le prix demandé (
amount,currency). - Où sont les clés et le secret du webhook ?
- Clés : portail, Développeurs › Clés API & MCP, dans l'environnement voulu. Secret du webhook : affiché une seule fois à sa création dans Développeurs › Webhooks ; perdu, « Modifier › Nouveau secret ».
- Mise à jour du plugin
- Téléversez la nouvelle version par-dessus l'ancienne (WordPress propose « Remplacer la version actuelle ») ; les réglages sont conservés. Sur PrestaShop, « Mettre à niveau » depuis le gestionnaire de modules.
Code source et contributions
Les plugins sont écrits en PHP sans dépendance (cURL seulement), en français, et partagent un petit client de l'API v2 et un vérificateur de webhooks communs, couverts par des tests unitaires. Pour signaler un problème ou proposer une amélioration, écrivez à support@cashchap.com avec la version de votre boutique, celle du plugin et le request_id des appels concernés (journal du plugin ou Développeurs › Journaux API).