Referenca za API skripti Shopify Scripts

Skripte se pišu u API-ju temeljenom na Rubyju, koji vam pruža visoku razinu kontrole i fleksibilnosti.

Postoje različite vrste skripti. Skripti se dodjeljuje vrsta prilikom njezine izrade u aplikaciji Script Editor na temelju predloška skripte koji odaberete za početak:

Skripte za linije artikala

Skripte za linije artikala utječu na linije artikala u košarici te mogu promijeniti cijene i odobriti popuste. Te se skripte pokreću kada dođe do promjene u košarici.

Skripte za linije artikala koje odobravaju popust na pretplatu primjenjuju se samo na prvo plaćanje pretplate. Skripta ne snižava cijenu naknadnih plaćanja.

Neke se metode mogu upotrijebiti samo u skriptama za linije artikala.

Skripte za dostavu

Skripte za dostavu stupaju u interakciju s dostavom te mogu promijeniti metode dostave i odobriti popuste na cijene dostave. Te se skripte pokreću kada plaćanje dosegne stranicu s opcijama dostave.

Skripte za dostavu koje odobravaju popust na cijenu dostave za pretplatu primjenjuju se samo na prvo plaćanje pretplate. Skripta ne odobrava popust na naknadna plaćanja.

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

Skripte za plaćanje

Skripte za plaćanje stupaju u interakciju s plaćanjima te mogu preimenovati, sakriti i promijeniti redoslijed pristupnika za plaćanje. Imajte na umu da skripte za plaćanje ne stupaju u interakciju s pristupnicima za plaćanje koji se prikazuju prije zaslona za plaćanje, kao što je Apple Pay. Te se skripte pokreću kada plaćanje dosegne stranicu za plaćanje.

Neke se metode mogu upotrijebiti samo u skriptama za plaćanje.

Opće metode

Sljedeće se metode mogu upotrebljavati u svim vrstama skripti:

Unos

Metode unosa za skripte
MetodaVrsta povrataOpis
.cartCartVraća promjenjiv objekt košarice.
.localenizVraća regionalne parametre korisnika. Na primjer, en, fr ili pt-BR.

Cart

Objekt košarice (cart) dostupan je samo u internetskoj trgovini. Neka nezavršena plaćanja imaju pristup objektu košarice. Međutim, ako se plaćanje zatvori, a korisnik zatim posjeti nezavršeno plaćanje, preusmjerava ga se na unaprijed popunjeno plaćanje i objekt košarice više ne postoji. Razlog je u tome što e-pošta o nezavršenom plaćanju zaobilazi internetsku trgovinu.

Metode skripte koje upotrebljavaju objekt Cart
MetodaVrsta povrataOpis
.customerCustomerVraća vlasnika košarice (ako postoji).
.shipping_addressShippingAddressVraća adresu za dostavu vlasnika košarice (ako postoji).
.discount_coderazlikuje se Vraća:

discount_code prisutan je ako je na košaricu primijenjen popust. To ne znači nužno da će se cijena košarice promijeniti. Na primjer, ako se popust primjenjuje na košarice iznad 50 $, a skripta smanji cijenu košarice ispod 50 $, discount_code i dalje je prisutan, ali cijena košarice se ne mijenja.

<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

Metode skripte koje upotrebljavaju objekt CartDiscount::FixedAmount
MetodaVrsta povrataOpis
.codeNizVraća kod za popust koji se koristi za primjenu popusta.
.amountMoneyVraća novčani iznos popusta.
.reject({ message: String })nilOdbija kod za popust primijenjen na košaricu. Potreban je parametar message.
.rejected?Booleova vrijednostVraća podatak o tome je li kod za popust odbijen.

CartDiscount::Percentage

Metode skripte koje upotrebljavaju objekt CartDiscount::Percentage
MetodaVrsta povrataOpis
.codeNizVraća kod za popust koji se koristi za primjenu popusta.
.percentageDecimalni brojVraća postotni iznos popusta.
.reject({ message: String })nilOdbija kod za popust primijenjen na košaricu. Potreban je parametar message.
.rejected?Booleova vrijednostVraća podatak o tome je li kod za popust odbijen.

CartDiscount::Shipping

Metode skripte koje upotrebljavaju objekt CartDiscount::Shipping
MetodaVrsta povrataOpis
.codeNizVraća kod za popust koji se koristi za primjenu popusta.
.reject({ message: String })nilOdbija kod za popust primijenjen na košaricu. Potreban je parametar message.
.rejected?Booleova vrijednostVraća podatak o tome je li kod za popust odbijen.

Customer

Metode skripte koje upotrebljavaju objekt Customer
MetodaVrsta povrataOpis
.idCijeli brojVraća ID broj korisnika.
.emailNizVraća e-adresu korisnika.
.tagsList<Tag>Vraća popis nizova koji predstavljaju sve oznake postavljene za korisnika.
.orders_countCijeli brojVraća ukupan broj narudžbi koje je korisnik izvršio.
.total_spentMoneyVraća ukupan iznos koji je korisnik potrošio na sve narudžbe.
.accepts_marketing?Booleova vrijednostVraća podatak prihvaća li korisnik marketing.

LineItem

Metode skripte koje upotrebljavaju objekt LineItem
MetodaVrsta povrataOpis
.gramsgramsVraća ukupnu težinu linije artikla.
.line_priceMoneyCijena linije artikla.
.discounted?Booleova vrijednostVraća podatak o tome je li cijena linije artikla snižena putem skripte ili ručno primijenjenog popusta. Upotreba kodova za popust ne utječe na povratnu vrijednost.
.propertieshashVraća svojstva koja su navedena za ovu liniju artikla.
.variantVariantVraća određenu varijantu proizvoda koju predstavlja linija artikla.
.quantityCijeli brojVraća količinu ove linije artikla.
.selling_plan_idCijeli brojVraća ID plana prodaje za liniju artikla. Ova je metoda korisna kada se u trgovini prodaju pretplate i želite da skripta prepozna kada se varijanta proizvoda prodaje kao pretplata.

List

Metode skripte koje upotrebljavaju objekt List
MetodaVrsta povrataOpis
.newListIzrađuje novi objekt koji predstavlja popis.
.[]Element ili nil

Vraća element na navedenom indeksu.

.&List

Vraća novi popis koji sadrži elemente zajedničke za oba popisa, bez duplikata.

.delete_ifListIzbrišite elemente pomoću neobaveznog bloka koda. Pogledajte dokumentaciju za metodu delete_if u jeziku Ruby.
.empty?Booleova vrijednost

Vraća true ako popis ne sadrži nijedan element.

.firstElement ili nil

Vraća prvi element ili nil ako je popis prazan.

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

Vraća indeks prvog elementa na popisu. Ako je umjesto argumenta zadan blok, vraća indeks prvog elementa za koji je blok istinit (true).

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

Vraća indeks zadnjeg elementa na popisu. Ako je umjesto argumenta zadan blok, vraća indeks prvog elementa za koji je blok istinit (true).

.lastElement ili nil

Vraća zadnji element ili nil ako je popis prazan.

.lengthint

Vraća broj elemenata na popisu.

.sizeint

Alias za length.

.each(*args, &block)List

Poziva blok jednom za svaki element na popisu, prosljeđujući pritom element kao parametar bloku.

ShippingAddress

Metode skripte koje upotrebljavaju objekt ShippingAddress
MetodaVrsta povrataOpis
.namenizVraća ime osobe povezane s adresom za dostavu.
.address1nizVraća dio adrese za dostavu s nazivom ulice.
.address2nizVraća neobavezno dodatno polje za dio adrese za dostavu s nazivom ulice.
.phonenizVraća telefonski broj s adrese za dostavu.
.citynizVraća grad s adrese za dostavu.
.zipnizVraća poštanski broj s adrese za dostavu.
.provincenizVraća regiju/državu s adrese za dostavu.
.province_codenizVraća skraćenu vrijednost regije/države s adrese za dostavu.
.country_codenizVraća skraćenu vrijednost zemlje s adrese za dostavu.

Money

Metode skripte koje upotrebljavaju objekt Money
MetodaVrsta povrataOpis
.derived_from_presentment(customer_cents:X)MoneyKonvertira iznos (u centima) iz lokalne valute (valute prikazane cijene) korisnika u valutu vaše trgovine. Ova metoda prihvaća parametar customer_cents, koji prima broj u centima. Na primjer, Money.derived_from_presentment(customer_cents: 500).
.newMoneyIzrađuje novi objekt koji predstavlja cijenu.
.zeroMoney

Izrađuje novi objekt s cijenom nula.

+MoneyZbraja dva objekta tipa Money.
-MoneyOduzima jedan objekt tipa Money od drugog.
*MoneyMnoži objekt tipa Money brojem.

Primjeri za objekt Money

Money.new(cents: 1000)

Izrađuje objekt tipa Money koji predstavlja 1000 centi ili 10 $.

Money.new(cents: 100) * 50

Izrađuje objekt Money koji predstavlja 1 USD, a zatim množi taj iznos s 50. Vraća objekt Money koji predstavlja 50 USD.

Varijanta

Metode skripte koje upotrebljavaju objekt Variant
MetodaVrsta povrataOpis
.idCijeli brojVraća ID broj varijante.
.priceMoneyVraća jediničnu cijenu varijante.
.productProizvodVraća povezani proizvod varijante.
.skusPopis<Niz>Vraća brojeve artikla u skladištu (SKU-ove) varijante koji se često upotrebljavaju za praćenje zaliha.
.titleNizVraća naslov varijante.

Proizvod

Metode skripte koje upotrebljavaju objekt Product
MetodaVrsta povrataOpis
.idCijeli brojVraća ID broj proizvoda.
.gift_card?Booleova vrijednostVraća podatak je li proizvod poklon kartica.
.tagsList<Tag>Vraća popis nizova koji predstavljaju oznake postavljene za ovaj proizvod.
.product_typeNizKategorizacija kojom se proizvod može označiti, a najčešće se upotrebljava za filtriranje i pretraživanje.
.vendorNizVraća prodavatelja ovog proizvoda.

Kernel

Kernel je Ruby modul koji je uključen u svaku klasu. Zbog toga su njegove metode dostupne svakom objektu. Te metode djeluju na isti način kao što globalne funkcije djeluju u drugim jezicima.

Metode skripte koje upotrebljavaju objekt Kernel
MetodaVrsta povrataOpis
.exitnemaZavršava izvođenje trenutačne skripte bez pogreške. Ako se to pokrene prije nego što se bilo što dodijeli objektu Output.cart, skripta nema učinka. To je koristan način za izlaz iz skripti, primjerice ako korisnik ne ispunjava uvjete za pokretanje skripte.

Primjer modula Kernel

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

Metode linije artikla

Sljedeće se metode mogu upotrebljavati samo u skriptama linije artikla:

Cart

Metode skripte koje upotrebljavaju objekt Cart u skriptama linije artikla
MetodaVrsta povrataOpis
.subtotal_price_wasMoneyVraća međuzbroj košarice prije primjene bilo kakvih popusta.
.subtotal_price_changed?Booleova vrijednostVraća podatak je li se međuzbroj promijenio.

LineItem

Metode skripte koje upotrebljavaju objekt LineItem u skriptama linije artikla
MetodaVrsta povrataOpis
.change_line_price(Money new_price, { message: String }) MoneyMijenja cijenu linije artikla na navedeni iznos. Obavezna je poruka message. Vrijednost new_price mora biti manja od trenutačne cijene.
.original_line_priceMoneyVraća izvornu cijenu linije artikla prije primjene skripti i popusta.
.line_price_wasMoneyVraća cijenu linije artikla prije nego što je trenutačna skripta primijenila promjene.
.line_price_changed?Booleova vrijednostVraća podatak je li se cijena linije artikla promijenila.
.change_properties(hash new_properties, { message: String }) hashPostavlja nova svojstva za liniju artikla. Izvorni hash svojstava pohranjuje se u properties_was, a hash svojstava koji se prosljeđuje metodi postaje novo svojstvo za liniju artikla.
.properties_washashVraća izvorni hash svojstava linije artikla prije primjene bilo kakvih promjena.
.properties_changed?Booleova vrijednostVraća podatak jesu li se svojstva za liniju artikla promijenila.
.split({ take: Integer })LineItemDijeli liniju artikla na dvije linije artikla. Parametar take određuje koju količinu treba ukloniti iz izvorne linije artikla da bi se izradila nova linija artikla.

Primjer metode .split

Ova ogledna skripta dijeli liniju artikla pod nazivom original_line_item na dvije linije artikla. Nova linija artikla ima količinu 1 (određeno pomoću take: 1). Skripta zatim primjenjuje sniženu cijenu na novu liniju artikla uz poruku „Treći šešir za 5 dolara”.

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

Varijanta

Metode skripte koje upotrebljavaju objekt Variant u skriptama linije artikla
MetodaVrsta povrataOpis
.compare_at_priceMoneyVraća prekriženu cijenu varijante. Vraća nil ako varijanta nema prekriženu cijenu.

Metode dostave

Sljedeće se metode mogu upotrebljavati u skriptama za dostavu:

Unos

Metode skripte koje upotrebljavaju objekt Input u skriptama za dostavu
MetodaVrsta povrataOpis
.shipping_ratesShippingRateListVraća popis svih cijena dostave.

ShippingRateList

Metode skripte koje upotrebljavaju objekt ShippingRateList u skriptama za dostavu
MetodaVrsta povrataOpis
.delete_ifShippingRateListBriše cijene dostave s pomoću neobaveznog bloka koda. Pogledajte dokumentaciju za metodu delete_if u jeziku Ruby.
.sort!ShippingRateListSortira cijene dostave s pomoću operatora usporedbe ili neobaveznog bloka koda. Pogledajte dokumentaciju za metodu sort! u jeziku Ruby.
.sort_by!ShippingRateListSortira cijene dostave s pomoću neobaveznog bloka koda. Pogledajte dokumentaciju za metodu sort_by! u jeziku Ruby.

ShippingRate

Metode skripte koje upotrebljavaju objekt ShippingRate u skriptama za dostavu
MetodaVrsta povrataOpis
.codeNizVraća kod cijene dostave.
.markupMoneyVraća maržu za cijenu dostave, ako je primjenjivo.
.nameNizVraća naziv cijene dostave. Može se izmijeniti upotrebom metode change_name.
.priceMoneyVraća iznos cijene dostave.
.sourceNizVraća izvor (prijevoznika) povezan s cijenom dostave, ako je relevantno. Ne može se mijenjati.
.change_name(String new_name)Niz Mijenja naziv (najviše 255 znakova) cijene dostave. Izvor nije moguće promijeniti, izbrisati ni sakriti.
.apply_discount(Money discount, { message: String })MoneyPrimjenjuje popust navedenog fiksnog iznosa. Cijena se ne može smanjiti na manje od 0. Poruka je obavezna.
.phone_required?Booleova vrijednostVraća true ako je za cijenu dostave potreban broj telefona ili false ako broj telefona nije potreban.

Načini plaćanja

Sljedeće metode mogu se upotrebljavati u skriptama za plaćanje:

Unos

Metode skripte koje upotrebljavaju objekt Input u skriptama za plaćanje
MetodaVrsta povrataOpis
.payment_gatewaysPaymentGatewaysListVraća popis svih pristupnika za plaćanje u trgovini.

PaymentGatewayList

Metode skripte koje upotrebljavaju objekt PaymentGatewayList u skriptama za plaćanje
MetodaVrsta povrataOpis
.delete_ifPaymentGatewayListIzbrišite pristupnike za plaćanje upotrebom neobaveznog bloka koda. Pogledajte dokumentaciju za Rubyjevu metodu delete_if.
.sort!PaymentGatewayListRazvrstajte pristupnike za plaćanje upotrebom operatora za usporedbu ili upotrebom neobaveznog bloka koda. Pogledajte dokumentaciju za Rubyjevu metodu sort!.
.sort_by!PaymentGatewayListRazvrstajte pristupnike za plaćanje upotrebom neobaveznog bloka koda. Pogledajte dokumentaciju za Rubyjevu metodu sort_by!.

PaymentGateway

MetodaVrsta povrataOpis
.nameNizVraća naziv pristupnika za plaćanje.
.enabled_card_brandsPopis<Niz>

Ako pristupnik za plaćanje podržava kreditne kartice, vraća popis vrsta kreditnih kartica koje trgovina prihvaća. Ako pristupnik ne podržava kreditne kartice, vraća prazan popis.

.change_name(String new_name)NizMijenja naziv pristupnika za plaćanje. Pristupnike za plaćanje koji imaju logotip nije moguće preimenovati.

Primjeri

U sljedećem primjeru skripte za liniju artikla, kada korisnik naruči proizvod koji nije poklon kartica, cijena proizvoda umanjuje se za 9 $. Također se prikazuje i ukupan iznos koji je korisnik potrošio tijekom svih posjeta vašoj trgovini:

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

Saznajte više

Saznajte više o sljedećem: