WordPress et WooCommerce font tourner une bonne part des boutiques en ligne camerounaises. Y ajouter le Mobile Money ne demande pas de développement : une extension, quatre réglages, un paiement de test. Voici la marche à suivre dans l'ordre, et surtout les deux réglages qui font échouer la plupart des premières tentatives.
Avant de commencer
Il vous faut trois choses : une boutique WooCommerce qui fonctionne déjà, un compte marchand, et un accès à l'administration WordPress avec le droit d'installer une extension. Vous n'avez besoin ni de votre hébergeur, ni d'un développeur, ni de la validation de votre dossier d'identité — toute la mise au point se fait en mode test.
Étape 1 — Régler la devise en franc CFA, sans décimale
C'est le réglage qui casse le plus de branchements, et il se trouve loin de la page des paiements : WooCommerce → Réglages → Général.
Mettez la devise sur franc CFA (XAF) et le nombre de décimales à zéro. Le franc CFA n'a pas de sous-unité : un prix s'écrit 15000, jamais 15000.00. Si vous laissez deux décimales, les montants transmis et les montants reçus finiront par ne plus correspondre, et vos commandes resteront bloquées en attente avec une note « montant incohérent ».
Profitez-en pour vérifier vos prix : une boutique migrée depuis une autre devise garde souvent des prix à virgule qui n'ont aucun sens en francs.
Étape 2 — Installer l'extension
Copiez le dossier de l'extension dans wp-content/plugins/, ou créez une archive ZIP de son contenu et téléversez-la depuis Extensions → Ajouter. Activez ensuite WalleoPay pour WooCommerce. Un lien Réglages apparaît sous le nom de l'extension et mène directement à l'écran de configuration.
L'extension n'a aucune dépendance à installer : elle utilise l'API HTTP de WordPress. Elle demande PHP 7.4 ou plus, WordPress 5.8 ou plus et WooCommerce 6.0 ou plus — c'est-à-dire ce que fait tourner n'importe quel hébergement à jour.
Étape 3 — Coller vos clés
Dans WooCommerce → Réglages → Paiements → WalleoPay, renseignez le mode et les clés. Vous les trouvez dans votre tableau de bord marchand, section Développeurs → Clés d'API.
- Laissez le mode sur Test pendant toute la mise au point et collez votre clé
sk_test_…. - Le jour de la mise en production, passez le mode sur Production et collez la clé
sk_live_….
Retenez la règle : le mode découle de la clé, pas de la liste déroulante. La liste indique simplement à l'extension laquelle des deux clés envoyer. Une clé de test ne peut pas encaisser réellement, même si le mode affiche « Production ».
La clé secrète ne s'affiche en clair qu'une seule fois, à sa création. Conservez-la dans un gestionnaire de mots de passe. Et ne la collez jamais dans un thème, un script visible côté navigateur ou un dépôt public : une clé secrète qui fuite permet de créer des paiements en votre nom.
Étape 4 — Déclarer l'adresse de notification
C'est l'étape que l'on saute, et celle qui explique les commandes qui restent « en attente » alors que le client a bien payé.
L'adresse à déclarer est affichée en haut de l'écran de réglages de l'extension. Elle ressemble à ceci :
https://votre-boutique.tld/wc-api/walleopay
Dans votre tableau de bord, section Développeurs → Webhooks, créez un point de terminaison avec cette adresse et abonnez-le aux événements payment.succeeded, payment.failed, payment.expired, payment.cancelled et payment.awaiting_confirmation. À la création, un secret de signature commençant par whsec_ s'affiche : copiez-le et collez-le dans le champ Secret de webhook des réglages de l'extension.
Sans ce secret, toutes les notifications entrantes sont rejetées. C'est volontaire : une notification non signée n'est qu'un message venu d'Internet.
Cochez enfin Activer le paiement WalleoPay et enregistrez. Le moyen de paiement n'apparaît à la commande que si une clé est renseignée pour le mode sélectionné.
Étape 5 — Passer une commande de test
Passez une vraie commande sur votre boutique, en mode test, et suivez le parcours jusqu'au bout. Regardez ensuite trois choses :
- La commande est-elle passée en traitement sans intervention de votre part ?
- L'encart WalleoPay dans la fiche de commande affiche-t-il l'identifiant du paiement, la référence, le mode, le statut et l'opérateur ?
- La livraison des notifications apparaît-elle dans votre tableau de bord avec une réponse en
200?
Éprouvez aussi les cas qui ne marchent pas : annulation par le client, délai laissé expirer. Ce sont les plus fréquents en production, et c'est le moment de vérifier ce que votre boutique en fait — tant que c'est gratuit.
Comment une commande est validée, et pourquoi c'est important
L'extension ne marque jamais une commande payée sur la seule foi d'une notification ou d'un retour de navigateur. À chaque fois, elle applique la même séquence : vérification de la signature, contrôle de l'horodatage, relecture du statut auprès de l'API, puis comparaison du montant et de la devise avec le total de la commande. En cas d'écart, une note est ajoutée et la commande reste en attente plutôt que d'être validée à tort.
La correspondance des statuts est directe : un paiement réussi déclenche la validation du règlement, un paiement en attente de confirmation place la commande en attente avec une note explicative, un échec ou une expiration la marque échouée ou annulée. Les statuts non définitifs ne changent rien : tant que le sort du paiement n'est pas fixé, la commande ne bouge pas.
Le traitement est rejouable : une commande déjà réglée n'est jamais validée deux fois, même si la même notification arrive plusieurs fois.
Quand ça coince
Le moyen de paiement n'apparaît pas à la commande. L'extension est-elle activée, la case cochée, et une clé renseignée pour le mode sélectionné ? Une clé de test ne suffit pas si le mode est sur Production.
Les commandes restent en attente alors que le client a payé. La notification n'arrive pas. Vérifiez que l'adresse …/wc-api/walleopay répond publiquement : ni mot de passe HTTP, ni pare-feu qui bloque, ni extension de sécurité qui filtre. Les livraisons et leurs réponses sont visibles dans votre tableau de bord.
Le journal indique « signature invalide ». Soit le secret ne correspond pas au point de terminaison configuré, soit un module de sécurité ou de cache réécrit le corps de la requête. La signature porte sur les octets exacts : tout ce qui touche au JSON entrant la casse.
Le journal indique un horodatage hors tolérance. L'horloge de votre serveur dérive de plus de cinq minutes. Faites-la resynchroniser par votre hébergeur.
« Montant incohérent ». Neuf fois sur dix, c'est la devise ou les décimales de l'étape 1. La commande est volontairement laissée en attente : vérifiez avant de la valider à la main.
Pour tout le reste, activez la journalisation dans les réglages et consultez WooCommerce → État → Journaux, source walleopay. Les clés y sont toujours masquées.
Le jour de la mise en production
Une fois votre dossier d'identité validé, la bascule tient en trois gestes : passer le mode sur Production, coller la clé sk_live_…, et refaire une commande réelle avec un petit montant. Rien d'autre ne change — ni l'adresse de notification, ni le secret, ni vos réglages. C'est tout l'intérêt d'avoir tout réglé en test dès le départ.