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‑e-commerce (WordPress + WooCommerce)WooCommerce).
  2. WooCommerce exporte la commande automatiquement au format XML vers une URL.URL publique.
  3. Un reverse proxy (Nginx Proxy Manager) redirige cette URL vers un serveur interne.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

TâcheExemple 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 leun contenu XML via HTTP POST vers l’URL configurée.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 rendre l’endpoint PHP accessible depuis Internet tout en gardantgarder le serveur interne derrière un proxy.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 : RecevoirRéceptionner et traitervalider les commandes XML envoyées par WooCommerce.
XML.

Fonctionnement :

  1. Vérifie que la requête est bien en POST.
  2. ValideVérifie que le contenu est bien duun XML et qu’il est correctement formévalide.
  3. Enregistre le fichier XML reçu dans le dossier 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 pour transfert vers le NAS..

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. SeConnexion connecteSSH en+ SSHclé privée au NAS Synology (via clé privée id_rsa).
  2. ParcourtParcours tous les fichiers .xml présents dans orders/.
  3. Pour chaque fichier :
  • Le transfère vers le NASTransfert via SCP.
  • Renomme order_ en commande_ survers le NAS.
  • DéplaceRenommage leautomatique de order_ → commande_.
  • Déplacement du fichier localementlocal dansen orders/archive/.
  1. JournaliseJournalisation chaque étapecomplète dans orders/web_order.log.

6️⃣ NAS Synology

    📂

  • Dossier de réception :
    /volume1/DATAS/4DDocuments/WebOrders/FTP/

Tous les fichiers .xml y sont stockés sous le nomformat : 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.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

  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.py → send_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        |
+---------------------------+