Aller au contenu principal

Configuration du Cron

Order Payment Reminders Pro n'envoie pas d'e-mails par lui-même — il nécessite un appel externe récurrent (une tâche cron) pour déclencher le moteur de rappels.

remarque

Disponible depuis la v1.0.0

Sans une tâche cron fonctionnelle, aucun e-mail de rappel ne sera envoyé, aucune commande ne sera annulée automatiquement, et le récapitulatif administrateur n'arrivera jamais.

Vue d'ensemble

À chaque appel de l'URL cron, le module parcourt toutes les commandes impayées en attente et décide de l'action à effectuer :

  • Envoyer les e-mails de rappel — Pour chaque commande ayant atteint l'heure planifiée pour son prochain rappel, le module envoie l'e-mail configuré.
  • Annuler les commandes en retard — Si l'annulation automatique est activée et qu'une commande a dépassé le délai d'annulation configuré, le statut de la commande passe à Annulée et le stock est restauré.
  • Envoyer le récapitulatif administrateur — Si la fonctionnalité d'e-mail récapitulatif est activée, le module envoie un résumé des commandes approchant de leur délai d'annulation. Cette action est limitée à une fois par jour, quelle que soit la fréquence d'exécution du cron.

Les trois actions se produisent lors d'un seul appel cron. Vous n'avez pas besoin d'entrées cron séparées pour chaque fonctionnalité.

L'endpoint cron est protégé par une clé secrète. Les appels sans clé valide renvoient une réponse 403 Forbidden et consignent un avertissement d'accès non autorisé. Aucun e-mail n'est jamais envoyé depuis une requête non autorisée.

Configuration

Fréquence d'exécution du Cron

Une fois par jour à heure fixe est l'exigence minimale et convient à la plupart des boutiques. Exécutez-le une fois par jour à un moment adapté à vos clients — tôt le matin (par exemple, 09h00) signifie que les rappels arrivent pendant les heures ouvrables.

Toutes les heures est préférable lorsque vous utilisez des planifications de rappels basées sur les heures (par exemple, « envoyer un rappel 12 heures après la commande »). Si tous vos rappels sont basés sur les jours, les exécutions horaires sont inutiles mais inoffensives.

Plus d'une fois par heure n'est jamais nécessaire. Le module suit les rappels déjà envoyés et ne les dupliquera pas.

Étape 1 — Trouver votre URL Cron dans le Back Office

Votre URL cron unique et sécurisée est affichée directement dans la configuration du module.

  1. Allez dans Modules > Gestionnaire de modules, trouvez Order Payment Reminders Pro, et cliquez sur Configurer.
  2. Cliquez sur l'onglet Cron Jobs dans la navigation du module.
  3. Repérez la ligne URL check and send the emails is:. L'URL complète y est affichée.

Copiez cette URL. Vous la collerez dans votre configuration cron lors des étapes suivantes.

La valeur key= est un token hexadécimal de 32 caractères généré lors de la première installation du module et stocké dans votre base de données. Il est unique à votre boutique. Ne le partagez jamais publiquement et ne le committez pas dans un système de contrôle de version.

Le format de l'URL dépend de votre paramètre d'URL conviviale

Le module affiche automatiquement le format d'URL correct pour votre boutique. Il existe deux formes :

Forme URL conviviale (lorsque les URLs conviviales sont activées dans Paramètres de la boutique > Trafic & Référencement > SEO & URLs) :

https://votreboutique.com/wiretransferreminder/cron?key=a1b2c3d4e5f6...

Forme standard (lorsque les URLs conviviales sont désactivées) :

https://votreboutique.com/index.php?fc=module&module=wiretransferreminder&controller=cron&key=a1b2c3d4e5f6...

Les deux formes fonctionnent de manière identique. Copiez toujours l'URL exactement telle qu'elle est affichée par le module — le module sélectionne automatiquement le bon format pour votre boutique. La forme URL conviviale a été introduite dans la v1.3.1 via le hook moduleRoutes.

Étape 2 — Choisir votre méthode de configuration

Utilisez la méthode prise en charge par votre environnement d'hébergement. Une seule est nécessaire.

  • Cron Jobs cPanel — disponible sur la plupart des hébergements mutualisés (cPanel, Plesk)
  • crontab Linux — disponible lorsque vous avez un accès SSH au serveur
  • Gestionnaire de tâches Cron PrestaShop — disponible en tant que module gratuit sur les boutiques PrestaShop 1.6

Option A — Cron Jobs cPanel

  1. Connectez-vous à votre cPanel et ouvrez Cron Jobs.
  2. Dans Ajouter un nouveau Cron Job, définissez la fréquence. Pour une exécution quotidienne à 09h00 :
    • Minute : 0
    • Heure : 9
    • Jour : *
    • Mois : *
    • Jour de la semaine : *
  3. Dans le champ Commande, collez :
curl -s -o /dev/null "https://votreboutique.com/wiretransferreminder/cron?key=VOTRE_CLE_ICI"

Remplacez l'URL par l'URL complète copiée depuis le Back Office.

  1. Cliquez sur Ajouter un nouveau Cron Job.

Pour une planification horaire, définissez la Minute sur 0 et l'Heure sur *.


Option B — crontab Linux (SSH)

  1. Connectez-vous à votre serveur via SSH.
  2. Ouvrez l'éditeur crontab :
crontab -e
  1. Ajoutez l'une des lignes suivantes à la fin du fichier.

Quotidiennement à 09h00 :

0 9 * * * curl -s -o /dev/null "https://votreboutique.com/wiretransferreminder/cron?key=VOTRE_CLE_ICI"

Toutes les heures à l'heure pile :

0 * * * * curl -s -o /dev/null "https://votreboutique.com/wiretransferreminder/cron?key=VOTRE_CLE_ICI"

Toutes les 3 heures (0h00, 3h00, 6h00, 9h00 ...) :

0 */3 * * * curl -s -o /dev/null "https://votreboutique.com/wiretransferreminder/cron?key=VOTRE_CLE_ICI"
  1. Enregistrez et quittez l'éditeur. Le démon cron prendra en compte la modification immédiatement.

Le flag -s supprime la progression de curl. L'option -o /dev/null supprime le corps de la réponse (qui se retrouverait sinon dans votre boîte mail). Si vous souhaitez journaliser la sortie pour le débogage, remplacez -o /dev/null par -o /chemin/vers/wr-cron.log.

Sur certains serveurs, curl peut ne pas être dans le PATH par défaut pour cron. Si la tâche ne s'exécute pas, utilisez le chemin complet : exécutez which curl dans votre session SSH pour le trouver (généralement /usr/bin/curl).


Option C — Gestionnaire de tâches Cron PrestaShop (PS 1.6 uniquement)

