Referenca za Shopify Scripts API

Skripte su napisane pomoću Ruby API-ja koji vam pruža veliku kontrolu i fleksibilnost.

Postoje različiti tipovi skripti. Tip se dodeljuje skripti prilikom kreiranja u aplikaciji Script Editor, na osnovu šablona skripte koji izaberete za početak:

Skripte za stavke

Skripte za stavke utiču na stavke u korpi, mogu da menjaju cene i odobravaju popuste. Ove skripte se izvršavaju kada se napravi promena u korpi.

Skripte za stavke koje daju popust na pretplatu primenjuju se samo na prvo plaćanje pretplate. Skripta ne odobrava popust na naredna plaćanja.

Neke metode mogu da se koriste samo u skriptama za stavke.

Skripte za isporuku

Skripte za isporuku ostvaruju interakciju sa isporukom, i mogu da promene načine isporuke i odobre popuste na cene dostave. Ove skripte se izvršavaju kada naplata dođe do stranice sa opcijama isporuke.

Skripte za isporuku koje daju popust na cenu dostave pretplate primenjuju se samo na prvo plaćanje pretplate. Skripta ne odobrava popust na naredna 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 ostvaruju interakciju sa plaćanjima, i mogu da preimenuju, sakriju i promene redosled mrežnih prolaza za plaćanje. Skripte za plaćanje ne ostvaruju interakciju sa mrežnim prolazima za plaćanje koji se prikazuju pre ekrana za naplatu, kao što je Apple Pay. Ove skripte se izvršavaju kada naplata dođe do stranice za plaćanje.

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

Opšte metode

Sledeće metode mogu da se koriste u bilo kom tipu skripte:

Unos

Metode za unos u skripte
MetodaTip povratne vrednostiOpis
.cartCartVraća promenljivi objekat korpe.
.localestringVraća lokalitet kupca. Na primer, en, fr ili pt-BR.

Cart

Objekat korpe je dostupan samo u internet prodavnici. Neke napuštene naplate imaju pristup objektu korpe. Međutim, ako je naplata zatvorena, a kupac zatim poseti napuštenu naplatu, on se preusmerava na unapred popunjenu naplatu i objekat korpe više ne postoji. To je zato što je izlog zaobiđen imejlom o napuštenoj kasi.

Metode skripte koje koriste objekat korpe
MetodaTip povratne vrednostiOpis
.customerCustomerVraća vlasnika korpe (ako postoji).
.shipping_addressShippingAddressVraća adresu za dostavu vlasnika korpe (ako postoji).
.discount_coderazlikuje se Vraća:

discount_code je prisutan ako je na korpu primenjen popust. To ne znači nužno da se cena korpe menja. Na primer, ako se popust primenjuje na korpe čija je vrednost iznad 50 USD, a skripta smanji cenu korpe na ispod 50 USD, discount_code je i dalje prisutan, ali se cena korpe ne menja.

<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 koriste objekat CartDiscount::FixedAmount
MetodaTip povratne vrednostiOpis
.codeStringVraća kôd za popust koji se koristi za primenu popusta.
.amountMoneyVraća novčani iznos popusta.
.reject({ message: String })nilOdbija kôd za popust primenjen na korpu. Obavezna je message.
.rejected?Bulova vrednostVraća informaciju o tome da li je kôd za popust odbijen.

CartDiscount::Percentage

Metode skripte koje koriste objekat CartDiscount::Percentage
MetodaTip povratne vrednostiOpis
.codeStringVraća kôd za popust koji se koristi za primenu popusta.
.percentageDecimalni brojVraća procentualni iznos popusta.
.reject({ message: String })nilOdbija kôd za popust primenjen na korpu. Obavezna je message.
.rejected?Bulova vrednostVraća informaciju o tome da li je kôd za popust odbijen.

CartDiscount::Shipping

Metode skripte koje koriste objekat CartDiscount::Shipping
MetodaTip povratne vrednostiOpis
.codeStringVraća kôd za popust koji se koristi za primenu popusta.
.reject({ message: String })nilOdbija kôd za popust primenjen na korpu. Obavezna je message.
.rejected?Bulova vrednostVraća informaciju o tome da li je kôd za popust odbijen.

Customer

Metode skripte koje koriste objekat Customer
MetodaTip povratne vrednostiOpis
.idCeo brojVraća ID broj kupca.
.emailStringVraća imejl adresu kupca.
.tagsList<Tag>Vraća listu stringova koji predstavljaju sve oznake postavljene za kupca.
.orders_countCeo brojVraća ukupan broj porudžbina koje je kupac izvršio.
.total_spentMoneyVraća ukupan iznos koji je kupac potrošio na sve porudžbine.
.accepts_marketing?Bulova vrednostVraća informaciju o tome da li kupac prihvata marketing.

LineItem

Metode skripte koje koriste objekat LineItem
MetodaTip povratne vrednostiOpis
.gramsgramiVraća ukupnu težinu stavke.
.line_priceMoneyCena stavke.
.discounted?Bulova vrednostVraća informaciju o tome da li je cena stavke snižena pomoću skripte ili ručno primenjenog popusta. Korišćenje kodova za popust ne utiče na vraćenu vrednost.
.propertieshashVraća svojstva koja su navedena za ove stavke.
.variantVariantVraća specifičnu varijantu proizvoda koju predstavlja stavka.
.quantityCeo brojVraća količinu ove stavke.
.selling_plan_idCeo brojVraća ID plana prodaje za stavku. Ova metoda je korisna kada prodavnica prodaje pretplate i želite da skripta detektuje kada se varijanta proizvoda prodaje kao pretplata.

List

Metode skripte koje koriste objekat List
MetodaTip povratne vrednostiOpis
.newListKreira novi objekat koji predstavlja listu.
.[]Element ili nil

Vraća element na navedenom indeksu.

.&List

Vraća novu listu koja sadrži zajedničke elemente za dve liste, bez duplikata.

.delete_ifListBriše elemente pomoću opcionog bloka koda. Pogledajte dokumentaciju za Ruby metodu delete_if.
.empty?Bulova vrednost

Vraća true ako lista ne sadrži elemente.

.firstElement ili nil

Vraća prvi element ili nil ako je lista prazna.

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

Vraća indeks prvog elementa liste. Ako je blok naveden umesto argumenta, vraća indeks prvog elementa za koji je blok tačan.

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

Vraća indeks poslednjeg elementa liste. Ako je blok naveden umesto argumenta, vraća indeks prvog elementa za koji je blok tačan.

.lastElement ili nil

Vraća poslednji element ili nil ako je lista prazna.

.lengthint

Vraća broj elemenata u listi.

.sizeint

Alijas za length.

.each(*args, &block)List

Poziva blok jednom za svaki element u listi, prosleđujući element bloku kao parametar.

ShippingAddress

Metode skripte koje koriste objekat ShippingAddress
MetodaTip povratne vrednostiOpis
.namestringVraća ime osobe povezane s adresom za dostavu.
.address1stringVraća deo adrese za dostavu koji se odnosi na ulicu.
.address2stringVraća opciono dodatno polje dela adrese za dostavu koji se odnosi na ulicu.
.phonestringVraća broj telefona za adresu za dostavu.
.citystringVraća grad za adresu za dostavu.
.zipstringVraća ZIP kod adrese za dostavu.
.provincestringVraća pokrajinu/državu adrese za dostavu.
.province_codestringVraća skraćenu vrednost pokrajine/države adrese za dostavu.
.country_codestringVraća skraćenu vrednost zemlje adrese za dostavu.

Money

Metodi skripti koji koriste objekat Money
MetodaTip povratne vrednostiOpis
.derived_from_presentment(customer_cents:X)MoneyKonvertuje iznos (u centima) iz lokalne valute kupca (valuta prikaza) u valutu vaše prodavnice. Ovaj metod prihvata parametar customer_cents, koji prihvata broj u centima. Na primer, Money.derived_from_presentment(customer_cents: 500).
.newMoneyKreira novi objekat koji predstavlja cenu.
.zeroMoney

Kreira novi objekat čija je cena nula.

+MoneySabira dva objekta Money.
-MoneyOduzima jedan objekat Money od drugog.
*MoneyMnoži objekat Money brojem.

Primeri objekta Money

Money.new(cents: 1000)

Kreira objekat Money koji predstavlja 1000 centi, odnosno 10 $.

Money.new(cents: 100) * 50

Kreira objekat Money koji predstavlja 1 $, a zatim množi taj iznos sa 50. Vraća objekat Money koji predstavlja 50 $.

Varijanta

Metodi skripti koji koriste objekat Variant
MetodaTip povratne vrednostiOpis
.idCeo brojVraća ID broj varijante.
.priceMoneyVraća jediničnu cenu varijante.
.productProductVraća povezani proizvod varijante.
.skusList<String>Vraća jedinice zaliha (SKU) varijante, koje se često koriste za praćenje zaliha.
.titleStringVraća naslov varijante.

Proizvod

Metodi skripti koji koriste objekat Product
MetodaTip povratne vrednostiOpis
.idCeo brojVraća ID broj proizvoda.
.gift_card?Bulova vrednostVraća informaciju o tome da li je proizvod poklon kartica.
.tagsList<Tag>Vraća listu stringova koji predstavljaju oznake postavljene za ovaj proizvod.
.product_typeStringKategorizacija kojom proizvod može biti označen, a obično se koristi za filtriranje i pretraživanje.
.vendorStringVraća dobavljača ovog proizvoda.

Kernel

Kernel je Ruby modul koji je uključen u svaku klasu. Zbog toga su njegovi metodi dostupni svakom objektu. Ovi metodi funkcionišu na isti način kao globalne funkcije u drugim jezicima.

Metodi skripti koji koriste objekat Kernel
MetodaTip povratne vrednostiOpis
.exitnijednoZavršava izvršavanje trenutne skripte bez greške. Ako se ovo pokrene pre nego što se bilo šta dodeli objektu Output.cart, skripta nema efekta. Ovo je koristan način za izlaz iz skripti, na primer, ako kupac ne ispunjava uslove za pokretanje skripte.

Primer modula Kernel

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

Metodi za stavke

Sledeći metodi se mogu koristiti samo u skriptama za stavke:

Cart

Metodi skripti koji koriste objekat Cart u skriptama za stavke
MetodaTip povratne vrednostiOpis
.subtotal_price_wasMoneyVraća cenu međuzbira korpe pre primene bilo kakvih popusta.
.subtotal_price_changed?Bulova vrednostVraća informaciju o tome da li je cena međuzbira promenjena.

LineItem

Metodi skripti koji koriste objekat LineItem u skriptama za stavke
MetodaTip povratne vrednostiOpis
.change_line_price(Money new_price, { message: String }) MoneyMenja cenu stavke na navedeni iznos. Parametar message je obavezan. Vrednost new_price mora biti manja od trenutne cene.
.original_line_priceMoneyVraća originalnu cenu stavke pre primene skripti i popusta.
.line_price_wasMoneyVraća cenu stavke pre promena koje je primenila trenutna skripta.
.line_price_changed?Bulova vrednostVraća informaciju o tome da li je cena stavke promenjena.
.change_properties(hash new_properties, { message: String }) hashPostavlja nova svojstva za stavku. Originalni heš svojstava je sačuvan u properties_was, a heš svojstava koji je prosleđen metodu postaje nova svojstva za stavku.
.properties_washashVraća originalni heš svojstava stavke pre primene bilo kakvih promena.
.properties_changed?Bulova vrednostVraća informaciju o tome da li su svojstva stavke promenjena.
.split({ take: Integer })LineItemDeli stavku na dve stavke. take određuje koja količina se uklanja iz originalne stavke radi kreiranja nove stavke.

Primer za .split

Ova skripta iz primera deli stavku pod nazivom original_line_item u dve stavke. Nova stavka ima količinu 1 (što je određeno sa take: 1). Skripta zatim primenjuje cenu sa popustom na novu stavku uz poruku „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

Varijanta

Metode skripte koje koriste objekat Variant u skriptama za stavke
MetodaTip povratne vrednostiOpis
.compare_at_priceMoneyVraća uporednu cenu varijante. Vraća nil ako varijanta nema uporednu cenu.

Načini isporuke

Sledeće metode se mogu koristiti u skriptama za isporuku:

Unos

Metode skripte koje koriste objekat Input u skriptama za isporuku
MetodaTip povratne vrednostiOpis
.shipping_ratesShippingRateListVraća listu svih tarifa za dostavu.

ShippingRateList

Metode skripte koje koriste objekat ShippingRateList u skriptama za isporuku
MetodaTip povratne vrednostiOpis
.delete_ifShippingRateListBriše tarife za dostavu pomoću opcionog bloka koda. Pogledajte dokumentaciju za metodu delete_if u jeziku Ruby.
.sort!ShippingRateListSortira tarife za dostavu koristeći operator poređenja ili opcioni blok koda. Pogledajte dokumentaciju za metodu sort! u jeziku Ruby.
.sort_by!ShippingRateListSortira tarife za dostavu pomoću opcionog bloka koda. Pogledajte dokumentaciju za metodu sort_by! u jeziku Ruby.

ShippingRate

Metode skripte koje koriste objekat ShippingRate u skriptama za isporuku
MetodaTip povratne vrednostiOpis
.codeStringVraća kôd tarife za dostavu.
.markupMoneyVraća maržu za tarifu za dostavu, ukoliko je primenljivo.
.nameStringVraća naziv tarife za dostavu. Može se izmeniti korišćenjem metode change_name.
.priceMoneyVraća cenu tarife za dostavu.
.sourceStringVraća izvor (prevoznika) koji je povezan sa tarifom za dostavu, ako je relevantno. Ne može se izmeniti.
.change_name(String new_name)String Menja naziv tarife za dostavu (najviše 255 znakova). Izvor nije moguće izmeniti, izbrisati niti sakriti.
.apply_discount(Money discount, { message: String })MoneyPrimenjuje popust u navedenom fiksnom iznosu. Cena se ne može smanjiti ispod 0. Poruka je obavezna.
.phone_required?Bulova vrednostVraća true ako je za dobijanje tarife za dostavu neophodan broj telefona, odnosno false ako broj telefona nije neophodan.

Načini plaćanja

Sledeće metode se mogu koristiti u skriptama za plaćanje:

Unos

Metode skripte koje koriste objekat Input u skriptama za plaćanje
MetodaTip povratne vrednostiOpis
.payment_gatewaysPaymentGatewaysListVraća listu svih mrežnih prolaza za plaćanje u prodavnici.

PaymentGatewayList

Metode skripte koje koriste objekat PaymentGatewayList u skriptama za plaćanje
MetodaTip povratne vrednostiOpis
.delete_ifPaymentGatewayListBriše mrežne prolaze za plaćanje pomoću opcionog bloka koda. Pogledajte dokumentaciju za metodu delete_if u jeziku Ruby.
.sort!PaymentGatewayListSortira mrežne prolaze za plaćanje koristeći operator poređenja ili opcioni blok koda. Pogledajte dokumentaciju za metodu sort! u jeziku Ruby.
.sort_by!PaymentGatewayListSortira mrežne prolaze za plaćanje pomoću opcionog bloka koda. Pogledajte dokumentaciju za metodu sort_by! u jeziku Ruby.

PaymentGateway

MetodaTip povratne vrednostiOpis
.nameStringVraća naziv mrežnog prolaza za plaćanje.
.enabled_card_brandsList<String>

Ako mrežni prolaz za plaćanje podržava kreditne kartice, vraća listu tipova kreditnih kartica koje prodavnica prihvata. Ako prolaz ne podržava kreditne kartice, vraća praznu listu.

.change_name(String new_name)StringMenja naziv mrežnog prolaza za plaćanje. Nije moguće preimenovati mrežne prolaze za plaćanje sa logotipima.

Primeri

U sledećem primeru skripte za stavke, kada kupac naruči proizvod koji nije poklon kartica, cena proizvoda se umanjuje za 9 USD. Takođe, prikazuje se ukupan iznos koji je kupac potrošio tokom svih poseta vašoj prodavnici:

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