Woo La Caisse Sync API
Solution d'intégration complète pour connecter votre boutique WooCommerce avec le système de gestion La Caisse (macaisse.ma) via le compte client Pizzaty. Synchronise automatiquement les produits, catégories et options depuis l'API La Caisse vers WooCommerce, et transmet les commandes clients vers cette API en temps réel.
Install
This is the repository archive. It installs, but the folder name will carry the branch suffix and updates will not flow.
Install straight from GitHub with WP-CLI:
wp plugin install https://github.com/khadijahr/woo-la-caisse-sync-api/archive/refs/heads/main.zipWOO La Caisse Sync API - Intégration WooCommerce & La Caisse
Plugin WordPress qui synchronise automatiquement les produits, catégories et options depuis l'API La Caisse (compte client Pizzaty sur macaisse.ma) vers WooCommerce, et transmet les commandes clients vers cette API en temps réel.
📋 Description
Woo-la-Caisse-Sync-API est une solution d'intégration complète qui permet de connecter votre boutique WooCommerce avec le système de gestion La Caisse (macaisse.ma) via le compte client Pizzaty sur La Caisse.ma. Le plugin automatise la synchronisation bidirectionnelle des données :
- Import automatique : Synchronise les produits, catégories, images et options depuis l'API La Caisse vers WooCommerce
- Export automatique : Envoie les commandes validées dans WooCommerce vers l'API La Caisse au format JSON
- Gestion intelligente : Évite les doublons et gère automatiquement les images et options produits
Développé spécifiquement pour Pizzaty, ce plugin permet de synchroniser le compte client Pizzaty sur La Caisse.ma avec une boutique WooCommerce, facilitant la gestion des commandes en ligne et la synchronisation des produits.
✨ Fonctionnalités principales
🔄 Synchronisation des produits
- Import automatique des produits depuis l'API La Caisse
- Création automatique des catégories avec leurs images
- Import des images de produits et de catégories depuis les URLs fournies
- Gestion des prix et descriptions produits
- Vérification des doublons (évite la création de produits existants)
- Limite de 20 produits à l'activation (configurable)
🎯 Gestion des options produits
- Import des groupes d'attributs (ex: Tailles, Sauces, Suppléments)
- Création automatique des options personnalisables pour chaque produit
- Association des options avec leurs prix respectifs
- Intégration avec Product Options for WooCommerce pour la gestion des options produits
🛒 Transmission des commandes
- Envoi automatique des commandes vers l'API après validation WooCommerce
- Transmission complète des données :
- Informations client (nom, téléphone)
- Adresse de livraison
- Produits commandés avec quantités
- Options sélectionnées pour chaque produit
- Prix total et méthode de paiement
- Format JSON conforme à l'API La Caisse
🎨 Affichage front-end
- Shortcode
[afficher_produits]pour afficher les données de l'API - Affichage des produits avec leurs catégories et options
- Formatage HTML structuré pour intégration facile
🚀 Installation
Prérequis
- WordPress >= 6.0
- PHP >= 7.0
- WooCommerce (actif et configuré)
- Product Options for WooCommerce (recommandé pour la gestion des options produits)
- Extension cURL activée sur le serveur
- Accès à l'API La Caisse avec token d'authentification
Étapes d'installation
-
Télécharger le plugin
# Copier le dossier du plugin dans le répertoire WordPress wp-content/plugins/woo-la-caisse-sync-api/ -
Activer le plugin
- Aller dans Extensions > Plugins dans l'administration WordPress
- Activer Woo La Caisse Sync API
-
Vérifier les dépendances
- S'assurer que WooCommerce est installé et activé
- Installer et activer Product Options for WooCommerce pour la gestion des options produits
- Le plugin vérifie automatiquement la présence de WooCommerce
-
Synchronisation initiale
- À l'activation, les 20 premiers produits sont automatiquement importés
- Les catégories et options sont créées automatiquement
- Les images sont téléchargées et associées
📖 Utilisation
Synchronisation automatique
La synchronisation se déclenche automatiquement à l'activation du plugin. Les produits importés sont :
- Publiés immédiatement dans WooCommerce
- Associés à leurs catégories respectives
- Enrichis avec leurs images et descriptions
- Configurés avec leurs options personnalisables
Affichage des produits API
Utilisez le shortcode dans vos pages ou articles pour afficher les données de l'API :
[afficher_produits]
Ce shortcode affiche :
- Liste de tous les produits disponibles dans l'API
- Catégories associées
- Options disponibles pour chaque produit
- Prix et descriptions
Transmission des commandes
Les commandes sont automatiquement transmises à l'API lorsque :
- Un client valide une commande dans WooCommerce
- La commande est marquée comme complétée
- Le hook
woocommerce_thankyouest déclenché
Aucune configuration supplémentaire n'est nécessaire - tout est automatique !
🔧 Configuration
Paramètres API
Les paramètres de connexion à l'API sont définis dans le fichier woo-la-caisse-sync-api.php :
// URL de l'API pour récupérer les produits
CURLOPT_URL => 'https://api-legacy.lacaisse.ma/CM/getProduct.php?...'
// URL pour envoyer les commandes
wp_remote_post("https://api-legacy.lacaisse.ma/CM/pushOrder.php", ...)
Limite de produits
Par défaut, seuls 20 produits sont importés à l'activation pour éviter la surcharge. Pour modifier cette limite, éditez la ligne 118 dans woo-la-caisse-sync-api.php :
if ($added_products_count >= 20) { // Modifier 20 par le nombre souhaité
break;
}
🛠️ Fonctions principales
| Fonction | Description |
|---|---|
recuperer_produits_depuis_api() |
Récupère toutes les données (produits, catégories, options) depuis l'API La Caisse |
add_products_and_categories_woocommerce() |
Crée les produits, catégories et options dans WooCommerce |
ajouter_image_produit() |
Télécharge et attache l'image à un produit depuis son URL |
send_order_data_to_api() |
Envoie les données de commande à l'API externe au format JSON |
get_product_id_by_name() |
Trouve l'ID d'un produit dans l'API selon son nom |
get_option_id_by_name() |
Trouve une option dans l'API selon son nom et le produit |
afficher_produits_avec_categories() |
Affiche les produits avec catégories et options (shortcode) |
📡 Structure de l'API
🌐 Site officiel La Caisse : macaisse.ma
Endpoint de récupération des produits
GET https://api-legacy.lacaisse.ma/CM/getProduct.php
Paramètres :
id_caisse: Identifiant de la caisseid_menu: Identifiant du menutoken_api: Token d'authentification
Réponse JSON :
{
"products": [
{
"id": "123",
"name": "Burger Classic",
"prix": "45",
"image_url": "https://example.com/image.jpg",
"description": "Description du produit",
"options_groups": [4, 5]
}
],
"categories": [
{
"id_cat": "1",
"name": "Burgers",
"image_url": "https://example.com/cat.jpg",
"sections": [
{
"products": ["123", "124"]
}
]
}
],
"attribute_groups": [
{
"id": 4,
"name": "Taille",
"options": [25, 26]
}
],
"options": [
{
"id": 25,
"name": "Petite",
"prix": 0
},
{
"id": 26,
"name": "Grande",
"prix": 10
}
]
}
Endpoint d'envoi des commandes
POST https://api-legacy.lacaisse.ma/CM/pushOrder.php
Format JSON envoyé :
{
"order_id": "12345",
"store_id": "111111",
"token_api": "1010101f-1a01-11e0-1211-10a101e1b01d1",
"payment_method": "bacs",
"currency": "MAD",
"special_requirements": null,
"customer": {
"name": "Jean Dupont",
"phone_number": "+212612345678"
},
"delivery_address": "123 Rue Example, Casablanca",
"estimated_total_price": "150.00",
"products": [
{
"quantity": 2,
"price": "90.00",
"name": "Burger Classic",
"id": "123",
"remark": "",
"options": [
{
"name": "Grande",
"id": 26,
"quantity": "1",
"price": 10
}
]
}
]
}
🔐 Sécurité & Bonnes pratiques
Mesures de sécurité
- ✅ Vérification de l'existence de WooCommerce avant toute action
- ✅ Vérification des doublons avant création de produits
- ✅ Sanitization des données avant insertion en base
- ✅ Utilisation des fonctions WordPress natives pour la sécurité
Limitations
- ⚠️ Seuls 20 produits sont importés à l'activation (pour éviter la surcharge)
- ⚠️ Aucune planification automatique : la synchronisation se fait uniquement à l'activation
- ⚠️ Pour une synchronisation régulière, envisager l'ajout d'un cron job WordPress
Recommandations
- 🔄 Configurer un cron job pour synchroniser régulièrement les produits
- 📊 Surveiller les logs d'erreur WordPress pour les échecs d'API
- 🔑 Sécuriser les tokens API (ne pas les exposer publiquement)
- 💾 Effectuer des sauvegardes régulières avant synchronisation
🐛 Dépannage
Les produits ne s'importent pas
- Vérifier que WooCommerce est actif
- Vérifier la connexion à l'API (tokens valides)
- Consulter les logs d'erreur WordPress
- Vérifier que l'extension cURL est activée
Les images ne s'affichent pas
- Vérifier les permissions d'écriture dans
wp-content/uploads/ - Vérifier que les URLs d'images sont accessibles
- Consulter les logs pour les erreurs de téléchargement
Les commandes ne sont pas envoyées
- Vérifier que le hook
woocommerce_thankyoufonctionne - Vérifier les logs d'erreur pour les échecs d'API
- Tester la connexion à l'endpoint
pushOrder.php - Vérifier le format JSON envoyé
📝 Changelog
Version 1.3.6
- Synchronisation automatique des produits à l'activation
- Import des catégories avec images
- Gestion des options produits (groupes d'attributs)
- Envoi automatique des commandes vers l'API
- Shortcode pour affichage front-end
- Vérification des doublons
- Limite de 20 produits à l'import
👤 Auteur
Khadija HR
- GitHub : @khadijahr
📄 Licence
Ce plugin est distribué sous licence GPLv2 ou ultérieure.
Vous êtes libre de :
- Utiliser ce plugin commercialement ou non
- Modifier le code selon vos besoins
- Distribuer le plugin modifié
🤝 Contribution
Les contributions sont les bienvenues ! Pour contribuer :
- Fork le projet
- Créer une branche pour votre fonctionnalité
- Commiter vos changements
- Pousser vers la branche
- Ouvrir une Pull Request
🔗 Ressources
- Site officiel La Caisse : macaisse.ma
- Product Options for WooCommerce : fr.wordpress.org/plugins/product-options-for-woocommerce/
- Documentation WooCommerce : woocommerce.com
- Documentation WordPress : wordpress.org/support
📞 Support
Pour toute question ou problème :
- Ouvrir une issue sur GitHub
- Consulter la documentation WordPress
- Vérifier les logs d'erreur WordPress
- Contacter le support La Caisse via macaisse.ma
Développé avec ❤️ pour Khadija Harmouche