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.
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.
- Allez dans Modules > Gestionnaire de modules, trouvez Order Payment Reminders Pro, et cliquez sur Configurer.
- Cliquez sur l'onglet Cron Jobs dans la navigation du module.
- 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
- Connectez-vous à votre cPanel et ouvrez Cron Jobs.
- 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 :
*
- Minute :
- 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.
- 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)
- Connectez-vous à votre serveur via SSH.
- Ouvrez l'éditeur crontab :
crontab -e
- 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"
- 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,
curlpeut 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écutezwhich curldans 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.
- Installez et configurez Cron Tasks Manager si ce n'est pas déjà fait.
- Dans Cron Tasks Manager, cliquez sur Ajouter une nouvelle tâche.
- Saisissez une description telle que
Order Payment Reminders Pro. - Collez votre URL cron dans le champ Script URL.
- Définissez la fréquence de la tâche sur une fois par jour (ou une fois par heure).
- 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ètre | Où le trouver | Effet lors du cron |
|---|---|---|
| Activer l'annulation automatique des commandes | Onglet Configuration globale | Active l'annulation automatique des commandes qui dépassent le délai |
| Annuler la commande après (jours) | Onglet Configuration globale | Nombre de jours après lequel une commande impayée est annulée ; 0 désactive l'annulation |
| E-mail récapitulatif administrateur | Onglet Configuration globale | Active l'e-mail récapitulatif quotidien envoyé à l'administrateur de la boutique |
| E-mail récapitulatif | Onglet Configuration globale | Adresse destinataire du récapitulatif administrateur ; par défaut l'e-mail de la boutique |
| Alerte avant annulation (heures) | Onglet Configuration globale | Les commandes dans ce délai avant annulation sont incluses dans le récapitulatif ; par défaut 24 |
| Mode Test | Onglet Configuration globale | Lorsqu'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 :
- Valide la clé — Compare le paramètre
?key=avec la valeurwr_cron_keystocké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. - 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.
- 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.
- 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ètre | Statut | Quand l'utiliser |
|---|---|---|
?key=VOTRE_CLE | Actuel — recommandé | Toutes les nouvelles entrées cron |
?token=TOKEN_LEGACY | Legacy — 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/nulldans 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ème | Solution |
|---|---|
| Les rappels ne sont pas envoyés | Vé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 Forbidden | La 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 moment | Vé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ées | Confirmez 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 pas | Confirmez 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-mail | Vé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 cron | Utilisez 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 404 | Les 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
- Configuration globale — Activer l'annulation automatique, configurer le récapitulatif administrateur, définir le mode test
- Messages de rappel — Créer et planifier les e-mails de rappel individuels que le cron envoie
- Assistant de configuration et tableau de bord — La liste de contrôle de configuration en quatre étapes, incluant l'étape cron