„Shopify“ scenarijų API vadovas
Scenarijai rašomi naudojant „Ruby“ API, kuri suteikia daug valdymo galimybių ir lankstumo.
Yra skirtingų tipų scenarijų. Scenarijui tipas priskiriamas, kai jį kuriate programėlėje „Script Editor“, atsižvelgiant į tai, kurį scenarijaus šabloną pasirenkate pradžiai:
Prekių pozicijų scenarijai
Prekių pozicijų scenarijai paveikia krepšelyje esančias prekių pozicijas ir gali keisti kainas bei suteikti nuolaidas. Šie scenarijai paleidžiami, kai atliekami pakeitimai krepšelyje.
Prekių pozicijų scenarijai, taikantys nuolaidą prenumeratai, galioja tik pirmajam prenumeratos mokėjimui. Vėlesniems mokėjimams scenarijus nuolaidos netaiko.
Kai kurie metodai gali būti naudojami tik prekių pozicijų scenarijuose.
Pristatymo scenarijai
Pristatymo scenarijai sąveikauja su pristatymu ir gali keisti pristatymo būdus bei taikyti nuolaidas pristatymo tarifams. Šie scenarijai paleidžiami, kai atsiskaitymo metu pasiekiamas pristatymo parinkčių puslapis.
Pristatymo scenarijai, taikantys nuolaidą prenumeratos pristatymo tarifui, galioja tik pirmajam prenumeratos mokėjimui. Vėlesniems mokėjimams scenarijus nuolaidos netaiko.
<p>Some methods <a href="#shipping-methods">can only be used in shipping scripts</a>.</p>Mokėjimų valdymo scenarijai
Mokėjimų valdymo scenarijai sąveikauja su mokėjimais ir gali pervardyti, paslėpti bei pertvarkyti mokėjimo sietuvus. Atminkite, kad mokėjimų valdymo scenarijai nesąveikauja su mokėjimo sietuvais, rodomais prieš atsiskaitymo ekraną, pvz., „Apple Pay“. Šie scenarijai paleidžiami, kai atsiskaitymo metu pasiekiamas mokėjimo puslapis.
Kai kurie metodai gali būti naudojami tik mokėjimų valdymo scenarijuose.
Šiame puslapyje
Bendrieji metodai
Toliau nurodytus metodus galima naudoti bet kokio tipo scenarijuose:
Įvestis
| Metodas | Grąžinimo tipas | Aprašas |
|---|---|---|
| .cart | Krepšelis | Grąžina keičiamą krepšelio objektą. |
| .locale | eilutė | Grąžina kliento lokalę. Pavyzdžiui, en, fr arba pt-BR. |
Krepšelis
Krepšelio objektas pasiekiamas tik internetinėje parduotuvėje. Kai kurie nebaigti atsiskaitymai turi prieigą prie krepšelio objekto. Tačiau, jei atsiskaitymas buvo uždarytas, o tada klientas apsilanko nebaigto atsiskaitymo puslapyje, jis nukreipiamas į iš anksto užpildytą atsiskaitymą ir krepšelio objektas nebeegzistuoja. Taip yra todėl, kad vitrina buvo apeita naudojant apleisto krepšelio atsiskaitymo el. laišką.
| Metodas | Grąžinimo tipas | Aprašas |
|---|---|---|
| .customer | Klientas | Grąžina krepšelio savininką (jei toks yra). |
| .shipping_address | ShippingAddress | Grąžina krepšelio savininko pristatymo adresą (jei toks yra). |
| .discount_code | kinta |
Grąžina:
|
CartDiscount::FixedAmount
| Metodas | Grąžinimo tipas | Aprašas |
|---|---|---|
| .code | Eilutė | Grąžina nuolaidos kodą, kuris buvo panaudotas nuolaidai pritaikyti. |
| .amount | Pinigai | Grąžina piniginę nuolaidos sumą. |
| .reject({ message: String }) | nil | Atmeta krepšeliui pritaikytą nuolaidos kodą. Būtina nurodyti message. |
| .rejected? | Bulio | Grąžina, ar nuolaidos kodas buvo atmestas. |
CartDiscount::Percentage
| Metodas | Grąžinimo tipas | Aprašas |
|---|---|---|
| .code | Eilutė | Grąžina nuolaidos kodą, kuris buvo panaudotas nuolaidai pritaikyti. |
| .percentage | Dešimtainis | Grąžina nuolaidos dydį procentais. |
| .reject({ message: String }) | nil | Atmeta krepšeliui pritaikytą nuolaidos kodą. Būtina nurodyti message. |
| .rejected? | Bulio | Grąžina, ar nuolaidos kodas buvo atmestas. |
CartDiscount::Shipping
| Metodas | Grąžinimo tipas | Aprašas |
|---|---|---|
| .code | Eilutė | Grąžina nuolaidos kodą, kuris buvo panaudotas nuolaidai pritaikyti. |
| .reject({ message: String }) | nil | Atmeta krepšeliui pritaikytą nuolaidos kodą. Būtina nurodyti message. |
| .rejected? | Bulio | Grąžina, ar nuolaidos kodas buvo atmestas. |
Klientas
| Metodas | Grąžinimo tipas | Aprašas |
|---|---|---|
| .id | Integer | Grąžina kliento ID numerį. |
| Eilutė | Grąžina kliento el. pašto adresą. | |
| .tags | List<Tag> | Grąžina eilučių sąrašą, kuriame pateikiamos visos klientui priskirtos žymos. |
| .orders_count | Integer | Grąžina bendrą kliento pateiktų užsakymų skaičių. |
| .total_spent | Pinigai | Grąžina bendrą sumą, kurią klientas išleido visiems užsakymams. |
| .accepts_marketing? | Bulio | Grąžina, ar klientas sutinka gauti rinkodaros pranešimus. |
Prekių pozicija
| Metodas | Grąžinimo tipas | Aprašas |
|---|---|---|
| .grams | gramai | Grąžina bendrą prekių pozicijos svorį. |
| .line_price | Pinigai | Prekių pozicijos kaina. |
| .discounted? | Bulio | Grąžina, ar prekių pozicijos kainai nuolaida buvo pritaikyta scenarijumi, ar rankiniu būdu. Nuolaidų kodų naudojimas grąžinamai vertei įtakos neturi. |
| .properties | hash | Grąžina ypatybes, kurios buvo nurodytos šiai prekių pozicijai. |
| .variant | Variantas | Grąžina konkretų gaminio variantą, kurį atitinka ši prekių pozicija. |
| .quantity | Integer | Grąžina šios prekių pozicijos kiekį. |
| .selling_plan_id | Integer | Grąžina prekių pozicijos pardavimo plano ID. Šis metodas naudingas, kai parduotuvė parduoda prenumeratas ir norite, kad scenarijus aptiktų, kai produkto variantas yra parduodamas kaip prenumerata. |
Sąrašas
| Metodas | Grąžinimo tipas | Aprašas |
|---|---|---|
| .new | Sąrašas | Sukuria naują objektą, atitinkantį sąrašą. |
| .[] | Elementas arba nil |
Grąžina elementą pagal nurodytą indeksą. |
| .& | Sąrašas |
Grąžina naują sąrašą, kuriame yra abiem sąrašams bendri elementai be dublikatų. |
| .delete_if | Sąrašas | Ištrina elementus naudojant pasirenkamą kodo bloką. Žr. „Ruby“ delete_if metodo dokumentaciją. |
| .empty? | Bulio |
Grąžina |
| .first | Elementas arba nil |
Grąžina pirmąjį elementą arba |
| .index(*args, &block) | int arba nil |
Grąžina pirmojo sąrašo elemento indeksą. Jei vietoj argumento pateikiamas blokas, grąžinamas pirmojo elemento, kuriam blokas grąžina reikšmę „true“, indeksas. |
| .rindex(*args, &block) | int arba nil |
Grąžina paskutinio sąrašo elemento indeksą. Jei vietoj argumento pateikiamas blokas, grąžinamas pirmojo elemento, kuriam blokas grąžina reikšmę „true“, indeksas. |
| .last | Elementas arba nil |
Grąžina paskutinį elementą arba |
| .length | int |
Grąžina elementų skaičių sąraše. |
| .size | int |
„length“ pseudonimas. |
| .each(*args, &block) | Sąrašas |
Iškviečia bloką vieną kartą kiekvienam sąrašo elementui, perduodant elementą kaip parametrą blokui. |
Pristatymo adresas
| Metodas | Grąžinimo tipas | Aprašas |
|---|---|---|
| .name | eilutė | Grąžina asmens, susieto su pristatymo adresu, vardą ir pavardę. |
| .address1 | eilutė | Grąžina pristatymo adreso gatvės adreso dalį. |
| .address2 | eilutė | Grąžina pasirenkamą papildomą pristatymo adreso gatvės adreso dalies lauką. |
| .phone | eilutė | Grąžina pristatymo adreso telefono numerį. |
| .city | eilutė | Grąžina pristatymo adreso miestą. |
| .zip | eilutė | Grąžina pristatymo adreso ZIP kodą. |
| .province | eilutė | Grąžina pristatymo adreso provinciją / valstiją. |
| .province_code | eilutė | Grąžina sutrumpintą pristatymo adreso provincijos / valstijos reikšmę. |
| .country_code | eilutė | Grąžina sutrumpintą pristatymo adreso šalies reikšmę. |
Pinigai
| Metodas | Grąžinimo tipas | Aprašas |
|---|---|---|
| .derived_from_presentment(customer_cents:X) | Pinigai | Konvertuoja sumą (centais) iš kliento vietinės (pristatymo) valiutos į Jūsų parduotuvės valiutą. Šis metodas priima parametrą customer_cents, kuris priima skaičių centais. Pavyzdžiui, Money.derived_from_presentment(customer_cents: 500). |
| .new | Pinigai | Sukuria naują objektą, kuris vaizduoja kainą. |
| .zero | Pinigai |
Sukuria naują objektą, kurio kaina lygi nuliui. |
| + | Pinigai | Sudedami du Money objektai. |
| - | Pinigai | Iš vieno Money objekto atimamas kitas. |
| * | Pinigai | Money objektas padauginamas iš skaičiaus. |
Money pavyzdžiai
Money.new(cents: 1000)Sukuria Money objektą, vaizduojantį 1 000 centų, arba 10 USD.
Money.new(cents: 100) * 50Sukuria Money objektą, vaizduojantį 1 USD, tada padaugina šią sumą iš 50. Grąžina Money objektą, vaizduojantį 50 USD.
Variantas
| Metodas | Grąžinimo tipas | Aprašas |
|---|---|---|
| .id | Integer | Grąžina varianto ID numerį. |
| .price | Pinigai | Grąžina varianto vieneto kainą. |
| .product | Produktas | Grąžina susijusį varianto produktą. |
| .skus | List<String> | Grąžina varianto atsargų laikymo vienetus (SKU), kurie dažnai naudojami inventoriui sekti. |
| .title | Eilutė | Grąžina varianto pavadinimą. |
Produktas
| Metodas | Grąžinimo tipas | Aprašas |
|---|---|---|
| .id | Integer | Grąžina produkto ID numerį. |
| .gift_card? | Bulio | Grąžina, ar produktas yra dovanų kortelė. |
| .tags | List<Tag> | Grąžina eilučių, vaizduojančių šiam produktui nustatytas žymas, sąrašą. |
| .product_type | Eilutė | Kategorija, kuria galima pažymėti produktą ir kuri dažniausiai naudojama filtravimui bei paieškai. |
| .vendor | Eilutė | Grąžina šio produkto pardavėją. |
Kernel
Kernel yra „Ruby“ modulis, kuris įtraukiamas į kiekvieną klasę. Dėl to jo metodai pasiekiami kiekvienam objektui. Šie metodai veikia taip pat, kaip globaliosios funkcijos kitose kalbose.
| Metodas | Grąžinimo tipas | Aprašas |
|---|---|---|
| .exit | nėra | Užbaigia dabartinio scenarijaus vykdymą be klaidų. Jei tai įvykdoma prieš ką nors priskiriant Output.cart, scenarijus neturi jokio poveikio. Tai naudingas būdas išeiti iš scenarijų, pavyzdžiui, jei klientas negali paleisti scenarijaus. |
Kernel pavyzdys
customer = Input.cart.customer
if customer && customer.email.end_with?("@mycompany.com")
# Employees are not eligible for this promotion.
exit
endPrekių pozicijų metodai
Toliau nurodytus metodus galima naudoti tik užsakymo eilučių skriptuose:
Krepšelis
| Metodas | Grąžinimo tipas | Aprašas |
|---|---|---|
| .subtotal_price_was | Pinigai | Grąžina krepšelio tarpinę sumą prieš pritaikant bet kokias nuolaidas. |
| .subtotal_price_changed? | Bulio | Grąžina, ar pasikeitė tarpinė suma. |
Prekių pozicija
| Metodas | Grąžinimo tipas | Aprašas |
|---|---|---|
| .change_line_price(Money new_price, { message: String }) | Pinigai | Pakeičia prekės pozicijos kainą į nurodytą sumą. Būtina nurodyti message. new_price turi būti mažesnė už dabartinę kainą. |
| .original_line_price | Pinigai | Grąžina pradinę prekės pozicijos kainą prieš pritaikant scenarijus ir nuolaidas. |
| .line_price_was | Pinigai | Grąžina prekės pozicijos kainą prieš dabartiniam scenarijui pritaikant pakeitimus. |
| .line_price_changed? | Bulio | Grąžina, ar pasikeitė prekės pozicijos kaina. |
| .change_properties(hash new_properties, { message: String }) | hash | Nustato naujas prekių pozicijos ypatybes. Pradinis ypatybių maišos kodas (hash) saugomas properties_was, o metodui perduotas ypatybių maišos kodas tampa naujomis prekių pozicijos ypatybėmis. |
| .properties_was | hash | Grąžina pradinį prekės pozicijos ypatybių maišos kodą (hash) prieš pritaikant bet kokius pakeitimus. |
| .properties_changed? | Bulio | Grąžina, ar buvo pakeistos prekių pozicijos ypatybės. |
| .split({ take: Integer }) | Prekių pozicija | Padalija vieną prekių poziciją į dvi. take nurodo, kokį kiekį reikia atskirti nuo pradinės prekių pozicijos, norint sukurti naują prekių poziciją. |
.split pavyzdys
Šis scenarijaus pavyzdys padalija prekių poziciją, pavadintą original_line_item, į dvi prekių pozicijas. Naujos prekių pozicijos kiekis yra 1 (nurodyta take: 1). Tada scenarijus pritaiko naujai prekių pozicijai kainą su nuolaida ir pranešimą „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
endVariantas
| Metodas | Grąžinimo tipas | Aprašas |
|---|---|---|
| .compare_at_price | Pinigai | Grąžina varianto palyginamąją kainą. Grąžina nil, jei variantas neturi palyginamosios kainos. |
Pristatymo metodai
Šiuos metodus galima naudoti pristatymo scenarijuose:
Įvestis
| Metodas | Grąžinimo tipas | Aprašas |
|---|---|---|
| .shipping_rates | ShippingRateList | Grąžina visų siuntimo tarifų sąrašą. |
ShippingRateList
| Metodas | Grąžinimo tipas | Aprašas |
|---|---|---|
| .delete_if | ShippingRateList | Ištrina siuntimo tarifus naudojant pasirinktinį kodo bloką. Žr. dokumentaciją apie „Ruby“ delete_if metodą. |
| .sort! | ShippingRateList | Surūšiuoja siuntimo tarifus naudojant palyginimo operatorių arba pasirinktinį kodo bloką. Žr. dokumentaciją apie „Ruby“ sort! metodą. |
| .sort_by! | ShippingRateList | Surūšiuoja siuntimo tarifus naudojant pasirinktinį kodo bloką. Žr. dokumentaciją apie „Ruby“ sort_by! metodą. |
ShippingRate
| Metodas | Grąžinimo tipas | Aprašas |
|---|---|---|
| .code | Eilutė | Grąžina siuntimo tarifo kodą. |
| .markup | Pinigai | Grąžina siuntimo tarifo antkainį, jei taikoma. |
| .name | Eilutė | Grąžina siuntimo tarifo pavadinimą. Jį galima modifikuoti naudojant metodą change_name. |
| .price | Pinigai | Grąžina siuntimo tarifo kainą. |
| .source | Eilutė | Grąžina su siuntimo tarifu susietą šaltinį (vežėją), jei taikoma. Jo negalima modifikuoti. |
| .change_name(String new_name) | Eilutė | Pakeičia siuntimo tarifo pavadinimą (ne daugiau kaip 255 simboliai). Šaltinio negalima pakeisti, ištrinti ar paslėpti. |
| .apply_discount(Money discount, { message: String }) | Pinigai | Pritaiko nurodytos fiksuotos sumos nuolaidą. Kaina negali būti mažesnė nei 0. Būtina nurodyti pranešimą. |
| .phone_required? | Bulio | Grąžina reikšmę true, jei norint gauti siuntimo tarifą būtina nurodyti telefono numerį, arba reikšmę false, jei telefono numeris nebūtinas. |
Mokėjimo būdai
Mokėjimų valdymo scenarijuose galima naudoti šiuos metodus:
Įvestis
| Metodas | Grąžinimo tipas | Aprašas |
|---|---|---|
| .payment_gateways | PaymentGatewaysList | Grąžina visų parduotuvės mokėjimo sietuvų sąrašą. |
PaymentGatewayList
| Metodas | Grąžinimo tipas | Aprašas |
|---|---|---|
| .delete_if | PaymentGatewayList | Ištrina mokėjimo sietuvus naudojant pasirinktinį kodo bloką. Žr. dokumentaciją apie „Ruby“ delete_if metodą. |
| .sort! | PaymentGatewayList | Surūšiuoja mokėjimo sietuvus naudojant palyginimo operatorių arba pasirinktinį kodo bloką. Žr. dokumentaciją apie „Ruby“ sort! metodą. |
| .sort_by! | PaymentGatewayList | Surūšiuoja mokėjimo sietuvus naudojant pasirinktinį kodo bloką. Žr. dokumentaciją apie „Ruby“ sort_by! metodą. |
PaymentGateway
| Metodas | Grąžinimo tipas | Aprašas |
|---|---|---|
| .name | Eilutė | Grąžina mokėjimo sietuvo pavadinimą. |
| .enabled_card_brands | List<String> |
Jei mokėjimo sietuvas palaiko kreditines korteles, grąžinamas parduotuvės priimamų kreditinių kortelių tipų sąrašas. Jei sietuvas nepalaiko kreditinių kortelių, grąžinamas tuščias sąrašas. |
| .change_name(String new_name) | Eilutė | Pakeičia mokėjimo sietuvo pavadinimą. Mokėjimo sietuvų su logotipais pervardyti negalima. |
Pavyzdžiai
Toliau pateiktame prekių pozicijų scenarijaus pavyzdyje, kai klientas užsako produktą, kuris nėra dovanų kortelė, produkto kaina sumažinama 9 $. Taip pat rodoma bendra suma, kurią klientas išleido per visus apsilankymus Jūsų parduotuvėje:
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
Sužinoti daugiau
Sužinokite daugiau apie: