Un sélecteur de date de livraison affiche des dates. La validation les impose. Sur Shopify, la validation est une Function de validation du panier et du paiement : une vérification exécutée sur les serveurs de Shopify avant le paiement, qui arrête la commande si la date est absente, fermée ou complète. Elle fonctionne sur tous les forfaits Shopify et sur toutes les voies d'accès au paiement, y compris Shop Pay, Apple Pay et Buy it now. Seul un sélecteur affiché dans la page de paiement nécessite Plus.
Pourquoi un sélecteur seul laisse passer de mauvaises dates
Un sélecteur sur la page produit ou panier n'est qu'un affichage. Il grise les dates fermées et complètes dans le navigateur du client, et c'est tout. Des commandes passent quand même sans date valide lorsque :
- Le client utilise un bouton express. Buy it now, Shop Pay, Apple Pay et Google Pay sur la page produit mènent directement au paiement : le sélecteur du panier ne s'exécute jamais. Voir Buy It Now saute la date de livraison.
- La date s'est remplie pendant le paiement. Le sélecteur affichait « 1 restant » au chargement de la page. Quelqu'un d'autre l'a prise.
- Le panier date d'hier. Le client a choisi une date, est revenu après l'heure limite et a payé.
- Le tiroir du panier n'affiche pas le sélecteur, ou le thème a changé et le bloc du sélecteur a disparu.
- Quelqu'un modifie la date de livraison du panier à la main ou avec un script.
L'option gratuite de Shopify, un sélecteur de date ajouté à la page panier avec du code de thème, a la même faille : il collecte une date, mais rien ne la vérifie au paiement.
Les contrôles que la validation de la date de livraison devrait effectuer
Voici les contrôles qu'OrderRules effectue au paiement, avec le message que le client voit par défaut :
| Contrôle | Ce qu'il détecte | Message par défaut |
|---|---|---|
| Date obligatoire | Aucune date, souvent avec Buy it now ou Shop Pay | Veuillez choisir une date de livraison avant de procéder au paiement. |
| Date autorisée | Dates passées, dans le délai de préparation ou après l'heure limite, un jour où vous ne livrez pas, au-delà de votre horizon de réservation | Cette date de livraison n'est plus disponible. Veuillez en choisir une autre. |
| Date fermée | Une date bloquée, comme un jour férié | Nous ne livrons pas à la date sélectionnée. Veuillez en choisir une autre. |
| Jour complet | La date a atteint votre nombre maximum de commandes par date de livraison | La livraison le {date} est complète. Veuillez choisir une autre date. |
| Créneau horaire | Aucun créneau choisi, ou créneau complet | Veuillez choisir un créneau de livraison. / Ce créneau de livraison est complet. Veuillez en choisir un autre. |
| Limite de produit par date | Plus d'unités d'un produit qu'il n'en reste pour cette date | Only {n} left for delivery on {date}. Please reduce the quantity or choose another date. |
| Mode | Articles en retrait seul et en livraison seule mélangés, ou mauvais mode | Certains articles de votre panier nécessitent des modes de traitement différents et ne peuvent pas être achetés ensemble. |
| Retrait | Pas de date, de point ni d'heure de retrait ; jour ou créneau de retrait fermé ou complet | Veuillez choisir une date de retrait avant de procéder au paiement. (et cinq autres) |
Si le contrôle d'une application au paiement ne couvre que la première ligne, elle arrête les commandes sans date, mais pas les commandes en surréservation.
Trois façons d'activer la validation sur Shopify
1. Créer votre propre Function de validation. Un développeur écrit une Function de validation du panier et du paiement qui lit la date de livraison du panier et renvoie une erreur si elle n'est pas autorisée. Elle fonctionne sur tous les forfaits. Une Function ne peut pas interroger une base de données pendant son exécution : vos dates autorisées et vos compteurs de réservations doivent donc être écrits dans un metafield à l'avance et tenus à jour. C'est l'essentiel du travail. L'article les Functions de validation Shopify expliquées détaille le fonctionnement.
2. Utiliser une application de sélecteur de date avec validation au paiement. Posez-vous cinq questions avant de l'installer :
- Utilise-t-elle une Function de validation du panier et du paiement, ou seulement du JavaScript de thème ?
- Arrête-t-elle les commandes Buy it now, Shop Pay et Apple Pay sans date ?
- Sur quels forfaits Shopify la vérification s'exécute-t-elle ?
- Revérifie-t-elle les dates et créneaux complets au paiement, ou se contente-t-elle de les masquer dans le sélecteur ?
- Pouvez-vous modifier les messages, dans chaque langue où vous vendez ?
Notre comparatif des applications de sélecteur de date de livraison indique lesquelles appliquent la règle au paiement et lesquelles se contentent d'afficher.
3. Sur Shopify Plus, placer le sélecteur dans le paiement. Une extension d'interface de paiement affiche le calendrier dans la page de paiement, que voient donc aussi les acheteurs express. Ce n'est toujours qu'un affichage : associez-le à une Function de validation, sinon une date peut être ignorée ou périmée.
Configurer la validation dans OrderRules
- Avec le forfait Advanced, ouvrez votre règle de disponibilité et activez Exiger une date de livraison au paiement (et Exiger un créneau horaire si vous utilisez des créneaux).
- Dans Shopify, ouvrez Paramètres → Paiement, faites défiler jusqu'à Règles de paiement et vérifiez que la règle OrderRules est activée.
- Définissez ce que la validation vérifie : Nombre maximum de commandes par date de livraison, Limite/jour sur chaque créneau horaire, limites de produit comptées par Date de livraison, et dates bloquées.
- Dans Messages de paiement, modifiez n'importe quel message ou appliquez un pack de langue.
- Testez sans date, avec une date fermée et avec une date complète, via le panier, Buy it now et Shop Pay. Une boutique de développement est l'endroit le plus sûr pour commencer.
Ce que la validation ne peut pas attraper
- Deux paiements dans la même seconde pour la dernière place peuvent passer tous les deux. La validation lit ce qui est réservé ; elle ne pose pas de verrou.
- Juste après une heure limite, une date peut passer le paiement pendant un court moment, le temps que l'application actualise sa liste de dates autorisées. Le sélecteur de la page, lui, retire la date immédiatement.
- Les commandes qui contournent le paiement ne sont pas vérifiées : Shopify POS, renouvellements d'abonnement, commandes créées dans l'admin et marquées comme payées, et commandes d'autres applications ou de l'Admin API. Elles comptent quand même dans vos limites.
- Les modifications après achat. Changer la date d'une commande dans l'admin Shopify n'est pas vérifié et ne déplace pas sa place.
- Les codes postaux et les zones. OrderRules ne vérifie pas l'adresse. Pour ne plus livrer une zone, excluez-la de vos zones d'expédition Shopify.
Plus de détails dans compatibilité et limites connues.