Installer le plugin WooCommerce pour Papi
Le plugin WooCommerce pour Papi permet d'intégrer l'agrégateur de paiement Papi dans une boutique WordPress WooCommerce.
Il permet d'accepter les paiements par Mobile Money (MVola, Orange Money, Airtel Money) et par cartes Visa et Mastercard à Madagascar.
Prérequis
Avant d'installer le plugin, vérifiez les points suivants :
- Vous utilisez WordPress 5.0 ou une version ultérieure
- Vous utilisez WooCommerce 3.0 ou une version ultérieure (testé jusqu'à la version 9.9)
- Votre site utilise PHP version 7.2 minimum
- Vous avez créé une boutique chez Papi avec une clé API de boutique
- Votre boutique WooCommerce est configurée pour utiliser la devise MGA (Ariary malgache)
Télécharger le plugin
Téléchargez le fichier Zip officiel du plugin WooCommerce Papi depuis la page Téléchargements.
Utilisez la dernière version disponible, sauf si le support Papi vous a explicitement demandé d'installer une autre version. La page Téléchargements liste les versions officielles de la plus récente à la plus ancienne, avec pour chaque version le fichier Zip, le checksum SHA-256, les notes de compatibilité et le changelog.
Après le téléchargement, conservez le fichier au format Zip. Vous n'avez pas besoin de le décompresser avant de l'installer depuis le back-office WordPress.
Installer le plugin depuis le back-office WordPress
Installation par téléversement
- Dans le back-office WordPress, ouvrez Plugins → Add New Plugin.
- Cliquez sur Upload Plugin.
- Sélectionnez le fichier
papi-woocommerce-gateway.ziptéléchargé. - Cliquez sur Install Now.
- Une fois l'installation terminée, cliquez sur Activate Plugin.
- Ouvrez WooCommerce → Settings → Payments et cliquez sur Manage en face de Papi Payment pour le configurer.
Installation manuelle via FTP
Utilisez l'installation manuelle uniquement si votre back-office WordPress ne permet pas de téléverser le fichier Zip du plugin.
- Décompressez le fichier
papi-woocommerce-gateway.ziptéléchargé sur votre ordinateur. - Vérifiez que le dossier extrait s'appelle bien
papi-woocommerce-gateway. - Copiez le dossier
papi-woocommerce-gateway/dans le répertoirewp-content/plugins/de votre installation WordPress. - Dans le back-office WordPress, ouvrez Plugins.
- Recherchez Papi Payment Gateway for WooCommerce et cliquez sur Activate.
Configuration obligatoire de la devise MGA
Papi accepte uniquement aujourd'hui les paiements en Ariary malgache (MGA). Si la boutique WooCommerce n'est pas configurée avec MGA comme devise active, l'option de paiement Papi n'apparaîtra pas au checkout.
Définir MGA comme devise WooCommerce
- Dans le back-office WordPress, ouvrez WooCommerce → Settings → General.
- Dans le champ Currency, sélectionnez Malagasy ariary (Ar).
- Enregistrez les paramètres.
Une fois MGA sélectionnée, les prix s'affichent en Ar sur les pages produit et dans le panier.
Configuration du plugin
- Dans le back-office WordPress, ouvrez WooCommerce → Settings → Payments.
- Cliquez sur Manage en face de Papi Payment.
- Renseignez les champs nécessaires.
| Champ | Description |
|---|---|
| Enable/Disable | Active le moyen de paiement Papi au checkout. Désactivé par défaut. |
| Title | Le libellé que le client voit au checkout. Valeur par défaut : Paiement Mobile Money / Carte. |
| Description | La description affichée sous l'option de paiement. Valeur par défaut : Payez par MVola, Airtel Money, Orange Money ou carte bancaire. |
| Papi API key | Votre clé API de boutique disponible sur dashboard.papi.mg sous Boutiques → Developer. |
Après enregistrement, le moyen de paiement Papi est immédiatement disponible au checkout.
Configuration du webhook Papi
Le webhook est l'URL de votre boutique appelée par Papi après chaque changement de statut de paiement. C'est ce mécanisme qui permet à WooCommerce de mettre à jour automatiquement le statut des commandes.
En production
L'URL de notification est générée automatiquement par le plugin. Aucune configuration manuelle n'est nécessaire dans WooCommerce.
Dans le dashboard Papi, configurez l'URL de notification de votre boutique. L'URL suit ce format :
https://votre-boutique.mg/?wc-api=wc_gateway_papi
Si votre installation WordPress utilise les permaliens optimisés, l'URL peut également se présenter ainsi :
https://votre-boutique.mg/wc-api/wc_gateway_papi/
L'URL de notification doit être publiquement accessible depuis Internet. Un serveur local, un serveur derrière VPN ou un environnement non exposé publiquement ne recevra pas les notifications Papi.
En développement local
Si WordPress tourne en local, par exemple sur http://localhost/my-store, Papi ne peut pas appeler directement votre machine.
Deux approches sont possibles.
Option A : tunnel ngrok
- Installez et configurez ngrok.
- Démarrez un tunnel vers votre port local :
ngrok http 80
- Récupérez l'URL publique fournie par ngrok, par exemple
https://abc123.ngrok-free.app. - Dans le dashboard Papi, renseignez l'URL de notification suivante :
https://abc123.ngrok-free.app/?wc-api=wc_gateway_papi
Option B : test direct en ligne de commande
Pour tester le traitement du webhook sans passer par Papi, récupérez un payload JSON valide et rejouez-le directement vers votre WordPress local.
Récupérez d'abord la valeur de la meta _papi_notification_token de la commande que vous souhaitez tester. Vous la trouverez dans la base de données WordPress (wp_postmeta, ou wp_wc_orders_meta si HPOS est activé) ou directement depuis la fiche de commande WooCommerce sous Custom Fields.
Envoyez ensuite une notification de test.
Exemple PowerShell :
$body = '{"paymentStatus":"SUCCESS","merchantPaymentReference":"WC-123","notificationToken":"VOTRE_TOKEN","paymentMethod":"MVOLA","currency":"MGA","amount":8000}'
Invoke-WebRequest -Uri "http://localhost/my-store/?wc-api=wc_gateway_papi" `
-Method POST `
-ContentType "application/json" `
-Body $body
Exemple curl :
curl -X POST "http://localhost/my-store/?wc-api=wc_gateway_papi" \
-H "Content-Type: application/json" \
-d '{"paymentStatus":"SUCCESS","merchantPaymentReference":"WC-123","notificationToken":"VOTRE_TOKEN","paymentMethod":"MVOLA","currency":"MGA","amount":8000}'
Une réponse 200 OK avec le contenu {"success":true} confirme que le webhook a bien été traité.
Vérification du parcours d'achat
Avant la mise en production, testez le parcours complet :
- Sélectionner un produit et l'ajouter au panier.
- Aller au checkout.
- À l'étape paiement, vérifier que Papi Payment apparaît avec le logo Papi.
- Sélectionner Papi Payment et cliquer sur Place Order.
- Vérifier que WooCommerce crée une commande en statut Pending payment.
- Vérifier la redirection vers la page de paiement hébergée par Papi.
- Effectuer un paiement de test sur la page Papi.
- Revenir sur la boutique et vérifier la page de confirmation de commande.
- Après réception du webhook, vérifier que le statut de commande passe à Processing ou Completed dans le back-office WooCommerce.
Statuts de commande
| Statut WooCommerce | Quand | Notes |
|---|---|---|
| Pending payment | Dès que le client est redirigé vers la page de paiement Papi | Le panier est vidé à ce moment-là. |
| Processing | Webhook SUCCESS reçu | Déclenché par payment_complete(). WooCommerce peut passer automatiquement à Completed selon les réglages de vos produits. |
| Failed | Webhook FAILED reçu | La note de commande contient le motif d'échec retourné par Papi. |
| Pending payment (note ajoutée) | Webhook PENDING reçu | Le statut de commande reste inchangé ; une note est ajoutée pour indiquer que le paiement est en attente de confirmation. |
Logs
Le plugin consigne tous les événements webhook dans le système de logs de WooCommerce. Les logs sont accessibles depuis WooCommerce → Status → Logs. Sélectionnez la source papi-gateway dans la liste déroulante.
| Niveau de log | Quand |
|---|---|
info | Chaque notification webhook entrante (payload complet). |
warning | Notification malformée reçue (champs obligatoires manquants). |
error | Commande introuvable pour la référence, ou token de notification non concordant. |
Les fichiers de log sont stockés dans wp-content/uploads/wc-logs/ et font l'objet d'une rotation automatique par WooCommerce.
Points d'attention techniques
Durée de validité du lien de paiement
Le lien de paiement Papi est valide pendant 60 minutes après sa création. Si le client ne finalise pas le paiement dans ce délai, le lien expire. La commande reste en statut Pending payment et peut être annulée manuellement depuis le back-office WooCommerce.
Commandes multiples sur un même panier
WooCommerce crée la commande et vide le panier avant la redirection vers Papi. Si le client abandonne le paiement et revient sur la boutique, le panier sera vide. L'ancienne commande reste en statut Pending payment et peut être annulée manuellement depuis le back-office si nécessaire.
Checkout à base de blocs
Le plugin est entièrement compatible avec le checkout WooCommerce classique et avec le checkout WooCommerce à base de blocs (blocs Cart & Checkout, activés par défaut depuis WooCommerce 8+).
Compatibilité HPOS
Le plugin est compatible avec le stockage de commandes haute performance de WooCommerce (HPOS / tables de commandes dédiées). Toutes les données de commande sont lues et écrites via l'API de commandes WooCommerce.
Absence de HTTPS en développement
WooCommerce peut afficher un avertissement lorsque la boutique ne fonctionne pas en HTTPS. Cela n'empêche pas le moyen de paiement Papi d'apparaître au checkout dans un environnement de développement. En production, le HTTPS est obligatoire.
Structure du plugin
papi-woocommerce-gateway/
├── papi-woocommerce-gateway.php
├── uninstall.php
├── readme.txt
├── assets/
│ ├── logo-papi-full.svg
│ └── zone.png
└── includes/
└── class-papi-delivery-fee-module.php
| Fichier | Rôle |
|---|---|
papi-woocommerce-gateway.php | Fichier principal du plugin. Déclare la classe de passerelle de paiement WC_Gateway_Papi, enregistre la compatibilité avec les fonctionnalités WooCommerce (HPOS, checkout à base de blocs) et charge le module de frais de livraison. |
uninstall.php | Exécuté lors de la suppression du plugin depuis le back-office WordPress. Supprime de la base de données toutes les options du plugin et les meta de commande. |
readme.txt | Readme de plugin au format standard WordPress.org. |
assets/logo-papi-full.svg | Logo Papi affiché au checkout à côté du nom du moyen de paiement. |
assets/zone.png | Image de la carte des zones de livraison (réservée à une version future). |
includes/class-papi-delivery-fee-module.php | Module de frais de livraison par zone (désactivé en v1.0, prévu pour une version future). |
Meta de commande
Le plugin stocke les métadonnées suivantes sur les commandes WooCommerce.
| Clé de meta | Description |
|---|---|
_papi_payment_reference | Référence marchand envoyée à Papi, au format WC-{order_number}. |
_papi_notification_token | Token de sécurité retourné par Papi à la création du lien de paiement. Utilisé pour vérifier les webhooks entrants. |
_papi_payment_link | URL de la page de paiement hébergée par Papi. |
_papi_merchant_reference | Référence marchand confirmée dans le webhook SUCCESS. |
_papi_payment_method | Moyen de paiement utilisé par le client (par exemple MVOLA, AIRTEL_MONEY, ORANGE_MONEY). |
Désinstallation
La désinstallation depuis Plugins → Installed Plugins → Delete effectue les opérations suivantes :
- Suppression des réglages de la passerelle (option WordPress
woocommerce_papi_gateway_settings). - Suppression de toutes les meta de commande liées à Papi en base de données (à la fois dans la table classique
wp_postmetaet dans la table HPOSwp_wc_orders_metasi elle est présente).
La suppression des meta de commande est irréversible. Si l'historique des transactions doit être conservé, sauvegardez les clés de meta concernées avant de désinstaller le plugin.