Referentie voor Shopify Scripts-API

Scripts worden geschreven met een Ruby-API die je veel controle en flexibiliteit geeft.

Er zijn verschillende scripttypen. Een script krijgt een type toegewezen wanneer je het script aanmaakt in de Script Editor-app. Dit is gebaseerd op de scripttemplate waarmee je begint:

Orderregelscripts

Orderregelscripts zijn van invloed op orderregels in de winkelwagen en kunnen prijzen wijzigen en kortingen geven. Deze scripts worden uitgevoerd wanneer er een wijziging in de winkelwagen wordt aangebracht.

Orderregelscripts die korting geven op een abonnement, zijn alleen van toepassing op de eerste betaling van het abonnement. Volgende betalingen krijgen geen korting van het script.

Sommige methoden kunnen alleen in orderregelscripts worden gebruikt.

Verzendscripts

Verzendscripts hebben interactie met verzending en kunnen verzendmethoden wijzigen en kortingen geven op verzendtarieven. Deze scripts worden uitgevoerd wanneer de checkout de pagina met verzendopties bereikt.

Verzendscripts die korting geven op de verzendkosten van een abonnement, zijn alleen van toepassing op de eerste betaling van het abonnement. Volgende betalingen krijgen geen korting van het script.

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

Betalingsscripts

Betalingsscripts hebben interactie met betalingen en kunnen betalingsgateways hernoemen, verbergen en opnieuw rangschikken. Betalingsscripts hebben geen interactie met betalingsgateways die vóór het checkoutscherm worden weergegeven, zoals Apple Pay. Deze scripts worden uitgevoerd wanneer de checkout de betalingspagina bereikt.

Sommige methoden kunnen alleen in betalingsscripts worden gebruikt.

Algemene methoden

De volgende methoden kunnen in elk type script worden gebruikt:

Invoer

Invoermethoden voor scripts
MethodeRetourtypeOmschrijving
.cartWinkelwagenRetourneert een muteerbaar winkelwagenobject.
.localetekenreeksRetourneert de landinstelling van de klant. Bijvoorbeeld en, fr of pt-BR.

Winkelwagen

Het winkelwagenobject is alleen beschikbaar in de webshop. Sommige afgebroken checkouts hebben toegang tot het winkelwagenobject. Als een checkout echter is gesloten en een klant vervolgens de afgebroken checkout bezoekt, wordt deze doorgestuurd naar de vooraf ingevulde checkout en bestaat het winkelwagenobject niet meer. Dit komt doordat de webshop is omzeild via de e-mail over de afgebroken checkout.

Scriptmethoden die het winkelwagenobject gebruiken
MethodeRetourtypeOmschrijving
.customerKlantRetourneert de eigenaar van de winkelwagen (indien aanwezig).
.shipping_addressBezorgadresRetourneert het bezorgadres van de eigenaar van de winkelwagen (indien aanwezig).
.discount_codevariabel Retourneert:

discount_code is aanwezig als er een korting is toegepast op de winkelwagen. Dit betekent niet noodzakelijkerwijs dat de prijs van de winkelwagen verandert. Als er bijvoorbeeld een korting geldt voor winkelwagens boven de $ 50 en een script de winkelwagenprijs verlaagt tot onder de $ 50, is de discount_code nog steeds aanwezig, maar verandert de prijs van de winkelwagen niet.

<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

Scriptmethoden die het object CartDiscount::FixedAmount gebruiken
MethodeRetourtypeOmschrijving
.codeTekenreeksRetourneert de kortingscode die is gebruikt om de korting toe te passen.
.amountGeldRetourneert het geldbedrag van de korting.
.reject({ message: String })nilWijst de kortingscode af die op de winkelwagen is toegepast. Een message is vereist.
.rejected?BooleanRetourneert of de kortingscode is afgewezen.

CartDiscount::Percentage

Scriptmethoden die het object CartDiscount::Percentage gebruiken
MethodeRetourtypeOmschrijving
.codeTekenreeksRetourneert de kortingscode die is gebruikt om de korting toe te passen.
.percentageDecimaalRetourneert het percentage van de korting.
.reject({ message: String })nilWijst de kortingscode af die op de winkelwagen is toegepast. Een message is vereist.
.rejected?BooleanRetourneert of de kortingscode is afgewezen.

CartDiscount::Shipping

Scriptmethoden die het CartDiscount::Shipping-object gebruiken
MethodeRetourtypeOmschrijving
.codeTekenreeksRetourneert de kortingscode die is gebruikt om de korting toe te passen.
.reject({ message: String })nilWijst de kortingscode af die op de winkelwagen is toegepast. Een message is vereist.
.rejected?BooleanRetourneert of de kortingscode is afgewezen.

Klant

Scriptmethoden die het Klant-object gebruiken
MethodeRetourtypeOmschrijving
.idIntegerRetourneert het ID-nummer van de klant.
.emailTekenreeksRetourneert het e-mailadres van de klant.
.tagsList<Tag>Retourneert een lijst met tekenreeksen die de voor een klant ingestelde tags vertegenwoordigen.
.orders_countIntegerRetourneert het totale aantal bestellingen dat een klant heeft geplaatst.
.total_spentGeldRetourneert het totale bedrag dat de klant aan alle bestellingen heeft uitgegeven.
.accepts_marketing?BooleanRetourneert of de klant marketing accepteert.

Orderregel

Scriptmethoden die het Orderregel-object gebruiken
MethodeRetourtypeOmschrijving
.gramsgramRetourneert het totale gewicht van de orderregel.
.line_priceGeldDe prijs van de orderregel.
.discounted?BooleanRetourneert of de prijs van een orderregel is verlaagd door een script of een handmatig toegepaste korting. Het gebruik van kortingscodes heeft geen invloed op de retourwaarde.
.propertieshashRetourneert de eigenschappen die voor deze orderregel zijn opgegeven.
.variantVariantRetourneert de specifieke productvariant die door de orderregel wordt vertegenwoordigd.
.quantityIntegerRetourneert de hoeveelheid van deze orderregel.
.selling_plan_idIntegerRetourneert de ID van het verkoopplan voor de orderregel. Deze methode is handig wanneer de winkel abonnementen verkoopt en je wilt dat het script detecteert wanneer een productvariant als abonnement wordt verkocht.

List

Scriptmethoden die het List-object gebruiken
MethodeRetourtypeOmschrijving
.newListMaakt een nieuw object aan dat een lijst vertegenwoordigt.
.[]Element of nil

Retourneert het element op de opgegeven index.

.&List

Retourneert een nieuwe lijst met elementen die de twee lijsten gemeen hebben, zonder duplicaten.

.delete_ifListVerwijdert elementen met behulp van een optioneel codeblok. Zie de documentatie voor de delete_if-methode van Ruby.
.empty?Boolean

Retourneert true als de lijst geen elementen bevat.

.firstElement of nil

Retourneert het eerste element of nil als de lijst leeg is.

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

Retourneert de index van het eerste element van de lijst. Als er een blok wordt opgegeven in plaats van een argument, wordt de index van het eerste element geretourneerd waarvoor het blok waar is.

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

Retourneert de index van het laatste element van de lijst. Als er een blok wordt opgegeven in plaats van een argument, wordt de index van het eerste element geretourneerd waarvoor het blok waar is.

.lastElement of nil

Retourneert het laatste element of nil als de lijst leeg is.

.lengthint

Retourneert het aantal elementen in de lijst.

.sizeint

Alias voor length.

.each(*args, &block)List

Roept een blok één keer aan voor elk element in de lijst en geeft het element als parameter door aan het blok.

Bezorgadres

Scriptmethoden die het Bezorgadres-object gebruiken
MethodeRetourtypeOmschrijving
.nametekenreeksRetourneert de naam van de persoon die aan het bezorgadres is gekoppeld.
.address1tekenreeksRetourneert het straatadresgedeelte van het bezorgadres.
.address2tekenreeksRetourneert het optionele extra adresveld van het bezorgadres.
.phonetekenreeksRetourneert het telefoonnummer van het bezorgadres.
.citytekenreeksRetourneert de plaats van het bezorgadres.
.ziptekenreeksRetourneert de postcode van het bezorgadres.
.provincetekenreeksRetourneert de provincie/staat van het bezorgadres.
.province_codetekenreeksRetourneert de afgekorte waarde van de provincie/staat van het bezorgadres.
.country_codetekenreeksRetourneert de afgekorte waarde van het land van het bezorgadres.

Money

Scriptmethoden die het Money-object gebruiken
MethodeRetourtypeOmschrijving
.derived_from_presentment(customer_cents:X)GeldZet een bedrag (in centen) om van de lokale (gepresenteerde) valuta van de klant naar de valuta van je winkel. Deze methode accepteert de parameter customer_cents, die een getal in centen accepteert. Bijvoorbeeld: Money.derived_from_presentment(customer_cents: 500).
.newGeldMaakt een nieuw object aan dat een prijs vertegenwoordigt.
.zeroGeld

Maakt een nieuw object aan met een prijs van nul.

+GeldTelt twee Money-objecten bij elkaar op.
-GeldTrekt één Money-object van een ander af.
*GeldVermenigvuldigt een Money-object met een getal.

Money-voorbeelden

Money.new(cents: 1000)

Maakt een Money-object aan dat 1000 cent (oftewel $ 10) vertegenwoordigt.

Money.new(cents: 100) * 50

Maakt een Money-object aan dat $ 1 vertegenwoordigt en vermenigvuldigt dat bedrag vervolgens met 50. Retourneert een Money-object dat $ 50 vertegenwoordigt.

Variant

Scriptmethoden die het object Variant gebruiken
MethodeRetourtypeOmschrijving
.idIntegerRetourneert het ID-nummer van de variant.
.priceGeldRetourneert de eenheidsprijs van de variant.
.productProductRetourneert het bijbehorende product van de variant.
.skusList<String>Retourneert de SKU's (stock keeping units) van de variant, die vaak worden gebruikt om de voorraad bij te houden.
.titleTekenreeksRetourneert de titel van de variant.

Product

Scriptmethoden die het object Product gebruiken
MethodeRetourtypeOmschrijving
.idIntegerRetourneert het ID-nummer van het product.
.gift_card?BooleanRetourneert of het product een cadeaubon is.
.tagsList<Tag>Retourneert een lijst met tekenreeksen die de tags vertegenwoordigen die voor dit product zijn ingesteld.
.product_typeTekenreeksEen categorisering waarmee een product kan worden getagd, die vaak wordt gebruikt voor filteren en zoeken.
.vendorTekenreeksRetourneert de verkoper van dit product.

Kernel

Kernel is een Ruby-module die in elke klasse is opgenomen. Daardoor zijn de methoden ervan beschikbaar voor elk object. Deze methoden werken op dezelfde manier als globale functies in andere talen.

Scriptmethoden die het object Kernel gebruiken
MethodeRetourtypeOmschrijving
.exitgeenBeëindigt de uitvoering van het huidige script zonder fouten. Als dit wordt uitgevoerd voordat er iets is toegewezen aan Output.cart, heeft het script geen effect. Dit is een handige manier om scripts af te sluiten, bijvoorbeeld als de klant niet in aanmerking komt om het script uit te voeren.

Kernel-voorbeeld

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

Methoden voor orderregels

De volgende methoden zijn alleen bruikbaar in orderregelscripts:

Winkelwagen

Scriptmethoden die het object Cart gebruiken in orderregelscripts
MethodeRetourtypeOmschrijving
.subtotal_price_wasGeldRetourneert de subtotaalprijs van de winkelwagen voordat er kortingen werden toegepast.
.subtotal_price_changed?BooleanRetourneert of de subtotaalprijs is gewijzigd.

Orderregel

Scriptmethoden die het object LineItem gebruiken in orderregelscripts
MethodeRetourtypeOmschrijving
.change_line_price(Money new_price, { message: String }) GeldWijzigt de prijs van de orderregel naar het opgegeven bedrag. Een message is vereist. new_price moet lager zijn dan de huidige prijs.
.original_line_priceGeldRetourneert de oorspronkelijke prijs van de orderregel voordat scripts en kortingen werden toegepast.
.line_price_wasGeldRetourneert de prijs van de orderregel voordat het huidige script wijzigingen toepaste.
.line_price_changed?BooleanRetourneert of de prijs van de orderregel is gewijzigd.
.change_properties(hash new_properties, { message: String }) hashStelt nieuwe eigenschappen in voor een orderregel. De oorspronkelijke hash met eigenschappen wordt opgeslagen in properties_was en de hash met eigenschappen die aan de methode wordt doorgegeven, vormt de nieuwe eigenschappen voor de orderregel.
.properties_washashRetourneert de oorspronkelijke hash met eigenschappen van de orderregel voordat er wijzigingen werden toegepast.
.properties_changed?BooleanRetourneert of de eigenschappen voor de orderregel zijn gewijzigd.
.split({ take: Integer })LineItemSplitst een orderregel in twee orderregels. take geeft aan welke hoeveelheid uit de oorspronkelijke orderregel moet worden verwijderd om de nieuwe orderregel aan te maken.

.split-voorbeeld

Dit voorbeeldscript splitst een orderregel met de naam original_line_item in twee orderregels. De nieuwe orderregel heeft een hoeveelheid van 1 (opgegeven door take: 1). Het script past vervolgens een kortingsprijs toe op de nieuwe orderregel met het bericht ‘Third hat for 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

Variant

Scriptmethoden die het object Variant gebruiken in orderregelscripts
MethodeRetourtypeOmschrijving
.compare_at_priceGeldRetourneert de vergelijkingsprijs van de variant. Retourneert nil als de variant geen vergelijkingsprijs heeft.

Verzendmethoden

De volgende methoden zijn bruikbaar in verzendscripts:

Invoer

Scriptmethoden die het object Input gebruiken in verzendscripts
MethodeRetourtypeOmschrijving
.shipping_ratesShippingRateListGeeft een lijst met alle verzendtarieven terug.

ShippingRateList

Scriptmethoden die het ShippingRateList-object gebruiken in verzendscripts
MethodeRetourtypeOmschrijving
.delete_ifShippingRateListVerwijdert verzendtarieven met een optioneel codeblok. Zie de documentatie voor de delete_if-methode van Ruby.
.sort!ShippingRateListSorteert de verzendtarieven met de vergelijkingsoperator of met een optioneel codeblok. Zie de documentatie voor de sort!-methode van Ruby.
.sort_by!ShippingRateListSorteert de verzendtarieven met een optioneel codeblok. Zie de documentatie voor de sort_by!-methode van Ruby.

ShippingRate

Scriptmethoden die het ShippingRate-object gebruiken in verzendscripts
MethodeRetourtypeOmschrijving
.codeTekenreeksGeeft de code van het verzendtarief terug.
.markupGeldGeeft de prijsopslag voor een verzendtarief terug, indien van toepassing.
.nameTekenreeksGeeft de naam van het verzendtarief terug. Deze kan worden gewijzigd met de change_name-methode.
.priceGeldGeeft de prijs van het verzendtarief terug.
.sourceTekenreeksGeeft de bron (de vervoerder) terug die aan het verzendtarief is gekoppeld, indien relevant. Deze kan niet worden gewijzigd.
.change_name(Tekenreeks new_name)Tekenreeks Wijzigt de naam (maximaal 255 tekens) van het verzendtarief. Het is niet mogelijk om de bron te wijzigen, verwijderen of verbergen.
.apply_discount(Money korting, { message: Tekenreeks })GeldPast een korting toe van het opgegeven vaste bedrag. De prijs kan niet lager dan 0 worden. Een bericht is vereist.
.phone_required?BooleanGeeft true terug als een telefoonnummer vereist is om het verzendtarief te verkrijgen, of false als een telefoonnummer niet is vereist.

Betaalmethoden

De volgende methoden kunnen worden gebruikt in betalingsscripts:

Invoer

Scriptmethoden die het Input-object gebruiken in betalingsscripts
MethodeRetourtypeOmschrijving
.payment_gatewaysPaymentGatewaysListGeeft een lijst terug met alle betalingsgateways in de winkel.

PaymentGatewayList

Scriptmethoden die het PaymentGatewayList-object gebruiken in betalingsscripts
MethodeRetourtypeOmschrijving
.delete_ifPaymentGatewayListVerwijdert betalingsgateways met een optioneel codeblok. Zie de documentatie voor de delete_if-methode van Ruby.
.sort!PaymentGatewayListSorteert de betalingsgateways met de vergelijkingsoperator of met een optioneel codeblok. Zie de documentatie voor de sort!-methode van Ruby.
.sort_by!PaymentGatewayListSorteert de betalingsgateways met een optioneel codeblok. Zie de documentatie voor de sort_by!-methode van Ruby.

PaymentGateway

MethodeRetourtypeOmschrijving
.nameTekenreeksGeeft de naam van de betalingsgateway terug.
.enabled_card_brandsList<String>

Als de betalingsgateway creditcards ondersteunt, geeft deze een lijst terug met de creditcardtypen die de winkel accepteert. Als de gateway geen creditcards ondersteunt, geeft deze een lege lijst terug.

.change_name(Tekenreeks new_name)TekenreeksWijzigt de naam van de betalingsgateway. De naam van betalingsgateways met een logo kan niet worden gewijzigd.

Voorbeelden

In het volgende voorbeeld van een orderregelscript wordt, wanneer een klant een product bestelt dat geen cadeaubon is, de prijs van het product verlaagd met $ 9,-. Ook wordt het totaalbedrag weergegeven dat de klant tijdens alle bezoeken aan je winkel heeft uitgegeven:

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

Meer informatie

Meer informatie over: