Skip to main content

Transfert des commande des boutiques en ligne vers le serveur 4D

📦 Documentation Flux Commandes WooCommerce → NAS Synology

1️⃣ Vue d’ensemble du flux

  1. Un client passe une commande sur le site e-commerce (WordPress + WooCommerce).
  2. WooCommerce exporte la commande automatiquement au format XML vers une URL publique.
  3. Un reverse proxy (Nginx Proxy Manager) redirige cette URL vers un serveur interne.
  4. Un script PHP reçoit, valide et enregistre la commande.
  5. Un script Python transfère ensuite le fichier vers le NAS Synology et l’archive localement.
  6. 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

  1. Vérifie que la requête est bien en POST.
  2. Vérifie que le contenu est un XML valide.
  3. Enregistre le fichier dans orders/ avec un nom unique : order_YYYYMMDD_HHMMSS_HASH.xml
  4. Journalise l’opération dans orders/web_order.log.
  5. 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

  1. Connexion SSH + clé privée au NAS (id_rsa).
  2. Parcours tous les fichiers .xml présents dans orders/.
  3. Pour chaque fichier :
  • Transfert via SCP vers le NAS.
  • Renommage automatique de order_commande_.
  • Déplacement du fichier local en orders/archive/.
  1. 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é par send_folder_to_synology.py.
  • ⚠️ Ancienne version de send_folder_to_synology.py (v1.0) → à supprimer.

👉 À garder uniquement :

  • web_order.php
  • send_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.phpweb_order_O.php
  • 📂 Python : send_folder_to_synology.pysend_folder_to_synology_O.py
  • 📂 Répertoire : orders/orders_O/
  • 📂 Log : web_order.logweb_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

  1. Créer un nouveau dossier serveur : /var/www/html/web_orders_X/
  2. Copier les scripts :
  • web_order.php → renommer en web_order_X.php
  • send_folder_to_synology.pysend_folder_to_synology_X.py
  1. Adapter les chemins :
  • orders_X/ pour les fichiers reçus
  • web_order_X.log pour les logs
  1. Configurer le reverse proxy :
  • Ajouter une règle Nginx Proxy Manager
  • Exemple : https://order2.tarbouriech.tech/web_order_X.php → serveur interne
  1. Configurer WooCommerce :
  • Nouvelle tâche d’export vers l’URL cible de la boutique.
  1. 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        |
+---------------------------+