Guide complet des fonctions Shopify : personnaliser la logique métier à grande échelle

Maîtrisez les fonctions Shopify pour les remises personnalisées, le filtrage des modes de paiement, la manipulation des tarifs d'expédition et la validation du panier avec ce guide de développement complet.

E
ECOSIRE Research and Development Team
|16 mars 202610 min de lecture2.1k Mots|

Guide complet des fonctions Shopify : personnaliser la logique métier à grande échelle

Les fonctions Shopify permettent aux développeurs de personnaliser la logique commerciale de base qui s'exécute au sein de l'infrastructure de Shopify plutôt que sur des serveurs externes. Cela signifie que les calculs de remise personnalisés, le filtrage des modes de paiement, les modifications des tarifs d'expédition et la validation du panier s'exécutent en quelques millisecondes sans latence du réseau. Les fonctions ont remplacé l'éditeur de script (Shopify Scripts) et représentent l'avenir de la personnalisation du backend sur la plateforme. Ce guide couvre chaque type de fonction, flux de développement et modèle de déploiement.

Points clés à retenir

  • Les fonctions Shopify s'exécutent dans un bac à sable WebAssembly au sein de l'infrastructure de Shopify, garantissant des temps d'exécution inférieurs à 5 ms.
  • Cinq API de fonctions sont disponibles : remises, personnalisation du paiement, personnalisation de la livraison, validation du panier et routage des commandes
  • Les fonctions sont écrites en Rust, JavaScript ou tout autre langage compilé en WebAssembly
  • Chaque fonction reçoit une entrée via les résultats de la requête GraphQL et renvoie une sortie structurée que Shopify applique à l'opération
  • Les fonctions sont déployées dans le cadre des applications Shopify et peuvent être configurées par les commerçants via l'administrateur

Que sont les fonctions Shopify ?

Les fonctions Shopify sont des programmes légers qui personnalisent des opérations commerciales spécifiques à des points d'extension prédéfinis. Contrairement aux webhooks (qui envoient des données à des serveurs externes), les fonctions s'exécutent dans l'infrastructure de Shopify en tant que modules WebAssembly, garantissant :

  • Vitesse : exécution inférieure à 5 ms (pas de latence réseau)
  • Fiabilité : aucune dépendance de serveur externe
  • Échelle : gère n'importe quel volume de trafic sans planification de capacité
  • Sécurité : exécution en bac à sable sans système de fichiers ni accès au réseau

API de fonction

APIObjectifRemplace
RéductionsLogique de remise personnalisée (BOGO, hiérarchisée, conditionnelle)Scripts Shopify (remises sur les articles de campagne)
Personnalisation du paiementAfficher/masquer/réorganiser les modes de paiement à la caisseLogique conditionnelle du mode de paiement
Personnalisation de la livraisonModifier les tarifs d'expédition, les noms et la disponibilitéScripts de tarifs d'expédition
Validation du panierValider le contenu du panier et bloquer les combinaisons invalidesValidation des attributs du panier
Acheminement des commandesPersonnaliser la sélection du lieu de traitementRoutage de localisation par défaut

Environnement de développement

Prérequis

  • Shopify CLI (dernière version)
  • Node.js 18+
  • Un compte partenaire Shopify et une boutique de développement
  • Chaîne d'outils Rust (pour les fonctions basées sur Rust) ou runtime JavaScript

Création d'une fonction

Élaborez une nouvelle fonction à l'aide de la CLI Shopify :

Exécutez npx shopify app generate extension et sélectionnez le type de fonction. La CLI génère :

FichierObjectif
src/run.js (ou run.rs)La logique des fonctions
input.graphqlRequête GraphQL définissant les données d'entrée
shopify.extension.tomlConfiguration et métadonnées
schema.graphqlLe schéma de l'API Shopify (généré automatiquement)

Flux de travail de développement

  1. Définir la requête d'entrée : écrivez la requête GraphQL dans input.graphql qui récupère les données dont votre fonction a besoin
  2. Implémenter la logique : Écrivez la fonction dans src/run.js qui transforme l'entrée en sortie
  3. Tester localement : exécutez des tests unitaires avec npx shopify app function test
  4. Déployer : poussez vers Shopify avec npx shopify app deploy
  5. Configurer : les commerçants configurent les paramètres de fonction via l'interface utilisateur de l'application.

Fonctions de remise

Comment fonctionnent les fonctions de remise

Une fonction de remise reçoit les données du panier (éléments de campagne, informations client, codes de réduction) et renvoie les opérations de remise à appliquer. La fonction s'exécute chaque fois que le panier est évalué --- lors du chargement de la page, de l'ajout/suppression d'un article et de l'entrée à la caisse.

Modèles de remise courants

Achetez X, obtenez Y : lorsque le panier contient le produit X, appliquez un pourcentage ou une remise fixe au produit Y.

Remises échelonnées : appliquez des remises croissantes en fonction du total du panier (10 % sur 100 USD, 15 % sur 200 USD, 20 % sur 500 USD).

Tarifs spécifiques au client : vérifiez les balises client ou les champs méta et appliquez des remises spécifiques au segment (gros, VIP, employé).

Remises groupées : lorsque des combinaisons de produits spécifiques sont dans le panier, appliquez une remise groupée (achetez les trois, économisez 25 %).

Remises sur volume : appliquez des remises par unité en fonction de la quantité (1 à 9 unités au prix plein, 10 à 24 à 10 % de réduction, 25+ à 20 % de réduction).

Exemple de requête d'entrée

La requête d'entrée de la fonction de remise demande généralement :

- Éléments de campagne du panier avec identifiants de produit, identifiants de variante, quantités et prix

  • Informations client (ID, tags, métachamps) si vous utilisez la segmentation client
  • Code de réduction si validation d'une remise par code
  • Champs méta de produit pour les règles de remise spécifiques au produit

Structure de sortie

La fonction renvoie un tableau d'opérations de remise :

OpérationDescriptif
productDiscountAppliquer une remise à des produits/variantes spécifiques
orderDiscountAppliquer la réduction sur le total de la commande
freeShippingSupprimer les frais d'expédition

Chaque opération comprend la valeur de la remise (en pourcentage ou montant fixe), un message affiché au client et les conditions dans lesquelles elle s'applique.

Fonctions de personnalisation des paiements

Cas d'utilisation

  • Masquer les modes de paiement : masquer le « paiement à la livraison » pour les commandes supérieures à un seuil
  • Méthodes de réapprovisionnement : affichez d'abord le mode de paiement le plus populaire en fonction de l'emplacement du client.
  • Renommer les méthodes : afficher les noms des méthodes de paiement localisés
  • Ajouter un message : afficher des informations supplémentaires à côté de modes de paiement spécifiques

Modèle de mise en œuvre

La fonction reçoit les détails du panier et les modes de paiement disponibles. Il renvoie les opérations qui modifient la liste des moyens de paiement :

OpérationEffet
hideSupprimer un mode de paiement de la caisse
renameChanger le nom d'affichage d'un mode de paiement
moveRéorganiser les modes de paiement

Fonctions de personnalisation de la livraison

Cas d'utilisation

  • Renommer les options d'expédition : afficher "Livraison express (2-3 jours)" au lieu des noms des tarifs des transporteurs
  • Masquer les options : supprimer l'expédition terrestre pour les produits périssables
  • Options de réapprovisionnement : affichez d'abord l'option la plus rapide pour les commandes urgentes
  • Ajouter un message : Afficher les dates de livraison estimées à côté de chaque option

Implémentation

La fonction reçoit les tarifs d'expédition des transporteurs configurés et renvoie les modifications. L'entrée inclut les éléments de campagne du panier (pour vérifier les types de produits), l'adresse de livraison (pour les règles basées sur la localisation) et les options de livraison disponibles.

Fonctions de validation du panier

Cas d'utilisation

  • Limites de quantité : Maximum 5 unités de produits en édition limitée
  • Restrictions de combinaison : Le produit A et le produit B ne peuvent pas être dans le même panier (incompatible)
  • Exigences minimales : les comptes de gros doivent commander au minimum 100 USD
  • Restrictions géographiques : empêchez l'expédition de certains produits vers des régions restreintes

Résultat de validation

Lorsque la validation échoue, la fonction renvoie une erreur avec :

  • Cible : quelle ligne de panier ou le panier lui-même - Message : message d'erreur destiné au client
  • Gravité : Erreur (bloque le paiement) ou avertissement (autorise mais avertit)

Fonctions de test

Tests unitaires

Testez les fonctions localement sans déployer :

  1. Créez des montages de test avec des exemples de données d'entrée
  2. Exécutez la fonction sur les appareils
  3. Affirmer que le résultat correspond aux résultats attendus

La CLI Shopify génère un passe-partout de test :

Scénario de testQue vérifier
Chariot videLa fonction ne renvoie aucune opération
Panier de qualificationCorrection/modification appliquée
Cas extrêmesValeurs limites, quantités maximales
Gestion des erreursEntrée invalide gérée avec élégance
PerformancesL'exécution se termine en moins de 5 ms

Mode Aperçu

Testez les fonctions dans une boutique de développement avant de publier :

  1. Déployez la fonction sur votre boutique de développement
  2. Configurez-le via l'administrateur de l'application
  3. Ajoutez des produits au panier et vérifiez le comportement
  4. Vérifiez les journaux d'exécution de la fonction dans la sortie de Shopify CLI

Considérations sur les performances

Limites d'exécution

LimiteValeur
Temps d'exécution5 ms maximum
Mémoire12 Mo
Taille d'entrée64 Ko
Taille de sortie64 Ko
Instructions1 million d'instructions Wasm

Conseils d'optimisation

  • Réduisez la requête d'entrée aux seuls champs dont votre logique a besoin
  • Évitez les boucles imbriquées complexes --- utilisez des cartes de hachage pour les recherches
  • Pré-calculer les valeurs dans la configuration de l'application plutôt que dans la fonction
  • Utilisez Rust pour les fonctions critiques en termes de performances (2 à 3 fois plus rapide que JavaScript)
  • Exécution de la fonction de profil à l'aide des outils de performance Shopify CLI

Configuration du marchand

Interface utilisateur de configuration de l'application

Les fonctions sont configurées via l'interface utilisateur de votre application, et non directement dans l'administrateur Shopify. Créez une page de configuration qui :

  1. Affiche l'objectif de la fonction et les paramètres actuels
  2. Permet aux commerçants de définir des paramètres (seuils, sélections de produits, pourcentages)
  3. Stores configuration as metafields that the function reads at runtime
  4. Valide les entrées avant de sauvegarder

Stockage des configurations

Stocker la configuration des fonctions à l'aide des champs méta de l'application :

  • Métachamps sur la remise : montants seuils, valeurs en pourcentage, identifiants de produits
  • Stockage de données d'application : configuration complexe comme des règles à plusieurs niveaux, des segments de clientèle
  • Configuration de la fonction : transmis dans le cadre de l'entrée de la fonction via la requête d'entrée

Services de développement de fonctions ECOSIRE

Les fonctions Shopify personnalisées nécessitent à la fois une expertise dans le domaine du commerce et des compétences en développement WebAssembly. Les services de développement d'applications Shopify d'ECOSIRE comprennent la conception, la mise en œuvre, les tests et le déploiement de fonctions. Notre équipe crée des moteurs de remise, des personnalisations de paiement et une logique de validation adaptés à vos règles métier. Pour les besoins continus, nos services d'assistance maintiennent et font évoluer vos fonctions personnalisées à mesure que la plateforme Shopify progresse.

Lecture connexe

Les fonctions Shopify remplacent-elles les scripts Shopify ?

Oui. Les scripts Shopify sont obsolètes et les fonctions les remplacent. Les principales différences : les fonctions s'exécutent en tant que WebAssembly (pas Ruby), se déploient via des applications (pas l'éditeur de script) et prennent en charge davantage de points d'extension. Les scripts existants continuent de fonctionner mais Shopify recommande de migrer vers Functions.

Les non-développeurs peuvent-ils créer des fonctions Shopify ?

Pas directement. Les fonctions nécessitent des connaissances en programmation (JavaScript ou Rust). Cependant, les développeurs peuvent créer des applications avec des interfaces utilisateur de configuration qui permettent aux commerçants de personnaliser le comportement des fonctions sans codage. De nombreuses applications de l'App Store de Shopify utilisent Functions en interne tout en présentant une interface conviviale pour les commerçants.

Y a-t-il une limite au nombre de fonctions pouvant être exécutées sur un seul magasin ?

Shopify n'impose pas de limite stricte sur le nombre de fonctions installées. Cependant, chaque évaluation de paiement exécute toutes les fonctions applicables de manière séquentielle, de sorte que des considérations de performances s'appliquent. La limite de 5 ms par fonction garantit que les fonctions individuelles ne peuvent pas ralentir le paiement, mais le fait d'avoir des dizaines de fonctions pourrait théoriquement avoir un impact sur le temps total d'évaluation du paiement.

E

Rédigé par

ECOSIRE Research and Development Team

Création de produits numériques de niveau entreprise chez ECOSIRE. Partage d'analyses sur les intégrations Odoo, l'automatisation e-commerce et les solutions d'entreprise propulsées par l'IA.

Discutez sur WhatsApp