Shopify skriptide API viide

Skriptid kirjutatakse Ruby API abil, mis pakub sulle suurel määral kontrolli ja paindlikkust.

Skripte on erinevat tüüpi. Skriptile määratakse tüüp, kui lood skripti rakenduses Script Editor, olenevalt sellest, millise skriptimalli sa alustamiseks valid:

Reaüksuse skriptid

Reaüksuse skriptid mõjutavad ostukorvis olevaid reaüksusi ning võivad muuta hindu ja anda allahindlusi. Need skriptid käivitatakse, kui ostukorvis tehakse muudatus.

Reaüksuse skriptid, mis teevad tellimusele allahindluse, rakenduvad ainult tellimuse esimesele maksele. Skript ei tee allahindlust järgnevatele maksetele.

Mõnda meetodit saab kasutada ainult reaüksuse skriptides.

Tarneskriptid

Tarneskriptid on seotud tarnega ning nendega saab muuta tarneviise ja anda allahindlusi tarnetariifidele. Need skriptid käivitatakse, kui kassa jõuab tarnevalikute lehele.

Tarneskriptid, mis teevad tellimuse tarnetariifile allahindluse, rakenduvad ainult tellimuse esimesele maksele. Skript ei tee allahindlust järgnevatele maksetele.

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

Makseskriptid

Makseskriptid on seotud maksetega ning saavad makselüüse ümber nimetada, peita ja ümber järjestada. Pane tähele, et makseskriptid ei mõjuta makselüüse, mida kuvatakse enne kassakuva, näiteks makseviisi Apple Pay. Need skriptid käivitatakse, kui kassa jõuab makselehele.

Mõnda meetodit saab kasutada ainult makseskriptides.

Üldised meetodid

Järgmised meetodid on kasutatavad igat tüüpi skriptides:

Sisend

Skripti sisendi meetodid
MeetodTagastustüüpKirjeldus
.cartOstukorvTagastab muudetava ostukorvi objekti.
.localesõneTagastab kliendi lokaadi. Näiteks en, fr või pt-BR.

Ostukorv

Ostukorvi objekt on kättesaadav ainult e-poes. Mõnel poolelijäänud kassatehingul on juurdepääs ostukorvi objektile. Kui aga kassa on suletud ja klient külastab seejärel poolelijäänud kassatehingut, suunatakse ta eeltäidetud kassasse ja ostukorvi objekti enam ei eksisteeri. Selle põhjuseks on see, et poolelijäänud ostu e-kirjaga minnakse müügikeskkonnast mööda.

Ostukorvi objekti kasutavad skriptimeetodid
MeetodTagastustüüpKirjeldus
.customerKlientTagastab ostukorvi omaniku (kui on).
.shipping_addressTarneaadressTagastab ostukorvi omaniku tarneaadressi (kui see on olemas).
.discount_codevarieerub Tagastab:

discount_code on olemas, kui ostukorvile on rakendatud allahindlus. See ei tähenda tingimata, et ostukorvi hind muutub. Näiteks, kui allahindlus kehtib ostukorvidele, mille summa on üle 50 $, ja skript vähendab ostukorvi hinna alla 50 $, on discount_code endiselt olemas, kuid ostukorvi hind ei muutu.

<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

Objekti CartDiscount::FixedAmount kasutavad skriptimeetodid
MeetodTagastustüüpKirjeldus
.codeSõneTagastab allahindluse rakendamiseks kasutatud sooduskoodi.
.amountRahaTagastab allahindluse rahasumma.
.reject({ message: String })nilLükkab tagasi ostukorvile rakendatud sooduskoodi. message on nõutav.
.rejected?TõeväärtusTagastab, kas sooduskood lükati tagasi.

CartDiscount::Percentage

Objekti CartDiscount::Percentage kasutavad skriptimeetodid
MeetodTagastustüüpKirjeldus
.codeSõneTagastab allahindluse rakendamiseks kasutatud sooduskoodi.
.percentageKümnendmurdTagastab allahindluse protsendi.
.reject({ message: String })nilLükkab tagasi ostukorvile rakendatud sooduskoodi. message on nõutav.
.rejected?TõeväärtusTagastab, kas sooduskood lükati tagasi.

CartDiscount::Shipping

Objekti CartDiscount::Shipping kasutavad skriptimeetodid
MeetodTagastustüüpKirjeldus
.codeSõneTagastab allahindluse rakendamiseks kasutatud sooduskoodi.
.reject({ message: String })nilLükkab tagasi ostukorvile rakendatud sooduskoodi. message on nõutav.
.rejected?TõeväärtusTagastab, kas sooduskood lükati tagasi.

Klient

Kliendi objekti kasutavad skriptimeetodid
MeetodTagastustüüpKirjeldus
.idTäisarvTagastab kliendi ID-numbri.
.emailSõneTagastab kliendi e-posti aadressi.
.tagsList<Tag>Tagastab sõnede loendi, mis tähistavad kliendile määratud silte.
.orders_countTäisarvTagastab kliendi esitatud tellimuste koguarvu.
.total_spentRahaTagastab kogusumma, mille klient on kõigile tellimustele kulutanud.
.accepts_marketing?TõeväärtusTagastab, kas klient on turundusega nõustunud.

Reaüksus

Reaüksuse objekti kasutavad skriptimeetodid
MeetodTagastustüüpKirjeldus
.gramsgramsTagastab reaüksuse kogukaalu.
.line_priceRahaReaüksuse hind.
.discounted?TõeväärtusTagastab, kas reaüksuse hinnale on rakendatud skriptipõhist või käsitsi lisatud allahindlust. Sooduskoodide kasutamine ei mõjuta tagastusväärtust.
.propertiesräsiTagastab sellele reaüksusele määratud omadused.
.variantVariantTagastab konkreetse tootevariandi, mida reaüksus esindab.
.quantityTäisarvTagastab selle reaüksuse koguse.
.selling_plan_idTäisarvTagastab reaüksuse müügiplaani ID. See meetod on kasulik, kui pood müüb tellimusi ja soovid, et skript tuvastaks, millal tootevariant on sold as a subscription.

Loend

Loendi objekti kasutavad skriptimeetodid
MeetodTagastustüüpKirjeldus
.newListLoob uue objekti loendi tähistamiseks.
.[]Element või nil

Tagastab määratud indeksil asuva elemendi.

.&List

Tagastab uue loendi, mis sisaldab mõlemale loendile ühiseid elemente ilma duplikaatideta.

.delete_ifListKustutab elemendid valikulise koodiploki abil. Vaata lisateavet: Ruby's delete_if method.
.empty?Tõeväärtus

Tagastab väärtuse true, kui loend ei sisalda elemente.

.firstElement või nil

Tagastab esimese elemendi või väärtuse nil, kui loend on tühi.

.index(*args, &block)int või nil

Tagastab loendi esimese elemendi indeksi. Kui argumendi asemel on antud plokk, tagastab esimese elemendi indeksi, mille puhul plokk on tõene.

.rindex(*args, &block)int või nil

Tagastab loendi viimase elemendi indeksi. Kui argumendi asemel on antud plokk, tagastab esimese elemendi indeksi, mille puhul plokk on tõene.

.lastElement või nil

Tagastab viimase elemendi või väärtuse nil, kui loend on tühi.

.lengthint

Tagastab loendis olevate elementide arvu.

.sizeint

Meetodi length alias.

.each(*args, &block)List

Kutsub ploki välja üks kord iga loendis oleva elemendi jaoks, edastades elemendi plokile parameetrina.

Tarneaadress

Tarneaadressi objekti kasutavad skriptimeetodid
MeetodTagastustüüpKirjeldus
.namesõneTagastab tarneaadressiga seotud isiku nime.
.address1sõneTagastab tarneaadressi tänava aadressi osa.
.address2sõneTagastab tarneaadressi tänava aadressi osa valikulise lisavälja.
.phonesõneTagastab tarneaadressi telefoninumbri.
.citysõneTagastab tarneaadressi linna.
.zipsõneTagastab tarneaadressi ZIP-koodi.
.provincesõneTagastab tarneaadressi provintsi/osariigi.
.province_codesõneTagastab tarneaadressi provintsi/osariigi lühendatud väärtuse.
.country_codesõneTagastab tarneaadressi riigi lühendatud väärtuse.

Money

