API-reference til Shopify-scripts
Scripts skrives med en Ruby-API, der giver dig en stor grad af kontrol og fleksibilitet.
Der findes forskellige scripttyper. Et script tildeles en type, når du opretter det i appen Script Editor, baseret på den scriptskabelon du vælger at starte med:
Scripts til varelinjer
Scripts til varelinjer påvirker varelinjer i indkøbskurven og kan ændre priser og tildele rabatter. Disse scripts køres, når der foretages en ændring i indkøbskurven.
Scripts til varelinjer, der giver rabat på et abonnement, gælder kun for den første betaling for abonnementet. Efterfølgende betalinger får ikke rabat via scriptet.
Nogle metoder kan kun bruges i scripts til varelinjer.
Scripts til forsendelse
Scripts til forsendelse interagerer med forsendelse og kan ændre leveringsmetoder samt give rabat på leveringspriser. Disse scripts køres, når betalingsprocessen når til siden med leveringsmuligheder.
Scripts til forsendelse, der giver rabat på leveringsprisen for et abonnement, gælder kun for den første betaling for abonnementet. Efterfølgende betalinger får ikke rabat via scriptet.
<p>Some methods <a href="#shipping-methods">can only be used in shipping scripts</a>.</p>Betalingsscripts
Betalingsscripts interagerer med betalinger og kan omdøbe, skjule og omarrangere betalingsgateways. Bemærk, at betalingsscripts ikke interagerer med betalingsgateways, der vises før betalingssiden, som f.eks. Apple Pay. Disse scripts køres, når betalingsprocessen når til betalingssiden.
Nogle metoder kan kun bruges i betalingsscripts.
På denne side
Generelle metoder
Følgende metoder kan bruges i alle scripttyper:
Input
| Metode | Returtype | Beskrivelse |
|---|---|---|
| .cart | Cart | Returnerer et redigerbart Cart-objekt. |
| .locale | streng | Returnerer kundens landestandard. F.eks. en, fr eller pt-BR. |
Cart
`Cart`-objektet er kun tilgængeligt i webshoppen. Visse forladte betalinger har adgang til `Cart`-objektet. Hvis en betalingsproces er blevet lukket, og en kunde derefter besøger den forladte betaling, sendes kunden dog til den forudfyldte betalingsside, og `Cart`-objektet findes ikke længere. Dette skyldes, at butikslayoutet er blevet sprunget over via mailen om forladt betaling.
| Metode | Returtype | Beskrivelse |
|---|---|---|
| .customer | Customer | Returnerer ejeren af indkøbskurven (hvis der er en). |
| .shipping_address | ShippingAddress | Returnerer leveringsadressen for ejeren af indkøbskurven (hvis der er en). |
| .discount_code | varierer |
Returnerer:
|
CartDiscount::FixedAmount
| Metode | Returtype | Beskrivelse |
|---|---|---|
| .code | Streng | Returnerer den rabatkode, der er brugt til at anvende rabatten. |
| .amount | Money | Returnerer rabattens beløb. |
| .reject({ message: String }) | nil | Afviser den rabatkode, der er anvendt på indkøbskurven. En message er påkrævet. |
| .rejected? | Boolesk | Returnerer, om rabatkoden blev afvist. |
CartDiscount::Percentage
| Metode | Returtype | Beskrivelse |
|---|---|---|
| .code | Streng | Returnerer den rabatkode, der er brugt til at anvende rabatten. |
| .percentage | Decimaltal | Returnerer rabatbeløbet i procent. |
| .reject({ message: String }) | nil | Afviser den rabatkode, der er anvendt på indkøbskurven. En message er påkrævet. |
| .rejected? | Boolesk | Returnerer, om rabatkoden blev afvist. |
CartDiscount::Shipping
| Metode | Returtype | Beskrivelse |
|---|---|---|
| .code | Streng | Returnerer den rabatkode, der er brugt til at anvende rabatten. |
| .reject({ message: String }) | nil | Afviser den rabatkode, der er anvendt på indkøbskurven. En message er påkrævet. |
| .rejected? | Boolesk | Returnerer, om rabatkoden blev afvist. |
Kunde
| Metode | Returtype | Beskrivelse |
|---|---|---|
| .id | Heltal | Returnerer kundens id-nummer. |
| Streng | Returnerer kundens mailadresse. | |
| .tags | Liste<Tag> | Returnerer en liste over strenge, der repræsenterer de tags, som er angivet for en kunde. |
| .orders_count | Heltal | Returnerer det samlede antal ordrer, som en kunde har afgivet. |
| .total_spent | Money | Returnerer det samlede beløb, som kunden har brugt på alle ordrer. |
| .accepts_marketing? | Boolesk | Returnerer, om kunden accepterer markedsføring. |
Varelinje
| Metode | Returtype | Beskrivelse |
|---|---|---|
| .grams | gram | Returnerer den samlede vægt for varelinjen. |
| .line_price | Money | Prisen på varelinjen. |
| .discounted? | Boolesk | Returnerer, om prisen på en varelinje er blevet nedsat med rabat af et script eller en manuelt anvendt rabat. Brugen af rabatkoder påvirker ikke returværdien. |
| .properties | hash | Returnerer de egenskaber, der er angivet for denne varelinje. |
| .variant | Variant | Returnerer den specifikke produktvariant, som varelinjen repræsenterer. |
| .quantity | Heltal | Returnerer antallet for denne varelinje. |
| .selling_plan_id | Heltal | Returnerer id'et for salgsplanen for varelinjen. Denne metode er nyttig, når butikken sælger abonnementer, og du vil have scriptet til at registrere, når en produktvariant sælges som et abonnement. |
Liste
| Metode | Returtype | Beskrivelse |
|---|---|---|
| .new | Liste | Opretter et nyt objekt til at repræsentere en liste. |
| .[] | Element eller nil |
Returnerer elementet på det angivne indeks. |
| .& | Liste |
Returnerer en ny liste, der indeholder de elementer, der er fælles for de to lister, uden dubletter. |
| .delete_if | Liste | Slet elementer ved hjælp af en valgfri kodeblok. Se dokumentationen for Rubys delete_if-metode. |
| .empty? | Boolesk |
Returnerer |
| .first | Element eller nil |
Returnerer det første element eller |
| .index(*args, &block) | int eller nil |
Returnerer indekset på det første element på listen. Hvis der angives en blok i stedet for et argument, returneres indekset på det første element, for hvilket blokken er sand. |
| .rindex(*args, &block) | int eller nil |
Returnerer indekset på det sidste element på listen. Hvis der angives en blok i stedet for et argument, returneres indekset på det første element, for hvilket blokken er sand. |
| .last | Element eller nil |
Returnerer det sidste element eller |
| .length | int |
Returnerer antallet af elementer på listen. |
| .size | int |
Alias for length. |
| .each(*args, &block) | Liste |
Kalder en blok én gang for hvert element på listen og overfører elementet som en parameter til blokken. |
Leveringsadresse
| Metode | Returtype | Beskrivelse |
|---|---|---|
| .name | streng | Returnerer navnet på den person, der er knyttet til leveringsadressen. |
| .address1 | streng | Returnerer gadeadressen for leveringsadressen. |
| .address2 | streng | Returnerer det valgfrie, yderligere felt til gadeadressen. |
| .phone | streng | Returnerer telefonnummeret for leveringsadressen. |
| .city | streng | Returnerer byen for leveringsadressen. |
| .zip | streng | Returnerer postnummeret for leveringsadressen. |
| .province | streng | Returnerer provinsen/delstaten for leveringsadressen. |
| .province_code | streng | Returnerer den forkortede værdi for provinsen/delstaten for leveringsadressen. |
| .country_code | streng | Returnerer den forkortede værdi for landet for leveringsadressen. |
Penge
| Metode | Returtype | Beskrivelse |
|---|---|---|
| .derived_from_presentment(customer_cents:X) | Money | Konverterer et beløb (i cent) fra kundens lokale valuta (præsentationsvaluta) til butikkens valuta. Denne metode accepterer parameteren customer_cents, som accepterer et tal i cent. For eksempel Money.derived_from_presentment(customer_cents: 500). |
| .new | Money | Opretter et nyt objekt, der repræsenterer en pris. |
| .zero | Money |
Opretter et nyt objekt med en pris på nul. |
| + | Money | Lægger to Money-objekter sammen. |
| - | Money | Trækker et Money-objekt fra et andet. |
| * | Money | Ganger et Money-objekt med et tal. |
Eksempler på Penge
Money.new(cents: 1000)Opretter et Money-objekt, der repræsenterer 1.000 cent, eller 10 USD.
Money.new(cents: 100) * 50Opretter et Money-objekt, der repræsenterer 1 USD, og ganger derefter beløbet med 50. Returnerer et Money-objekt, der repræsenterer 50 USD.
Variant
| Metode | Returtype | Beskrivelse |
|---|---|---|
| .id | Heltal | Returnerer id-nummeret for varianten. |
| .price | Money | Returnerer stykprisen for varianten. |
| .product | Produkt | Returnerer det tilknyttede produkt for varianten. |
| .skus | Liste<Streng> | Returnerer SKU-numrene for varianten, som ofte bruges til lagerstyring. |
| .title | Streng | Returnerer titlen på varianten. |
Produkt
| Metode | Returtype | Beskrivelse |
|---|---|---|
| .id | Heltal | Returnerer id-nummeret for produktet. |
| .gift_card? | Boolesk | Returnerer, om produktet er et gavekort. |
| .tags | Liste<Tag> | Returnerer en liste over strenge, der repræsenterer de tags, der er angivet for dette produkt. |
| .product_type | Streng | En kategorisering, som et produkt kan tagges med, og som ofte bruges til filtrering og søgning. |
| .vendor | Streng | Returnerer forhandleren af dette produkt. |
Kernel
Kernel er et Ruby-modul, som er inkluderet i alle klasser. Derfor er dets metoder tilgængelige for alle objekter. Disse metoder fungerer på samme måde som globale funktioner i andre sprog.
| Metode | Returtype | Beskrivelse |
|---|---|---|
| .exit | ingen | Afslutter kørslen af det aktuelle script uden fejl. Hvis dette køres, før noget er tildelt Output.cart, har scriptet ingen effekt. Dette er en nyttig måde at afslutte scripts på, f.eks. hvis kunden ikke er berettiget til at køre scriptet. |
Kernel-eksempel
customer = Input.cart.customer
if customer && customer.email.end_with?("@mycompany.com")
# Employees are not eligible for this promotion.
exit
endMetoder for varelinjer
Følgende metoder kan kun bruges i scripts for varelinjer:
Cart
| Metode | Returtype | Beskrivelse |
|---|---|---|
| .subtotal_price_was | Money | Returnerer indkøbskurvens subtotalpris, før der blev anvendt nogen rabatter. |
| .subtotal_price_changed? | Boolesk | Returnerer, om subtotalprisen er blevet ændret. |
Varelinje
| Metode | Returtype | Beskrivelse |
|---|---|---|
| .change_line_price(Penge new_price, { message: Streng }) | Money | Ændrer varelinjens pris til det angivne beløb. En message er påkrævet. new_price skal være lavere end den nuværende pris. |
| .original_line_price | Money | Returnerer den oprindelige pris for varelinjen, før der blev anvendt scripts og rabatter. |
| .line_price_was | Money | Returnerer prisen på varelinjen, før det aktuelle script anvendte ændringer. |
| .line_price_changed? | Boolesk | Returnerer, om prisen for varelinjen er blevet ændret. |
| .change_properties(hash new_properties, { message: Streng }) | hash | Angiver nye egenskaber for en varelinje. Den oprindelige hash med egenskaber gemmes i properties_was, og den hash med egenskaber, der sendes til metoden, bliver de nye egenskaber for varelinjen. |
| .properties_was | hash | Returnerer den oprindelige hash med egenskaber for varelinjen, før der blev anvendt nogen ændringer. |
| .properties_changed? | Boolesk | Returnerer, om egenskaberne for varelinjen er blevet ændret. |
| .split({ take: Heltal }) | Varelinje | Opdeler en varelinje i to varelinjer. take angiver, hvilket antal der skal fjernes fra den oprindelige varelinje for at oprette den nye varelinje. |
.split-eksempel
Dette eksempelscript opdeler en varelinje med navnet original_line_item i to varelinjer. Den nye varelinje har et antal på 1 (angivet af take: 1). Scriptet anvender derefter en rabatpris på den nye varelinje med beskeden "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
endVariant
| Metode | Returtype | Beskrivelse |
|---|---|---|
| .compare_at_price | Money | Returnerer variantens førpris. Returnerer nil, hvis varianten ikke har en førpris. |
Leveringsmetoder
Følgende metoder kan bruges i forsendelsesscripts:
Input
| Metode | Returtype | Beskrivelse |
|---|---|---|
| .shipping_rates | Liste over forsendelsespriser | Returnerer en liste over alle leveringspriser. |
ShippingRateList
| Metode | Returtype | Beskrivelse |
|---|---|---|
| .delete_if | Liste over forsendelsespriser | Slet leveringspriser ved hjælp af en valgfri kodeblok. Se dokumentationen til Ruby-metoden delete_if. |
| .sort! | Liste over forsendelsespriser | Sortér leveringspriserne ved hjælp af sammenligningsoperatoren eller en valgfri kodeblok. Se dokumentationen til Ruby-metoden sort!. |
| .sort_by! | Liste over forsendelsespriser | Sortér leveringspriserne ved hjælp af en valgfri kodeblok. Se dokumentationen til Ruby-metoden sort_by!. |
ShippingRate
| Metode | Returtype | Beskrivelse |
|---|---|---|
| .code | Streng | Returnerer leveringsprisens kode. |
| .markup | Money | Returnerer avancen for en leveringspris, hvis det er relevant. |
| .name | Streng | Returnerer navnet på leveringsprisen. Det kan redigeres med metoden change_name. |
| .price | Money | Returnerer prisen på leveringsprisen. |
| .source | Streng | Returnerer den kilde (fragtfirmaet), der er knyttet til leveringsprisen, hvis det er relevant. Den kan ikke redigeres. |
| .change_name(String new_name) | Streng | Ændrer navnet (maks. 255 tegn) på leveringsprisen. Det er ikke muligt at ændre, slette eller skjule kilden. |
| .apply_discount(Money discount, { message: String }) | Money | Anvender en rabat med det angivne faste beløb. Prisen kan ikke reduceres til under 0. Der kræves en besked. |
| .phone_required? | Boolesk | Returnerer true, hvis der kræves et telefonnummer for at få leveringsprisen, eller false, hvis der ikke kræves et telefonnummer. |
Betalingsmetoder
Følgende metoder kan bruges i betalingsscripts:
Input
| Metode | Returtype | Beskrivelse |
|---|---|---|
| .payment_gateways | PaymentGatewaysList | Returnerer en liste over alle betalingsgateways i butikken. |
PaymentGatewayList
| Metode | Returtype | Beskrivelse |
|---|---|---|
| .delete_if | PaymentGatewayList | Slet betalingsgateways ved hjælp af en valgfri kodeblok. Se dokumentationen til Ruby-metoden delete_if. |
| .sort! | PaymentGatewayList | Sortér betalingsgateways ved hjælp af sammenligningsoperatoren eller en valgfri kodeblok. Se dokumentationen til Ruby-metoden sort!. |
| .sort_by! | PaymentGatewayList | Sortér betalingsgateways ved hjælp af en valgfri kodeblok. Se dokumentationen til Ruby-metoden sort_by!. |
PaymentGateway
| Metode | Returtype | Beskrivelse |
|---|---|---|
| .name | Streng | Returnerer navnet på betalingsgatewayen. |
| .enabled_card_brands | Liste<Streng> |
Hvis betalingsgatewayen understøtter kreditkort, returneres en liste over de kreditkorttyper, som butikken accepterer. Hvis gatewayen ikke understøtter kreditkort, returneres en tom liste. |
| .change_name(String new_name) | Streng | Ændrer navnet på betalingsgatewayen. Betalingsgateways med logoer kan ikke omdøbes. |
Eksempler
I følgende eksempel på et varelinjescript reduceres prisen på produktet med 9 USD, når en kunde bestiller et produkt, der ikke er et gavekort. Det samlede beløb, som kunden har brugt på tværs af alle besøg i din butik, vises også:
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
Få mere at vide
Få mere at vide om: