Référence de l’API des scripts Shopify

Les scripts sont écrits avec une API Ruby qui vous offre beaucoup de contrôle et de flexibilité.

Il existe différents types de script. Un type est attribué à un script lorsque vous le créez dans l’appli Script Editor, en fonction du modèle de script que vous choisissez au départ :

Scripts d’article du panier

Les scripts d’article du panier affectent les articles du panier et peuvent modifier les prix et octroyer des réductions. Ces scripts s’exécutent lorsqu’une modification est apportée au panier.

Les scripts d’article du panier qui appliquent une réduction à un abonnement s’appliquent uniquement au premier paiement de l’abonnement. Les paiements suivants ne bénéficient pas de la réduction du script.

Certaines méthodes ne peuvent être utilisées que dans les scripts d’article du panier.

Scripts d’expédition

Les scripts d’expédition interagissent avec l’expédition, et peuvent modifier les modes d’expédition et octroyer des réductions sur les tarifs d’expédition. Ces scripts s’exécutent lorsque le processus de paiement atteint la page des options d’expédition.

Les scripts d’expédition qui appliquent une réduction sur les frais d’expédition d’un abonnement s’appliquent uniquement au premier paiement de l’abonnement. Les paiements suivants ne bénéficient pas de la réduction du script.

<p>Some methods <a href="#shipping-methods">can only be used in shipping scripts</a>.</p>

Scripts de paiement

Les scripts de paiement interagissent avec les paiements, et peuvent renommer, masquer et réorganiser les passerelles de paiement. Notez que les scripts de paiement n’interagissent pas avec les passerelles de paiement affichées avant la page de paiement, comme Apple Pay. Ces scripts s’exécutent lorsque le processus de paiement atteint la page de paiement.

Certaines méthodes ne peuvent être utilisées que dans les scripts de paiement.

Méthodes générales

Les méthodes suivantes sont utilisables dans n’importe quel type de script :

Entrée

Méthodes d’entrée de script
MéthodeType de retourDescription
.cartPanierRenvoie un objet panier modifiable.
.localechaîneRenvoie les paramètres régionaux du client. Par exemple, en, fr ou pt-BR.

Panier

L’objet panier est uniquement disponible sur la boutique en ligne. Certains paiements abandonnés ont accès à l’objet panier. Toutefois, si un paiement a été fermé et qu’un client se rend ensuite sur le paiement abandonné, il est dirigé vers le paiement pré-rempli et l’objet panier n’existe plus. En effet, la boutique en ligne a été contournée par l’e-mail de relance de paiement abandonné.

Méthodes de script utilisant l’objet Panier
MéthodeType de retourDescription
.customerClientRenvoie le propriétaire du panier (le cas échéant).
.shipping_addressAdresse de livraisonRenvoie l’adresse de livraison du propriétaire du panier (le cas échéant).
.discount_codevariable Renvoie :

discount_code est présent si une réduction a été appliquée au panier. Cela ne signifie pas nécessairement que le prix du panier change. Par exemple, si une réduction s’applique aux paniers de plus de 50 $ et qu’un script réduit le prix du panier en dessous de 50 $, discount_code est toujours présent, mais le prix du panier ne change pas.

<p><a href="/manual/checkout-settings/script-editor/examples/vat-script">See an example of <code>discount_code</code></a>.</p>
  </td>
</tr>
<tr>
  <td scope="row">.line_items</td>
  <td><a href="#list">List</a>&lt;LineItem&gt;</td>
  <td>Returns a list containing the line items in the cart.</td>
</tr>
<tr>
  <td scope="row">.presentment_currency</td>
  <td><a href="#list">List</a>&lt;String&gt;</td>
  <td>Returns the customer's local (presentment) currency (in <a href="https://www.iso.org/iso-4217-currency-codes.html">ISO 4217</a> format). For example, USD. </td>
</tr>
<tr>
  <td scope="row">.subtotal_price</td>
  <td><a href="#money">Money</a></td>
  <td>Returns the subtotal price of the cart after line item discounts are applied but before discount codes are applied.</td>
</tr>
<tr>
  <td scope="row">.total_weight</td>
  <td><a href="https://shopify.dev/api/liquid/objects/line_item#line_item-grams">grams</a></td>
  <td>Returns the total weight of all the line items in the cart.</td>
</tr>

CartDiscount::FixedAmount

Méthodes de script utilisant l’objet CartDiscount::FixedAmount
MéthodeType de retourDescription
.codeChaîneRenvoie le code de réduction utilisé pour appliquer la réduction.
.amountMontantRenvoie le montant de la réduction.
.reject({ message: Chaîne })nilRejette le code de réduction appliqué au panier. Un message est obligatoire.
.rejected?BooléenRenvoie si le code de réduction a été rejeté.

CartDiscount::Percentage

Méthodes de script utilisant l’objet CartDiscount::Percentage
MéthodeType de retourDescription
.codeChaîneRenvoie le code de réduction utilisé pour appliquer la réduction.
.percentageDécimalRetourne le pourcentage de la réduction.
.reject({ message: Chaîne })nilRejette le code de réduction appliqué au panier. Un message est obligatoire.
.rejected?BooléenRenvoie si le code de réduction a été rejeté.

CartDiscount::Shipping

Méthodes de script utilisant l’objet CartDiscount::Shipping
MéthodeType de retourDescription
.codeChaîneRenvoie le code de réduction utilisé pour appliquer la réduction.
.reject({ message: Chaîne })nilRejette le code de réduction appliqué au panier. Un message est obligatoire.
.rejected?BooléenRenvoie si le code de réduction a été rejeté.

Customer

Méthodes de script utilisant l’objet Customer
MéthodeType de retourDescription
.idEntierRetourne l’ID du client.
.emailChaîneRetourne l’adresse e-mail du client.
.tagsList<Tag>Retourne une liste de chaînes représentant les balises définies pour un client.
.orders_countEntierRetourne le nombre total de commandes qu’un client a passées.
.total_spentMontantRetourne le montant total que le client a dépensé pour toutes les commandes.
.accepts_marketing?BooléenIndique si le client accepte le marketing.

LineItem

Méthodes de script utilisant l’objet LineItem
MéthodeType de retourDescription
.gramsgrammesRetourne le poids total de l’article du panier.
.line_priceMontantLe prix de l’article du panier.
.discounted?BooléenIndique si le prix d’un article du panier a bénéficié d’une réduction appliquée par un script ou manuellement. L’utilisation de codes de réduction n’a aucune incidence sur la valeur de retour.
.propertieshashRetourne les propriétés qui ont été spécifiées pour cet article du panier.
.variantVariantRetourne la variante de produit spécifique représentée par l’article du panier.
.quantityEntierRetourne la quantité de cet article du panier.
.selling_plan_idEntierRetourne l’ID du forfait de vente pour l’article du panier. Cette méthode est utile lorsque la boutique vend des abonnements et que vous souhaitez que le script détecte lorsqu’une variante de produit est vendue sous forme d’abonnement.

List

Méthodes de script utilisant l’objet List
MéthodeType de retourDescription
.newListCrée un nouvel objet pour représenter une liste.
.[]Élément ou nil

Retourne l’élément à l’index spécifié.

.&List

Retourne une nouvelle liste contenant les éléments communs aux deux listes, sans doublons.

.delete_ifListSupprime des éléments à l’aide d’un bloc de code facultatif. Consultez la documentation relative à la méthode delete_if de Ruby.
.empty?Booléen

Retourne true si la liste ne contient aucun élément.

.firstÉlément ou nil

Retourne le premier élément ou nil si la liste est vide.

.index(*args, &block)int ou nil

Retourne l’index du premier élément de la liste. Si un bloc est fourni à la place d’un argument, la méthode retourne l’index du premier élément pour lequel le bloc est vrai.

.rindex(*args, &block)int ou nil

Retourne l’index du dernier élément de la liste. Si un bloc est fourni à la place d’un argument, la méthode retourne l’index du premier élément pour lequel le bloc est vrai.

.lastÉlément ou nil

Retourne le dernier élément ou nil si la liste est vide.

.lengthint

Retourne le nombre d’éléments dans la liste.

.sizeint

Alias de length.

.each(*args, &block)List

Appelle un bloc une fois pour chaque élément de la liste, en transmettant l’élément en tant que paramètre au bloc.

ShippingAddress

Méthodes de script utilisant l’objet ShippingAddress
MéthodeType de retourDescription
.namechaîneRetourne le nom de la personne associée à l’adresse de livraison.
.address1chaîneRetourne la partie de l’adresse de livraison correspondant à la rue.
.address2chaîneRetourne le complément d’adresse facultatif de l’adresse de livraison.
.phonechaîneRetourne le numéro de téléphone de l’adresse de livraison.
.citychaîneRetourne la ville de l’adresse de livraison.
.zipchaîneRetourne le code postal de l’adresse de livraison.
.provincechaîneRetourne la province ou l’État de l’adresse de livraison.
.province_codechaîneRetourne la valeur abrégée de la province ou de l’État de l’adresse de livraison.
.country_codechaîneRetourne la valeur abrégée du pays de l’adresse de livraison.

Money

Méthodes de script utilisant l’objet Money
MéthodeType de retourDescription
.derived_from_presentment(customer_cents:X)MontantConvertit un montant (en centimes) de la devise locale du client (devise de présentation) à la devise de votre boutique. Cette méthode accepte le paramètre customer_cents, qui accepte un nombre en centimes. Par exemple, Money.derived_from_presentment(customer_cents: 500).
.newMontantCrée un nouvel objet pour représenter un prix.
.zeroMontant

Crée un nouvel objet avec un prix de zéro.

+MontantAdditionne deux objets Money.
-MontantSoustrait un objet Money d’un autre.
*MontantMultiplie un objet Money par un nombre.

Exemples de Money

Money.new(cents: 1000)

Crée un objet Money représentant 1 000 centimes, ou 10 $.

Money.new(cents: 100) * 50

Crée un objet Money représentant 1 $, puis multiplie ce montant par 50. Renvoie un objet Money représentant 50 $.

Variante

Méthodes de script utilisant l’objet Variant
MéthodeType de retourDescription
.idEntierRenvoie le numéro d’ID de la variante.
.priceMontantRenvoie le prix unitaire de la variante.
.productProduitRenvoie le produit associé à la variante.
.skusListe<chaîne>Renvoie les unités de gestion des stocks (SKU) de la variante, qui sont souvent utilisées pour le suivi du stock.
.titleChaîneRenvoie le titre de la variante.

Produit

Méthodes de script utilisant l’objet Product
MéthodeType de retourDescription
.idEntierRenvoie le numéro d’ID du produit.
.gift_card?BooléenIndique si le produit est une carte-cadeau.
.tagsList<Tag>Renvoie une liste de chaînes représentant les balises qui sont définies pour ce produit.
.product_typeChaîneCatégorisation avec laquelle un produit peut être balisé, couramment utilisée pour le filtrage et la recherche.
.vendorChaîneRenvoie le fournisseur de ce produit.

Kernel

Kernel est un module Ruby qui est inclus dans chaque classe. Par conséquent, ses méthodes sont disponibles pour chaque objet. Ces méthodes agissent de la même manière que les fonctions globales dans d’autres langages.

Méthodes de script utilisant l’objet Kernel
MéthodeType de retourDescription
.exitaucuneMet fin à l’exécution du script actuel sans erreur. Si cette commande est exécutée avant qu’un élément ne soit attribué à Output.cart, le script n’a aucun effet. C’est une façon utile de quitter les scripts, par exemple, si le client n’est pas admissible à l’exécution du script.

Exemple de Kernel

customer = Input.cart.customer
if customer && customer.email.end_with?("@mycompany.com")
  # Employees are not eligible for this promotion.
  exit
end

Méthodes d’article

Les méthodes suivantes ne sont utilisables que dans les scripts d’article :

Panier

Méthodes de script utilisant l’objet Panier dans les scripts d’article
MéthodeType de retourDescription
.subtotal_price_wasMontantRenvoie le sous-total du panier avant l’application de toute réduction.
.subtotal_price_changed?BooléenIndique si le sous-total a changé.

LineItem

Méthodes de script utilisant l’objet LineItem dans les scripts d’article
MéthodeType de retourDescription
.change_line_price(Money new_price, { message: chaîne }) MontantModifie le prix de l’article pour le remplacer par le montant indiqué. Un message est obligatoire. new_price doit être inférieur au prix actuel.
.original_line_priceMontantRenvoie le prix original de l’article avant l’application des scripts et des réductions.
.line_price_wasMontantRenvoie le prix de l’article avant que le script actuel n’applique des modifications.
.line_price_changed?BooléenIndique si le prix de l’article a changé.
.change_properties(hash new_properties, { message: chaîne }) hashDéfinit de nouvelles propriétés pour un article. Le hachage des propriétés d’origine est stocké dans properties_was et le hachage des propriétés transmis à la méthode devient les nouvelles propriétés de l’article.
.properties_washashRenvoie le hachage des propriétés d’origine de l’article avant l’application de toute modification.
.properties_changed?BooléenIndique si les propriétés de l’article ont été modifiées.
.split({ take: Entier })LineItemDivise un article en deux articles. take spécifie la quantité à retirer de l’article d’origine pour créer le nouvel article.

Exemple de .split

Cet exemple de script divise un article appelé original_line_item en deux articles. Le nouvel article a une quantité de 1 (spécifiée par take: 1). Le script applique ensuite un prix réduit au nouvel article avec le message « Troisième chapeau pour 5 dollars ».

if original_line_item.quantity >= 3
  new_line_item = original_line_item.split(take: 1)
  new_line_item.change_line_price(Money.new(cents: 500), message: "Third hat for 5 dollars")
  cart.line_items << new_line_item
end

Variante

Méthodes de script utilisant l’objet Variant dans les scripts d’article
MéthodeType de retourDescription
.compare_at_priceMontantRenvoie le prix de comparaison de la variante. Renvoie nil si la variante n’a pas de prix de comparaison.

Modes d’expédition

Les méthodes suivantes sont utilisables dans les scripts d’expédition :

Entrée

Méthodes de script utilisant l’objet Input dans les scripts d’expédition
MéthodeType de retourDescription
.shipping_ratesShippingRateListRetourne une liste de tous les tarifs d’expédition.

ShippingRateList

Méthodes de script utilisant l’objet ShippingRateList dans les scripts d’expédition
MéthodeType de retourDescription
.delete_ifShippingRateListSupprime les tarifs d’expédition à l’aide d’un bloc de code facultatif. Consultez la documentation de la méthode delete_if de Ruby.
.sort!ShippingRateListTrie les tarifs d’expédition à l’aide de l’opérateur de comparaison ou d’un bloc de code facultatif. Consultez la documentation de la méthode sort! de Ruby.
.sort_by!ShippingRateListTrie les tarifs d’expédition à l’aide d’un bloc de code facultatif. Consultez la documentation de la méthode sort_by! de Ruby.

ShippingRate

Méthodes de script utilisant l’objet ShippingRate dans les scripts d’expédition
MéthodeType de retourDescription
.codeChaîneRetourne le code du tarif d’expédition.
.markupMontantRetourne la majoration d’un tarif d’expédition, le cas échéant.
.nameChaîneRetourne le nom du tarif d’expédition. Il peut être modifié à l’aide de la méthode change_name.
.priceMontantRetourne le prix du tarif d’expédition.
.sourceChaîneRetourne la source (le transporteur) associée au tarif d’expédition, le cas échéant. Elle ne peut pas être modifiée.
.change_name(String new_name)Chaîne Modifie le nom (255 caractères maximum) du tarif d’expédition. Il n’est pas possible de modifier, de supprimer ou de masquer la source.
.apply_discount(Money discount, { message: String })MontantApplique une réduction du montant fixe spécifié. Le prix ne peut pas être inférieur à 0. Un message est obligatoire.
.phone_required?BooléenRetourne true si un numéro de téléphone est requis pour obtenir le tarif d’expédition, ou false si aucun numéro de téléphone n’est requis.

Moyens de paiement

Les méthodes suivantes peuvent être utilisées dans les scripts de paiement :

Entrée

Méthodes de script utilisant l’objet Input dans les scripts de paiement
MéthodeType de retourDescription
.payment_gatewaysPaymentGatewaysListRetourne une liste de toutes les passerelles de paiement de la boutique.

PaymentGatewayList

Méthodes de script utilisant l’objet PaymentGatewayList dans les scripts de paiement
MéthodeType de retourDescription
.delete_ifPaymentGatewayListSupprime les passerelles de paiement à l’aide d’un bloc de code facultatif. Consultez la documentation de la méthode delete_if de Ruby.
.sort!PaymentGatewayListTrie les passerelles de paiement à l’aide de l’opérateur de comparaison ou d’un bloc de code facultatif. Consultez la documentation de la méthode sort! de Ruby.
.sort_by!PaymentGatewayListTrie les passerelles de paiement à l’aide d’un bloc de code facultatif. Consultez la documentation de la méthode sort_by! de Ruby.

PaymentGateway

MéthodeType de retourDescription
.nameChaîneRetourne le nom de la passerelle de paiement.
.enabled_card_brandsListe<chaîne>

Si la passerelle de paiement prend en charge les cartes de crédit, retourne une liste des types de cartes de crédit que la boutique accepte. Si la passerelle ne prend pas en charge les cartes de crédit, retourne une liste vide.

.change_name(String new_name)ChaîneModifie le nom de la passerelle de paiement. Les passerelles de paiement avec des logos ne peuvent pas être renommées.

Exemples

Dans l’exemple de script d’article de panier suivant, lorsqu’un client commande un produit qui n’est pas une carte-cadeau, le prix du produit est réduit de 9 $. De plus, le montant total que le client a dépensé au cours de toutes ses visites dans votre boutique est affiché :

customer = Input.cart.customer
Input.cart.line_items.each do |line_item|
  product = line_item.variant.product
  next if product.gift_card?
  line_item.change_line_price(line_item.line_price - Money.new(cents: 900), message: customer.total_spent)
end

Output.cart = Input.cart

En savoir plus

En savoir plus sur :