Skriptimeetodid, mis kasutavad objekti Money
MeetodTagastustüüpKirjeldus
.derived_from_presentment(customer_cents:X)RahaKonverteerib summa (sentides) kliendi kohalikust (kuvatavast) valuutast sinu poe valuutasse. See meetod aktsepteerib parameetrit customer_cents, mis võtab vastu arvu sentides. Näiteks Money.derived_from_presentment(customer_cents: 500).
.newRahaLoob uue objekti, mis tähistab hinda.
.zeroRaha

Loob uue objekti, mille hind on null.

+RahaLiidab kaks Money-objekti.
-RahaLahutab ühest Money-objektist teise.
*RahaKorrutab Money-objekti arvuga.

Objekti Money näited

Money.new(cents: 1000)

Loob Money-objekti, mis tähistab 1000 senti ehk 10 $.

Money.new(cents: 100) * 50

Loob Money-objekti, mis tähistab 1 $, seejärel korrutab selle summa 50-ga. Tagastab Money-objekti, mis tähistab 50 $.

Variant

Skriptimeetodid, mis kasutavad objekti Variant
MeetodTagastustüüpKirjeldus
.idTäisarvTagastab variandi ID-numbri.
.priceRahaTagastab variandi ühikuhinna.
.productProductTagastab variandiga seotud toote.
.skusList<String>Tagastab variandi laoarvestusühikud (SKU-d), mida sageli kasutatakse laoseisu jälgimiseks.
.titleSõneTagastab variandi pealkirja.

Product

Skriptimeetodid, mis kasutavad objekti Product
MeetodTagastustüüpKirjeldus
.idTäisarvTagastab toote ID-numbri.
.gift_card?TõeväärtusTagastab, kas toode on kinkekaart.
.tagsList<Tag>Tagastab loendi sõnedest, mis tähistavad sellele tootele määratud silte.
.product_typeSõneKategoriseering, millega toodet saab sildistada, kasutatakse sageli filtreerimiseks ja otsimiseks.
.vendorSõneTagastab selle toote tarnija.

Kernel

Kernel on Ruby moodul, mis on kaasatud igasse klassi. Seetõttu on selle meetodid saadaval igale objektile. Need meetodid toimivad samamoodi nagu globaalsed funktsioonid teistes keeltes.

Skriptimeetodid, mis kasutavad objekti Kernel
MeetodTagastustüüpKirjeldus
.exitpuudubLõpetab praeguse skripti täitmise ilma veata. Kui see käivitatakse enne, kui midagi on määratud objektile Output.cart, pole skriptil mingit mõju. See on kasulik viis skriptidest väljumiseks, näiteks juhul, kui klient ei vasta skripti käivitamise tingimustele.

Kerneli näide

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

Reaüksuste meetodid

Järgmised meetodid on kasutatavad ainult reaüksuste skriptides:

Ostukorv

Skriptimeetodid, mis kasutavad objekti Cart reaüksuste skriptides
MeetodTagastustüüpKirjeldus
.subtotal_price_wasRahaTagastab ostukorvi vahesumma enne mis tahes allahindluste rakendamist.
.subtotal_price_changed?TõeväärtusTagastab, kas vahesumma on muutunud.

Reaüksus

Skriptimeetodid, mis kasutavad objekti LineItem reaüksuste skriptides
MeetodTagastustüüpKirjeldus
.change_line_price(Money new_price, { message: String }) RahaMuudab reaüksuse hinna määratud summaks. message on nõutav. new_price peab olema madalam kui praegune hind.
.original_line_priceRahaTagastab reaüksuse algse hinna enne skriptide ja allahindluste rakendamist.
.line_price_wasRahaTagastab reaüksuse hinna enne praeguse skripti poolt tehtud muudatuste rakendamist.
.line_price_changed?TõeväärtusTagastab, kas reaüksuse hind on muutunud.
.change_properties(hash new_properties, { message: String }) räsiMäärab reaüksusele uued atribuudid. Algne atribuutide räsi salvestatakse omadusse properties_was ning meetodile edastatav atribuutide räsi muutub reaüksuse uuteks atribuutideks.
.properties_wasräsiTagastab reaüksuse algse atribuutide räsi enne mis tahes muudatuste rakendamist.
.properties_changed?TõeväärtusTagastab, kas reaüksuse atribuudid on muutunud.
.split({ take: Integer })LineItemJagab reaüksuse kaheks reaüksuseks. take määrab, milline kogus algsest reaüksusest eemaldada, et luua uus reaüksus.

Meetodi .split näide

See näidisskript jagab reaüksuse nimega original_line_item kaheks. Uue reaüksuse kogus on 1 (määratud parameetriga take: 1). Seejärel rakendab skript uuele reaüksusele soodushinna koos sõnumiga „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

Reaüksuse skriptide skriptimeetodid, mis kasutavad objekti Variant
MeetodTagastustüüpKirjeldus
.compare_at_priceRahaTagastab variandi võrdlushinna. Kui variandil pole võrdlushinda, tagastab nil.

Tarneviisid

Tarneskriptides on kasutatavad järgmised meetodid:

Sisend

Tarneskriptide skriptimeetodid, mis kasutavad objekti Input
MeetodTagastustüüpKirjeldus
.shipping_ratesShippingRateListTagastab kõigi tarnetariifide loendi.

ShippingRateList

Tarneskriptide skriptimeetodid, mis kasutavad objekti ShippingRateList
MeetodTagastustüüpKirjeldus
.delete_ifShippingRateListKustutab tarnetariifid, kasutades valikulist koodiplokki. Vaata Ruby meetodi delete_if dokumentatsiooni.
.sort!ShippingRateListSordib tarnetariifid, kasutades võrdlusoperaatorit või valikulist koodiplokki. Vaata Ruby meetodi sort! dokumentatsiooni.
.sort_by!ShippingRateListSordib tarnetariifid, kasutades valikulist koodiplokki. Vaata Ruby meetodi sort_by! dokumentatsiooni.

ShippingRate

Tarneskriptide skriptimeetodid, mis kasutavad objekti ShippingRate
MeetodTagastustüüpKirjeldus
.codeSõneTagastab tarnetariifi koodi.
.markupRahaTagastab asjakohasel juhul tarnetariifi juurdehindluse.
.nameSõneTagastab tarnetariifi nime. Seda saab muuta, kasutades meetodit change_name.
.priceRahaTagastab tarnetariifi hinna.
.sourceSõneAsjakohasel juhul tagastab tarnetariifiga seotud allika (vedaja). Seda ei saa muuta.
.change_name(String new_name)Sõne Muudab tarnetariifi nime (kuni 255 tähemärki). Allikat ei ole võimalik muuta, kustutada ega peita.
.apply_discount(Money discount, { message: String })RahaRakendab määratud fikseeritud summa ulatuses allahindluse. Hinda ei saa langetada alla 0. Sõnum on kohustuslik.
.phone_required?TõeväärtusTagastab väärtuse true, kui tarnetariifi saamiseks on telefoninumber kohustuslik, ja väärtuse false, kui telefoninumber ei ole kohustuslik.

Makseviisid

Makseskriptides on kasutatavad järgmised meetodid:

Sisend

Makseskriptide skriptimeetodid, mis kasutavad objekti Input
MeetodTagastustüüpKirjeldus
.payment_gatewaysPaymentGatewaysListTagastab poe kõigi makselüüside loendi.

PaymentGatewayList

Makseskriptide skriptimeetodid, mis kasutavad objekti PaymentGatewayList
MeetodTagastustüüpKirjeldus
.delete_ifPaymentGatewayListKustutab makselüüsid, kasutades valikulist koodiplokki. Vaata Ruby meetodi delete_if dokumentatsiooni.
.sort!PaymentGatewayListSordib makselüüsid, kasutades võrdlusoperaatorit või valikulist koodiplokki. Vaata Ruby meetodi sort! dokumentatsiooni.
.sort_by!PaymentGatewayListSordib makselüüsid, kasutades valikulist koodiplokki. Vaata Ruby meetodi sort_by! dokumentatsiooni.

PaymentGateway

MeetodTagastustüüpKirjeldus
.nameSõneTagastab makselüüsi nime.
.enabled_card_brandsList<String>

Kui makselüüs toetab krediitkaarte, tagastab poe poolt aktsepteeritavate krediitkaarditüüpide loendi. Kui makselüüs krediitkaarte ei toeta, tagastab tühja loendi.

.change_name(String new_name)SõneMuudab makselüüsi nime. Logoga makselüüside nime ei saa muuta.

Näited

Järgmises reaüksuse skripti näites, kui klient tellib toote, mis ei ole kinkekaart, vähendatakse toote hinda 9 $ võrra. Samuti kuvatakse kogusummat, mille klient on sinu poe külastuste jooksul kulutanud:

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