Le module gratuit Cron Tasks Manager (disponible sur l'Addons Marketplace) fournit un planificateur cron dans le navigateur qui fonctionne sans accès au niveau du serveur. Il est affiché dans l'onglet Cron Jobs pour les boutiques PrestaShop 1.6.

  1. Installez et configurez Cron Tasks Manager si ce n'est pas déjà fait.
  2. Dans Cron Tasks Manager, cliquez sur Ajouter une nouvelle tâche.
  3. Saisissez une description telle que Order Payment Reminders Pro.
  4. Collez votre URL cron dans le champ Script URL.
  5. Définissez la fréquence de la tâche sur une fois par jour (ou une fois par heure).
  6. Enregistrez.

Cette méthode repose sur le trafic des clients pour déclencher le cron. Sur les boutiques à faible trafic, elle peut ne pas s'exécuter à des heures prévisibles. Pour une livraison fiable, préférez l'Option A ou l'Option B.


Paramètres qui influencent le comportement du Cron

Ces paramètres dans Configurer > Configuration globale déterminent ce que fait chaque exécution du cron. Ils ne font pas partie de la configuration de l'URL cron elle-même.

ParamètreOù le trouverEffet lors du cron
Activer l'annulation automatique des commandesOnglet Configuration globaleActive l'annulation automatique des commandes qui dépassent le délai
Annuler la commande après (jours)Onglet Configuration globaleNombre de jours après lequel une commande impayée est annulée ; 0 désactive l'annulation
E-mail récapitulatif administrateurOnglet Configuration globaleActive l'e-mail récapitulatif quotidien envoyé à l'administrateur de la boutique
E-mail récapitulatifOnglet Configuration globaleAdresse destinataire du récapitulatif administrateur ; par défaut l'e-mail de la boutique
Alerte avant annulation (heures)Onglet Configuration globaleLes commandes dans ce délai avant annulation sont incluses dans le récapitulatif ; par défaut 24
Mode TestOnglet Configuration globaleLorsqu'activé, envoie tous les e-mails à l'adresse de test au lieu des vrais clients

Fonctionnement

Lorsque l'URL cron est appelée avec une clé valide, le module exécute les étapes suivantes dans l'ordre :

  1. Valide la clé — Compare le paramètre ?key= avec la valeur wr_cron_key stockée. S'ils ne correspondent pas, la requête est rejetée avec une réponse 403 Forbidden et consignée. Le paramètre legacy ?token= est également vérifié pour la compatibilité ascendante.
  2. Interroge les commandes impayées — Récupère toutes les commandes avec un statut de paiement en attente pour les modules de paiement que vous avez configurés.
  3. Envoie le récapitulatif administrateur (si activé) — Vérifie si un récapitulatif a déjà été envoyé aujourd'hui. Si ce n'est pas le cas, en envoie un et enregistre la date pour qu'il ne soit pas renvoyé avant le lendemain, quelle que soit la fréquence d'exécution du cron.
  4. Traite chaque commande — Pour chaque commande impayée :
    • Si la commande a dépassé le délai d'annulation global, elle est annulée et le stock est restauré (sauf si le Mode Test est activé).
    • Sinon, le module vérifie si la commande est due pour son prochain rappel planifié et, le cas échéant, envoie l'e-mail.

Le module consigne un résumé après chaque exécution. Vous pouvez le trouver dans Paramètres avancés > Journaux filtré par WireTransferReminder.

Sécurité : paramètre key= vs token=

Le module accepte deux noms de paramètres pour l'authentification :

ParamètreStatutQuand l'utiliser
?key=VOTRE_CLEActuel — recommandéToutes les nouvelles entrées cron
?token=TOKEN_LEGACYLegacy — toujours supportéEntrées cron existantes des versions antérieures à 1.2.0

La valeur key= est un token hexadécimal statique de 32 caractères stocké dans la base de données (wr_cron_key). Il est généré une seule fois à l'installation et ne change jamais sauf si vous désinstallez et réinstallez le module.

Le paramètre legacy ?token= utilisait un token d'administration basé sur la session qui pouvait changer à chaque mise à jour de version de PrestaShop ou modification d'utilisateur administrateur. Si vous avez une ancienne entrée cron utilisant ?token=, elle continuera à fonctionner, mais il est recommandé de la mettre à jour pour utiliser ?key= pour une fiabilité à long terme. Pour obtenir une URL basée sur ?key= à tout moment, allez dans Configurer > Cron Jobs dans le Back Office.

Exemples d'utilisation

Exemple : rappels quotidiens pour une boutique avec paiement par virement

Vous vendez des produits où les clients paient par virement bancaire. Configurez un cron pour s'exécuter quotidiennement à 09h00. Votre séquence de rappels est : jour 3, jour 5, jour 7 (avertissement final avec annulation automatique). Le cron se déclenche chaque matin, envoie le bon e-mail à chaque client en fonction du nombre de jours depuis lequel sa commande est en attente, et annule automatiquement toute commande dépassant le jour 7.

Exemple : rappels horaires pour des produits sensibles au temps

Vous configurez un rappel à 24 heures et un autre à 48 heures après la commande. Avec un cron quotidien, un client qui passe une commande à 15h00 pourrait ne recevoir son rappel de 24 heures qu'à 09h00 le lendemain — soit 18 heures de retard. Passer à un cron horaire garantit que le rappel part à 15h00 exactement un jour plus tard, dans l'heure suivant l'heure planifiée.

Exemple : service cron externe sur hébergement mutualisé

Votre offre d'hébergement ne comprend pas de cron cPanel. Créez un compte gratuit sur cron-job.org, ajoutez une nouvelle tâche, collez l'URL cron complète depuis Configurer > Cron Jobs, et définissez la planification sur une fois par jour. Le service externe effectue une requête HTTP GET vers votre boutique à l'heure configurée, déclenchant le module exactement comme le ferait un cron côté serveur.

Remarques importantes

  • Adaptez votre planification de rappels à la fréquence de votre cron. Si votre premier rappel est défini à « 3 jours après la commande », exécuter le cron toutes les heures n'apporte aucun bénéfice par rapport à quotidiennement. Si vous avez des rappels définis en heures, un cron horaire est nécessaire pour les livrer à temps.
  • N'exécutez pas le cron plus d'une fois par heure. Le module est sûr à appeler plusieurs fois — il suit les rappels envoyés et ne les dupliquera pas — mais il n'y a aucun bénéfice à l'exécuter plus fréquemment.
  • Supprimez la sortie e-mail du cron. La plupart des démons cron envoient la sortie standard à la boîte mail système. Utilisez -o /dev/null dans les commandes curl (déjà inclus dans les exemples) pour éviter les e-mails indésirables.
  • Testez d'abord l'URL manuellement. Avant de configurer le cron, collez l'URL complète dans votre navigateur en étant déconnecté. Une configuration fonctionnelle renvoie une page blanche ou un texte minimal. Une réponse 403 Forbidden signifie que la clé est incorrecte.
  • La clé cron est globale. Elle est stockée en tant que valeur de configuration globale et s'applique à toutes les boutiques dans une configuration multi-boutique. Un seul appel cron traite les commandes de toutes les boutiques.
  • La forme URL conviviale nécessite que les URLs conviviales soient activées. Si vous désactivez les URLs conviviales après avoir configuré un cron avec la forme conviviale, l'URL cessera de fonctionner. Revenez dans Configurer > Cron Jobs et copiez l'URL mise à jour.

Dépannage

ProblèmeSolution
Les rappels ne sont pas envoyésVérifiez que la tâche cron s'exécute réellement en consultant les journaux cron du serveur ou en ajoutant une journalisation de la sortie. Confirmez également que l'URL fonctionne lorsqu'elle est ouverte manuellement dans un navigateur.
Le cron renvoie 403 ForbiddenLa clé dans votre URL cron ne correspond pas à la clé stockée. Allez dans Configurer > Cron Jobs dans le Back Office, copiez à nouveau l'URL, et mettez à jour votre entrée cron.
Les rappels sont envoyés au mauvais momentVérifiez que le fuseau horaire de votre serveur correspond à vos attentes. Exécutez date via SSH pour le confirmer. Ajustez l'heure du cron en conséquence (par exemple, si le serveur est en UTC et que vous souhaitez 09h00 à UTC+2, définissez l'heure cron à 7).
Les commandes ne sont pas annuléesConfirmez que Activer l'annulation automatique des commandes est activé et que Annuler la commande après est défini à une valeur supérieure à 0 dans la Configuration globale. Confirmez également que le Mode Test est désactivé.
Le récapitulatif administrateur n'arrive pasConfirmez que E-mail récapitulatif administrateur est activé dans la Configuration globale. Vérifiez que Alerte avant annulation (heures) est défini de manière appropriée — si aucune commande ne se trouve dans cette fenêtre, aucun récapitulatif n'est envoyé. Vérifiez également votre dossier spam.
Le cron s'exécute mais n'envoie aucun e-mailVérifiez que vous avez au moins un message de rappel actif configuré dans l'onglet Reminder Messages et que les commandes sont en attente depuis suffisamment longtemps pour correspondre à votre planification.
curl: command not found dans les journaux cronUtilisez le chemin complet vers curl. Exécutez which curl via SSH pour le trouver, puis mettez à jour la commande cron pour utiliser le chemin absolu (par exemple, /usr/bin/curl).
L'URL cron conviviale renvoie 404Les URLs conviviales de votre boutique sont peut-être désactivées. Allez dans Configurer > Cron Jobs et copiez l'URL telle qu'elle est affichée — le module indiquera la forme correcte pour le paramètre actuel de votre boutique.

Foire aux questions

Comment savoir si le cron s'exécute réellement ?

La vérification la plus simple est d'ouvrir l'URL cron directement dans votre navigateur en étant déconnecté. Vous devriez voir soit une page blanche, soit un court message de statut — jamais une page d'erreur. Après une vraie exécution du cron, vous pouvez également consulter Paramètres avancés > Journaux dans votre Back Office pour les entrées de WireTransferReminder.

Appeler l'URL cron plusieurs fois le même jour enverra-t-il des e-mails de rappel en double ?

Non. Le module enregistre quel rappel a été envoyé pour chaque commande. Un second appel le même jour trouvera ces commandes déjà traitées et les ignorera. Le récapitulatif administrateur est en outre limité à une fois par jour calendaire.

Que se passe-t-il si le cron cesse de s'exécuter pendant plusieurs jours ?

Lors de la prochaine exécution réussie du cron, le module traite toutes les commandes normalement. Les commandes ayant dépassé le délai d'annulation seront annulées (si cette fonctionnalité est activée). Les commandes dues pour un rappel recevront leur prochain rappel planifié, mais les rappels intermédiaires échus pendant la période d'interruption sont ignorés — le module envoie le rappel le plus approprié pour l'état actuel de chaque commande.

Mon hébergement ne permet pas les cron côté serveur. Quelles sont mes options ?

Vous pouvez utiliser un service cron externe tel que cron-job.org ou EasyCron pour appeler l'URL selon un planning. Ces services effectuent une requête HTTP GET vers votre URL cron à l'intervalle que vous spécifiez. Collez l'URL complète depuis Configurer > Cron Jobs dans le champ URL du service et définissez la fréquence souhaitée.

Puis-je utiliser le paramètre legacy ?token= si je l'ai déjà configuré ?

Oui. Le paramètre legacy continue de fonctionner pour la compatibilité ascendante. Cependant, la valeur ?token= peut changer après une mise à jour de PrestaShop ou une modification des permissions utilisateur. Pour une fiabilité à long terme, mettez à jour votre entrée cron pour utiliser ?key= à la place, que vous pouvez copier depuis Configurer > Cron Jobs.

Est-il sûr de mettre l'URL cron dans un outil de surveillance ou de vérification de disponibilité ?

Oui, à condition que l'outil effectue uniquement des requêtes GET. L'endpoint cron traitera les commandes en attente à chaque appel, mais avec un planning approprié, il n'y aura rien de supplémentaire à traiter entre vos exécutions planifiées. La clé dans l'URL est secrète — ne la partagez pas dans des tableaux de bord publics ou des pages de statut de surveillance visibles par d'autres.

Le cron fonctionne-t-il dans une configuration multi-boutique ?

Oui. Un seul appel cron traite les commandes de toutes les boutiques. Le module filtre les commandes par boutique en utilisant la restriction de boutique intégrée de PrestaShop, de sorte que les commandes de chaque boutique sont traitées selon la configuration de cette boutique.

Quelle forme d'URL dois-je utiliser — l'URL conviviale ou la forme standard ?

Copiez toujours l'URL exactement telle qu'elle est affichée dans Configurer > Cron Jobs. Le module affiche la forme correcte pour le paramètre d'URL conviviale actuel de votre boutique. Si vous modifiez ultérieurement votre paramètre d'URL conviviale, revenez à l'onglet Cron Jobs et copiez l'URL mise à jour.

Fonctionnalités associées