Transfert des commande des boutiques en ligne vers le serveur 4D
📦 Documentation Flux Commandes WooCommerce → NAS Synology
1️⃣ Vue d’ensemble du flux
- Un client passe une commande sur le site e-commerce (WordPress + WooCommerce).
- WooCommerce exporte la commande automatiquement au format XML vers une URL publique.
- Un reverse proxy (Nginx Proxy Manager) redirige cette URL vers un serveur interne.
- Un script PHP reçoit, valide et enregistre la commande.
- Un script Python transfère ensuite le fichier vers le NAS Synology et l’archive localement.
- Toutes les étapes sont journalisées dans un fichier de logs, puis récupérées dans Grafana.
✅ Ce mécanisme permet un suivi complet, une redondance (log + archive locale), et un stockage final sur le NAS.
2️⃣ Configuration côté WooCommerce
- Rubrique utilisée :
WooCommerce > Exporter Commandes - Onglet :
Tâches de changement d’état
Exemple de tâche configurée
| Paramètre | Valeur |
|---|---|
| Nom de la tâche | export vers 4D V2 |
| Format d’export | XML |
| Type de destination | HTTP POST |
| URL cible | https://order.tarbouriech.tech/web_order.php |
⚠️ Chaque fois qu’une commande change d’état, WooCommerce envoie un XML via HTTP POST vers l’URL définie.
3️⃣ Reverse Proxy (Nginx Proxy Manager)
Domaine configuré
https://order.tarbouriech.tech
Redirection mise en place
| URL externe | Redirection interne |
|---|---|
/web_order.php (sur le domaine) |
http://192.168.1.17/web_orders/web_order.php |
✅ Cela permet de garder le serveur interne derrière un proxy et de l’exposer uniquement via le domaine externe.
4️⃣ Traitement côté Serveur : Script PHP web_order.php
📂 Emplacement : /var/www/html/web_orders/web_order.php
📌 Rôle : Réceptionner et valider les commandes XML.
Fonctionnement
- Vérifie que la requête est bien en POST.
- Vérifie que le contenu est un XML valide.
- Enregistre le fichier dans
orders/avec un nom unique : order_YYYYMMDD_HHMMSS_HASH.xml - Journalise l’opération dans
orders/web_order.log. - Lance le script Python
send_folder_to_synology.py.
5️⃣ Script Python send_folder_to_synology.py
📂 Emplacement : /var/www/html/web_orders/send_folder_to_synology.py
📌 Rôle : Transférer les commandes vers le NAS Synology et archiver localement.
Fonctionnement
- Connexion SSH + clé privée au NAS (
id_rsa). - Parcours tous les fichiers
.xmlprésents dansorders/. - Pour chaque fichier :
- Transfert via SCP vers le NAS.
- Renommage automatique de
order_→commande_. - Déplacement du fichier local en
orders/archive/.
- Journalisation complète dans
orders/web_order.log.
6️⃣ NAS Synology
📂 Dossier de réception :
/volume1/DATAS/4DDocuments/WebOrders/FTP/
Tous les fichiers y sont stockés sous le format : commande_YYYYMMDD_HHMMSS_HASH.xml
7️⃣ Logs et Archivage
Local
- Fichier :
/var/www/html/web_orders/orders/web_order.log - Contient toutes les étapes : réception, validation, transfert, archivage.
Centralisation Grafana
- Les logs sont également récupérés par Grafana pour visualisation et monitoring.
8️⃣ Scripts présents et utilité
Scripts utiles
- ✅
web_order.php→ réception XML côté serveur. - ✅
send_folder_to_synology.py(version 1.4) → transfert + archivage.
Scripts obsolètes
- ⚠️
scp_transfer.py→ doublon, car remplacé parsend_folder_to_synology.py. - ⚠️ Ancienne version de
send_folder_to_synology.py(v1.0) → à supprimer.
👉 À garder uniquement :
web_order.phpsend_folder_to_synology.py(la version avec archivage + log complet).
9️⃣ Cas particulier : Deuxième site
Un autre site e-commerce est configuré de la même façon mais avec un suffixe _O pour séparer les commandes :
- 📂 PHP :
web_order.php→web_order_O.php - 📂 Python :
send_folder_to_synology.py→send_folder_to_synology_O.py - 📂 Répertoire :
orders/→orders_O/ - 📂 Log :
web_order.log→web_order_O.log
Cela permet de distinguer les flux et de ne pas mélanger les fichiers entre les deux boutiques.
🔟 Guide pour duplication / maintenance
Étapes pour ajouter une nouvelle boutique
- Créer un nouveau dossier serveur : /var/www/html/web_orders_X/
- Copier les scripts :
web_order.php→ renommer enweb_order_X.phpsend_folder_to_synology.py→send_folder_to_synology_X.py
- Adapter les chemins :
orders_X/pour les fichiers reçusweb_order_X.logpour les logs
- Configurer le reverse proxy :
- Ajouter une règle Nginx Proxy Manager
- Exemple :
https://order2.tarbouriech.tech/web_order_X.php→ serveur interne
- Configurer WooCommerce :
- Nouvelle tâche d’export vers l’URL cible de la boutique.
- Vérifier :
- Commande test
- Apparition du fichier sur le NAS
- Logs disponibles localement + Grafana.
✅ Conclusion
- Scripts actifs :
web_order.php+send_folder_to_synology.py. - Scripts à supprimer :
scp_transfer.py+ anciennes versions. - Logs : toujours dans
orders/web_order.log+ Grafana. - Duplication facile en ajoutant un suffixe (ex :
_O,_X) pour isoler les flux de chaque boutique.
👉 Ce document peut être donné à un technicien (ou à ChatGPT) pour :
- corriger un problème,
- améliorer la solution,
- ou déployer une nouvelle boutique en suivant les mêmes étapes.
📦 Documentation Flux Commandes WooCommerce → NAS Synology
...
🔄 Schéma du flux (Vue d’ensemble)
+------------------+
| Client |
| Passe commande |
+--------+---------+
|
v
+---------------------------+
| WooCommerce (WordPress) |
| Export XML via HTTP POST |
+------------+--------------+
|
v
+---------------------------+
| Reverse Proxy (Nginx PM) |
| Expose URL publique |
+------------+--------------+
|
v
+---------------------------+
| Serveur interne (PHP) |
| - web_order.php |
| - Valide XML |
| - Stocke en local |
| - Log local + Grafana |
+------------+--------------+
|
v
+---------------------------+
| Script Python |
| - SCP → NAS Synology |
| - Renommage fichier |
| - Archivage local |
+------------+--------------+
|
v
+---------------------------+
| NAS Synology |
| /volume1/DATAS/.../FTP/ |
| Stockage final XML |
+---------------------------+
[](https://wiki.tarbouriech.tech/uploads/images/gallery/2025-10/flux-woocommerce-nas.png)