Shopify Scripts-API-Referenz

Skripte werden mit einer Ruby-API geschrieben, die ein hohes Maß an Kontrolle und Flexibilität bietet.

Es gibt verschiedene Skripttypen. Einem Skript wird bei der Erstellung in der Script Editor-App basierend auf der ausgewählten Skriptvorlage ein Typ zugewiesen:

Einzelartikel-Skripte

Skripte für Einzelartikel wirken sich auf Einzelartikel im Warenkorb aus und können Preise ändern oder Rabatte gewähren. Diese Skripte werden ausgeführt, wenn eine Änderung am Warenkorb vorgenommen wird.

Einzelartikel-Skripte, die einen Rabatt auf Abonnementgebühren anwenden, gelten ausschließlich für die erste Zahlung der Abonnementgebühren. Das Skript wendet keinen Rabatt auf nachfolgende Zahlungen an.

Einige Methoden können nur in Einzelartikel-Skripten verwendet werden.

Versand-Skripte

Skripte für den Versand interagieren mit dem Versand, und können Versandmethoden ändern und Rabatte auf Versandkosten anwenden. Diese Skripte werden ausgeführt, wenn der Checkout die Seite mit den Versandoptionen erreicht.

Versand-Skripte, die einen Rabatt auf Versandgebühren anwenden, gelten ausschließlich für die erste Zahlung der Abonnementgebühren. Das Skript wendet keinen Rabatt auf nachfolgende Zahlungen an.

Einige Methoden können nur in Versand-Skripten verwendet werden.

Zahlungsskripte

Zahlungsskripts interagieren mit Zahlungen und können Zahlungs-Gateways umbenennen, verbergen und neu anordnen. Beachten, dass Zahlungsskripts nicht mit Zahlungs-Gateways interagieren, die vor dem Checkout-Bildschirm angezeigt werden, z. B. Apple Pay. Diese Skripte werden ausgeführt, wenn der Checkout die Zahlungsseite erreicht.

Einige Methoden können nur in Zahlungs-Skripten verwendet werden.

Allgemeine Methoden

Die folgenden Methoden können in jedem Skripttyp verwendet werden:

Eingabe

Skript-Eingabemethoden
ArtRückgabetypBeschreibung
.cartWarenkorbGibt ein veränderbares Warenkorbobjekt zurück.
.localeStringGibt das Gebietsschema des Kunden an. Zum Beispiel en, fr oder pt-BR.

Warenkorb

Das Warenkorbobjekt ist nur für den Onlineshop-Kanal verfügbar. Einige abgebrochene Checkouts haben Zugriff auf das Warenkorbobjekt. Wenn ein Checkout allerdings geschlossen wurde und der Kunde dann den abgebrochenen Checkout aufruft, wird dieser direkt zum vorab ausgefüllten Checkout weitergeleitet und das Warenkorbobjekt existiert nicht mehr. Das liegt daran, dass der Kunde durch die E-Mail mit der Mitteilung über den abgebrochenen Checkout die eigentliche Storefront umgeht.

Skript-Methoden, die das Cart-Objekt verwenden
ArtRückgabetypBeschreibung
.customerKundeGibt den Inhaber des Warenkorbs aus (falls vorhanden).
.shipping_addressLieferadresseGibt die Lieferadresse des Besitzers des Warenkorbs aus (falls vorhanden).
.discount_codevariiert Rückgaben:

discount_code wird angezeigt, wenn ein Rabatt auf den Warenkorb angewendet wurde. Dies bedeutet nicht zwangsläufig, dass sich der Preis des Inhalts im Warenkorb ändert. Wenn beispielsweise ein Rabatt für Warenkörbe mit einem Inhalt von über 50 EUR gilt und ein Skript den Preis auf unter 50 EUR reduziert, ist discount_code zwar weiterhin vorhanden, der Preis des Inhalts im Warenkorb ändert sich jedoch nicht.

Schaue dir ein Beispiel für discount_code an.

.line_items Liste <Einzelartikel>Gibt eine Liste mit den Einzelartikeln im Warenkorb aus.
.presentment_currency Liste<String>Gibt die Landeswährung (Darstellungswährung) des Kunden (im Format ISO 4217) aus. Zum Beispiel: USD.
.subtotal_priceMoneyGibt die Zwischensumme des Warenkorbs aus, einschließlich Einzelartikel-Rabatten aber ohne angewendete Rabattcodes.
.total_weightGrammGibt das Gesamtgewicht aller Einzelartikeln im Warenkorb aus.

Warenkorbrabatt::FesterBetrag

Skript-Methoden, die das CartDiscount:: FixedAmount-Objekt verwenden
ArtRückgabetypBeschreibung
.codeStringGibt den Rabattcode an, der für diesen Rabatt angewandt wurde.
.amountMoneyGibt den Geldbetrag des Rabattes aus.
.reject({ message: String })NullLehnt den Rabattcode ab, der auf den Warenkorb angewendet wurde. Eine Nachricht ist erforderlich.
.rejected?Boolescher WertMeldet, ob der Rabattcode abgelehnt wurde.

Warenkorbrabatt::Prozentsatz

Skript-Methoden, die das CartDiscount::P ercentage-Objekt verwenden
ArtRückgabetypBeschreibung
.codeStringGibt den Rabattcode an, der für diesen Rabatt angewandt wurde.
.percentageDezimalGibt den Prozentsatz des Rabattes aus.
.reject({ message: String })NullLehnt den Rabattcode ab, der auf den Warenkorb angewendet wurde. Eine Nachricht ist erforderlich.
.rejected?Boolescher WertMeldet, ob der Rabattcode abgelehnt wurde.

CartDiscount::Shipping

Skript-Methoden, die das CartDiscount:: Shipping-Objekt verwenden
ArtRückgabetypBeschreibung
.codeStringGibt den Rabattcode an, der für diesen Rabatt angewandt wurde.
.reject({ message: String })NullLehnt den Rabattcode ab, der auf den Warenkorb angewendet wurde. Eine Nachricht ist erforderlich.
.rejected?Boolescher WertMeldet, ob der Rabattcode abgelehnt wurde.

Kunde

Skript-Methoden, die das Customer-Objekt verwenden
ArtRückgabetypBeschreibung
.idGanze ZahlGibt die ID-Nummer der Kunden aus.
.emailStringGibt die E-Mail-Adresse der Kunden aus.
.tags Liste<Tag>Gibt eine Liste von Strings aus, die alle für einen Kunden festgelegte Tags darstellen.
.orders_countGanze ZahlGibt die Gesamtzahl der Bestellungen aus, die ein Kunde aufgegeben hat.
.total_spentMoneyGibt den Gesamtbetrag aus, den der Kunde für alle Bestellungen ausgegeben hat.
.accepts_marketing?Boolescher WertGibt an, ob der Kunde Marketing akzeptiert.

Position

<tdgrams
Skript-Methoden, die das LineItem-Objekt verwenden
ArtRückgabetypBeschreibung
.gramsGibt das Gesamtgewicht des Einzelartikels aus.
.line_priceMoneyDer Preis des Einzelartikels.
.discounted?Boolescher WertGibt aus, ob der Preis einer Position durch ein Skript oder einen manuell angewendeten Rabatt reduziert wurde. Die Verwendung von Rabattcodes hat keinen Einfluss auf den Rückgabewert.
.propertieshashGibt die Eigenschaften aus, die für diese Einzelartikel angegeben wurden.
.variantVarianteGibt die bestimmte Produktvariante dieses Einzelartikels aus.
.quantityGanze ZahlGibt die Menge dieses Einzelartikels aus.
.selling_plan_idGanze ZahlGibt die ID des Verkaufsplans der Position aus. Diese Methode ist nützlich, wenn der Shop Abonnements verkauft und du möchtest, dass das Skript erkennt, wann eine Produktvariante als Abonnement verkauft wird.

Liste

Skript-Methoden, die das List-Objekt verwenden
ArtRückgabetypBeschreibung
.newListeErstellt ein neues Objekt zur Darstellung einer Liste.
.[]Element oder nil

Gibt das Element zum angegebenen Index zurück.

.&Liste

Gibt eine neue Liste zurück, die Elemente enthält, die den beiden Listen gemeinsam sind und keine Duplikate enthalten.

.delete_ifListeElemente mithilfe eines optionalen Codeblocks löschen. Siehe die Dokumentation für die delete_if-Methode in Ruby.
.empty?Boolescher Wert

Gibt true aus, wenn die Liste keine Elemente enthält.

.firstElement oder nil

Gibt das erste Element der Liste aus. Ist die Liste leer, wird nil ausgegeben.

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

Gibt den Index des ersten Elements der Liste aus. Wenn ein Block anstelle eines Arguments angegeben wird, wird der Index des ersten Elements ausgegeben, für das der Block wahr ist.

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

Gibt den Index des letzten Elements der Liste zurück. Wenn ein Block anstelle eines Arguments angegeben wird, wird der Index des ersten Elements zurückgegeben, für das der Block wahr ist.

.lastElement oder nil

Gibt das letzte Element aus oder nil, falls die Liste leer ist.

.lengthint

Gibt die Anzahl der Elemente in der Liste aus.

.sizeint

Alias für length.

.each(*args, &block)Liste

Ruft für jedes Element in der Liste einen Block einmal auf und übergibt das Element als Parameter an den Block.

Lieferadresse

Skript-Methoden, die das ShippingAddress-Objekt verwenden
ArtRückgabetypBeschreibung
.nameStringGibt den Namen der Person aus, die mit der Lieferadresse verknüpft ist.
.address1StringGibt den Straßenadressabschnitt der Lieferadresse aus.
.address2StringGibt das optionale zusätzliche Feld des Abschnitts der Straßenadresse der Lieferadresse aus.
.phoneStringGibt die Telefonnummer der Lieferadresse aus.
.cityStringGibt die Stadt der Lieferadresse aus.
.zipStringGibt die Postleitzahl der Lieferadresse aus.
.provinceStringGibt das Bundesland/den Kanton der Lieferadresse aus.
.province_codeStringGibt den abgekürzten Wert der Provinz / des Bundesstaates der Lieferadresse aus.
.country_codeStringGibt den abgekürzten Wert des Landes der Lieferadresse aus.

Money

Skript-Methoden, die das Money-Objekt verwenden
ArtRückgabetypBeschreibung
.derived_from_presentment(customer_cents:X)MoneyRechnet einen Betrag (in Cent) von der lokalen Währung (Darstellungswährung) des Kunden in die Währung deines Shops um. Diese Methode akzeptiert den Parameter customer_cents, der eine Zahl in Cent akzeptiert. Zum Beispiel: Money.derived_from_presentment(customer_cents: 500).
.newMoneyErstellt ein neues Objekt, um einen Preis darzustellen.
.zeroMoney

Erstellt ein neues Objekt mit einem Preis von Null.

MoneyFügt zwei Money-Objekte hinzu.
MoneySubtrahiert ein Money-Objekt von einem anderen.
*MoneyMultipliziert ein Money-Objekt mit einer Zahl.

Money-Beispiele

Money.new(cents: 1000)

Erstellt ein Money-Objekt das 1000 Cent oder 10 USD darstellt.

Money.new(cents: 100) * 50

Erstellt ein Money-Objekt, das 1 USD darstellt, multipliziert diesen Betrag dann mit 50. Gibt ein Money-Objekt aus, das 50 USD darstellt.

Variante

Skript-Methoden, die das Variant-Objekt verwenden
ArtRückgabetypBeschreibung
.idGanze ZahlGibt die ID-Nummer der Variante aus.
.priceMoneyGibt den Grundpreis der Variante aus.
.productProduktGibt das verknüpfte Produkt der Variante aus.
.skus Liste<String>Gibt die Artikelnummern (SKUs) der Variante zurück, die häufig zum Verfolgen des Bestands verwendet werden.
.titleStringGibt den Titel der Variante aus.

Produkt

Skript-Methoden, die das Product-Objekt verwenden
ArtRückgabetypBeschreibung
.idGanze ZahlGibt die ID-Nummer des Produkts aus.
.gift_card?Boolescher WertGibt aus, ob es sich bei dem Produkt um einen Gutschein handelt.
.tags Liste<Tag>Gibt eine Liste mit Strings aus, die die festgelegten Tags für dieses Produkt darstellen.
.product_typeStringEine Kategorisierung, die häufig zum Filtern und Suchen verwendet wird und mit der ein Produkt gekennzeichnet werden kann.
.vendorStringGibt den Anbieter dieses Produktes aus.

Kernel

Kernel ist ein Ruby-Modul, das in jeder Klasse enthalten ist. Daher sind seine Methoden für jedes Objekt verfügbar. Diese Methoden verhalten sich genauso wie globale Funktionen in anderen Sprachen.

Skript-Methoden, die das Kernel-Objekt verwenden
ArtRückgabetypBeschreibung
.exitKeineBeendet die Ausführung des aktuellen Skripts ohne Fehler. Wenn dies ausgeführt wird, bevor etwas Output.cart zugewiesen wurde, hat das Skript keine Auswirkungen. Dies ist eine nützliche Methode zum Beenden von Skripts, z. B. wenn der Kunde das Skript nicht ausführen kann.

Kernel-Beispiel

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

Einzelartikelmethoden

Die folgenden Methoden können bei Einzelartikel-Skripten angewandt werden:

Warenkorb

Skript-Methoden, die das Cart-Objekt in Line Item-Skripten verwenden
ArtRückgabetypBeschreibung
.subtotal_price_wasMoneyGibt die Zwischensumme des Warenkorbs vor Anwendung jeglicher Rabatte aus.
.subtotal_price_changed?Boolescher WertGibt aus, ob die Zwischensumme sich geändert hat.

Einzelartikel

Skript-Methoden, die das LineItem-Objekt in Line Item-Skripten verwenden
ArtRückgabetypBeschreibung
.change_line_price(Money new_price, { message: String }) MoneyÄndert den Preis des Einzelartikels zum angegebenen Betrag. Eine Nachricht ist erforderlich. new_price muss niedriger als der aktuelle Preis sein.
.original_line_priceMoneyGibt den ursprünglichen Preis des Einzelartikels zurück, bevor Skripte und Rabatte angewendet wurden.
.line_price_wasMoneyGibt den Preis des Einzelartikels, bevor Änderungen vom aktuellen Skript übernommen wurden, aus.
.line_price_changed?Boolescher WertGibt zurück, ob die Eigenschaften des Einzelartikels sich geändert haben.
.change_properties(hash new_properties, { message: String }) hashLegt neue Eigenschaften für einen Einzelartikel fest. Der ursprüngliche Eigenschaften-Hash wird in properties_was gespeichert und der Eigenschaften-Hash, der an die Methode übergeben wird, wird zu den neuen Eigenschaften des Einzelartikels.
.properties_washashGibt den Hash mit den ursprünglichen Eigenschaften des Einzelartikels aus, bevor irgendwelche Änderungen angewandt wurden.
.properties_changed?Boolescher WertGibt aus, ob die Eigenschaften des Einzelartikels sich geändert haben.
.split({ take: Integer })EinzelartikelTeilt einen Einzelartikel in zwei Einzelartikel. take gibt an, welche Menge aus dem ursprünglichen Einzelartikel entfernt werden soll, um den neuen Einzelartikel zu erstellen.

.split-Beispiel

Mit diesem Beispielskript wird ein Einzelartikel mit dem Namen original_line_item in zwei Einzelartikel geteilt. Der neue Einzelartikel hat die Menge 1 (angegeben durch take: 1). Das Skript wendet dann auf den neuen Einzelartikel einen reduzierten Preis mit der Meldung "Dritter Hut zum Preis von 5 Dollar" an.

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

Skript-Methoden, die das Variant-Objekt in Line Item-Skripten verwenden
ArtRückgabetypBeschreibung
.compare_at_priceMoneyGibt den durchgestrichenen Vergleichspreis der Variante aus. Gibt nil aus, wenn die Variante keinen durchgestrichenen Vergleichspreis hat.

Versandarten

Die folgenden Methoden können bei Versand-Skripten angewandt werden:

Eingabe

Skript-Methoden, die das Input-Objekt in Shipping-Skripten verwenden
ArtRückgabetypBeschreibung
.shipping_ratesListe der VersandpreiseGibt eine Liste mit allen Versandpreisen aus

Liste der Versandpreise

Skript-Methoden, die das ShippingRateList-Objekt in Shipping-Skripten verwenden
ArtRückgabetypBeschreibung
.delete_ifListe der VersandpreiseVersandkosten mithilfe eines optionalen Codeblocks löschen. Siehe die Dokumentation für die delete_if-Methode in Ruby.
.sort!Liste der VersandpreiseOrdnet die Versandkosten mithilfe des Vergleichsoperators oder eines optionalen Codeblocks. Siehe die Dokumentation für die sort!-Methode in Ruby.
.sort_by!Liste der VersandpreiseSortiere die Versandkosten mit einem optionalen Codeblock. Siehe die Dokumentation für die sort_by!-Methode in Ruby.

Versandpreis

Skript-Methoden, die das ShippingRate-Objekt in Shipping-Skripten verwenden
ArtRückgabetypBeschreibung
.codeStringGibt den Code für die Versandkosten zurück.
.markupMoneyGibt ggf. den Preisaufschlag für einen Versandtarif aus.
.nameStringGibt den Namen der Versandtarifs aus. Mit der Methode change_name kann der Name geändert werden.
.priceMoneyGibt den Preis der Versandkosten aus.
.sourceStringGibt die dem Versandtarif zugeordnete Quelle (den Versanddienstleister) aus, sofern relevant. Die Quelle kann nicht geändert werden.
.change_name(String new_name)String Ändert den Namen (maximal 255 Zeichen) des Versandtarifs. Es ist nicht möglich, die Quelle zu ändern, zu löschen oder auszublenden.
.apply_discount(Money discount, { message: String })MoneyWendet einen Rabatt auf den angegebenen festen Betrag an. Der Preis kann nicht unter 0 reduziert werden. Es ist eine Nachricht erforderlich.
.phone_required?Boolescher WertGibt true aus, wenn eine Telefonnummer erforderlich ist, um die Versandrate zu erhalten, oder false, wenn eine Telefonnummer nicht erforderlich ist.

Zahlungsmethoden

Die folgenden Methoden können bei Zahlungs-Skripten angewandt werden:

Eingabe

Skript-Methoden, die das Input-Objekt in Payment-Skripten verwenden
ArtRückgabetypBeschreibung
.payment_gatewaysPaymentGatewaysListGibt eine Liste aller im Shop verfügbaren Zahlungs-Gateways zurück.

ZahlungsportalListe

Skript-Methoden, die das PaymentGatewayList-Objekt in Payment-Skripten verwenden
ArtRückgabetypBeschreibung
.delete_ifZahlungsportalListeLöscht Zahlungs-Gateways mithilfe eines optionalen Codeblocks. Siehe die Dokumentation für die delete_if-Methode in Ruby.
.sort!ZahlungsportalListeSortiert Zahlungs-Gateways mithilfe des Vergleichsoperators oder eines optionalen Codeblocks. Siehe die Dokumentation für die sort!-Methode in Ruby.
.sort_by!ZahlungsportalListeSortiert Zahlungs-Gateways mithilfe eines optionalen Codeblocks. Siehe die Dokumentation für die sort_by!-Methode in Ruby.

PaymentGateway

ArtRückgabetypBeschreibung
.nameStringGibt den Namen des Zahlungs-Gateways an.
.enabled_card_brands Liste<String>

Wenn das Zahlungs-Gateway Kreditkarten unterstützt, wird eine Liste der Kreditkarteninstitute ausgegeben, die vom Shop akzeptiert werden. Wenn das Zahlungs-Gateway keine Kreditkarten unterstützt, wird eine leere Liste ausgegeben.

.change_name(String new_name)StringÄndert den Namen des Zahlungs-Gateways. Zahlungs-Gateways mit Logos können nicht umbenannt werden.

Beispiele

Wenn im folgenden Beispiel für ein Einzelartikel-Skript ein Kunde ein Produkt bestellt, das kein Geschenkgutschein ist, wird der Preis des Produkts um 9 USD reduziert. Außerdem wird der Gesamtbetrag angezeigt, den der Kunde während aller Besuche in deinem Shop ausgegeben hat:

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

Mehr erfahren

Erfahre mehr zu diesen Themen:

Du hast die gesuchten Antworten nicht gefunden? Wir helfen dir gerne weiter.