Dokumentacja API Shopify Scripts

Skrypty są pisane przy użyciu API Ruby, które zapewnia dużą kontrolę i elastyczność.

Istnieją różne typy skryptów. Typ skryptu jest przypisywany podczas jego tworzenia w aplikacji Script Editor na podstawie szablonu skryptu wybranego na początku:

Skrypty pozycji pojedynczych

Skrypty pozycji pojedynczych wpływają na pozycje pojedyncze w koszyku i mogą zmieniać ceny oraz przyznawać rabaty. Skrypty te są uruchamiane po wprowadzeniu zmiany w koszyku.

Skrypty pozycji pojedynczych, które obejmują rabatem subskrypcję, mają zastosowanie tylko do pierwszej płatności za subskrypcję. Kolejne płatności nie są objęte rabatem w ramach skryptu.

Niektóre metody mogą być używane tylko w skryptach pozycji pojedynczych.

Skrypty wysyłki

Skrypty wysyłki wchodzą w interakcję z wysyłką, mogą zmieniać metody wysyłki i przyznawać rabaty na stawki wysyłki. Skrypty te są uruchamiane, gdy w procesie realizacji zakupu pojawi się strona z opcjami wysyłki.

Skrypty wysyłki, które obejmują rabatem stawkę za wysyłkę subskrypcji, mają zastosowanie tylko do pierwszej płatności za subskrypcję. Kolejne płatności nie są objęte rabatem w ramach skryptu.

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

Skrypty płatności

Skrypty płatności wchodzą w interakcję z płatnościami i mogą zmieniać nazwy, ukrywać i zmieniać kolejność bramek płatniczych. Pamiętaj, że skrypty płatności nie wchodzą w interakcję z bramkami płatniczymi wyświetlanymi przed ekranem realizacji zakupu, takimi jak Apple Pay. Skrypty te są uruchamiane, gdy w procesie realizacji zakupu pojawi się strona płatności.

Niektóre metody mogą być używane tylko w skryptach płatności.

Metody ogólne

Poniższych metod można używać w dowolnym typie skryptu:

Dane wejściowe

Metody wejściowe skryptu
MetodaTyp zwracanyOpis
.cartCartZwraca modyfikowalny obiekt koszyka.
.localeciąg znakówZwraca ustawienia regionalne klienta. Na przykład: en, fr lub pt-BR.

Cart

Obiekt koszyka jest dostępny tylko w sklepie online. Niektóre przerwane realizacje zakupu mają dostęp do obiektu koszyka. Jeśli jednak realizacja zakupu została zamknięta, a następnie klient odwiedza stronę przerwanej realizacji zakupu, jest on kierowany do wstępnie wypełnionej strony realizacji zakupu i obiekt koszyka już nie istnieje. Dzieje się tak, ponieważ witryna sklepu została pominięta przez e-mail dotyczący przerwanej realizacji zakupu.

Metody skryptu używające obiektu Cart
MetodaTyp zwracanyOpis
.customerCustomerZwraca właściciela koszyka (jeśli istnieje).
.shipping_addressShippingAddressZwraca adres wysyłki właściciela koszyka (jeśli istnieje).
.discount_coderóżny Zwraca:

discount_code jest obecny, jeśli do koszyka zastosowano rabat. Nie musi to oznaczać zmiany ceny koszyka. Na przykład, jeśli rabat dotyczy koszyków o wartości powyżej 50 USD, a skrypt zmniejsza cenę koszyka poniżej 50 USD, discount_code jest nadal obecny, ale cena koszyka się nie zmienia.

<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

Metody skryptu używające obiektu CartDiscount::FixedAmount
MetodaTyp zwracanyOpis
.codeCiąg znakówZwraca kod rabatowy użyty do zastosowania rabatu.
.amountMoneyZwraca kwotę pieniężną rabatu.
.reject({ message: String })nilOdrzuca kod rabatowy zastosowany do koszyka. Wymagany jest komunikat.
.rejected?BooleanZwraca informację, czy kod rabatowy został odrzucony.

CartDiscount::Percentage

Metody skryptu używające obiektu CartDiscount::Percentage
MetodaTyp zwracanyOpis
.codeCiąg znakówZwraca kod rabatowy użyty do zastosowania rabatu.
.percentageLiczba dziesiętnaZwraca wartość procentową rabatu.
.reject({ message: String })nilOdrzuca kod rabatowy zastosowany do koszyka. Wymagany jest komunikat.
.rejected?BooleanZwraca informację, czy kod rabatowy został odrzucony.

CartDiscount::Shipping

Metody skryptu używające obiektu CartDiscount::Shipping
MetodaTyp zwracanyOpis
.codeCiąg znakówZwraca kod rabatowy użyty do zastosowania rabatu.
.reject({ message: String })nilOdrzuca kod rabatowy zastosowany do koszyka. Wymagany jest komunikat.
.rejected?BooleanZwraca informację, czy kod rabatowy został odrzucony.

Klient

Metody skryptu używające obiektu Klient
MetodaTyp zwracanyOpis
.idLiczba całkowitaZwraca numer ID klienta.
.emailCiąg znakówZwraca adres e-mail klienta.
.tagsLista<Tag>Zwraca listę ciągów znaków reprezentujących tagi ustawione dla klienta.
.orders_countLiczba całkowitaZwraca łączną liczbę zamówień złożonych przez klienta.
.total_spentMoneyZwraca łączną kwotę wydaną przez klienta na wszystkie zamówienia.
.accepts_marketing?BooleanZwraca informację, czy klient akceptuje działania marketingowe.

LineItem

Metody skryptu używające obiektu LineItem
MetodaTyp zwracanyOpis
.gramsgramyZwraca łączną wagę pozycji pojedynczej.
.line_priceMoneyCena pozycji pojedynczej.
.discounted?BooleanZwraca informację, czy cena pozycji pojedynczej została obniżona za pomocą skryptu lub ręcznie zastosowanego rabatu. Użycie kodów rabatowych nie ma wpływu na zwracaną wartość.
.propertieshashZwraca właściwości, które zostały określone dla tej pozycji pojedynczej.
.variantWariantZwraca określony wariant produktu reprezentowany przez pozycję pojedynczą.
.quantityLiczba całkowitaZwraca ilość tej pozycji pojedynczej.
.selling_plan_idLiczba całkowitaZwraca ID planu sprzedaży dla pozycji pojedynczej. Ta metoda jest przydatna, gdy sklep sprzedaje subskrypcje i chcesz, aby skrypt wykrywał, kiedy wariant produktu jest sprzedawany w ramach subskrypcji.

Lista

Metody skryptu używające obiektu Lista
MetodaTyp zwracanyOpis
.newListaTworzy nowy obiekt reprezentujący listę.
.[]Element lub nil

Zwraca element o podanym indeksie.

.&Lista

Zwraca nową listę zawierającą elementy wspólne dla obu list, bez duplikatów.

.delete_ifListaUsuwa elementy za pomocą opcjonalnego bloku kodu. Zobacz dokumentację metody delete_if w języku Ruby.
.empty?Boolean

Zwraca wartość true, jeśli lista nie zawiera żadnych elementów.

.firstElement lub nil

Zwraca pierwszy element lub nil, jeśli lista jest pusta.

.index(*args, &block)liczba całkowita lub nil

Zwraca indeks pierwszego elementu listy. Jeśli zamiast argumentu podany jest blok, zwraca indeks pierwszego elementu, dla którego blok jest prawdziwy.

.rindex(*args, &block)liczba całkowita lub nil

Zwraca indeks ostatniego elementu listy. Jeśli zamiast argumentu podany jest blok, zwraca indeks pierwszego elementu, dla którego blok jest prawdziwy.

.lastElement lub nil

Zwraca ostatni element lub nil, jeśli lista jest pusta.

.lengthliczba całkowita

Zwraca liczbę elementów na liście.

.sizeliczba całkowita

Alias dla length.

.each(*args, &block)Lista

Wywołuje blok jeden raz dla każdego elementu na liście, przekazując element jako parametr do bloku.

ShippingAddress

Metody skryptu używające obiektu ShippingAddress
MetodaTyp zwracanyOpis
.nameciąg znakówZwraca imię i nazwisko osoby powiązanej z adresem wysyłki.
.address1ciąg znakówZwraca część adresu wysyłki obejmującą ulicę.
.address2ciąg znakówZwraca opcjonalne dodatkowe pole części adresu wysyłki obejmującej ulicę.
.phoneciąg znakówZwraca numer telefonu adresu wysyłki.
.cityciąg znakówZwraca miasto adresu wysyłki.
.zipciąg znakówZwraca kod pocztowy adresu wysyłki.
.provinceciąg znakówZwraca prowincję/stan adresu wysyłki.
.province_codeciąg znakówZwraca skróconą wartość prowincji/stanu adresu wysyłki.
.country_codeciąg znakówZwraca skróconą wartość kraju adresu wysyłki.

Money

Metody skryptu używające obiektu Money
MetodaTyp zwracanyOpis
.derived_from_presentment(customer_cents:X)MoneyKonwertuje kwotę (w centach) z lokalnej waluty klienta (waluty prezentacji) na walutę sklepu. Ta metoda akceptuje parametr customer_cents, który przyjmuje liczbę w centach. Na przykład: Money.derived_from_presentment(customer_cents: 500).
.newMoneyTworzy nowy obiekt reprezentujący cenę.
.zeroMoney

Tworzy nowy obiekt z ceną równą zero.

+MoneyDodaje dwa obiekty Money.
-MoneyOdejmuje jeden obiekt Money od drugiego.
*MoneyMnoży obiekt Money przez liczbę.

Przykłady dla Money

Money.new(cents: 1000)

Tworzy obiekt Money reprezentujący 1000 centów, czyli 10 USD.

Money.new(cents: 100) * 50

Tworzy obiekt Money reprezentujący 1 USD, a następnie mnoży tę kwotę przez 50. Zwraca obiekt Money reprezentujący 50 USD.

Wariant

Metody skryptowe dla obiektu Variant
MetodaTyp zwracanyOpis
.idLiczba całkowitaZwraca numer ID wariantu.
.priceMoneyZwraca cenę jednostkową wariantu.
.productProductZwraca powiązany produkt wariantu.
.skusList<String>Zwraca jednostki magazynowe (SKU) wariantu, które są często używane do śledzenia zapasów.
Skrypty ShopifyCiąg znakówZwraca tytuł wariantu.

Produkt

Metody skryptowe dla obiektu Product
MetodaTyp zwracanyOpis
.idLiczba całkowitaZwraca numer ID produktu.
.gift_card?BooleanZwraca informację, czy produkt jest kartą prezentową.
.tagsLista<Tag>Zwraca listę ciągów znaków reprezentujących tagi ustawione dla tego produktu.
.product_typeCiąg znakówKategoryzacja, którą można przypisać do produktu, powszechnie używana do filtrowania i wyszukiwania.
.vendorCiąg znakówZwraca dostawcę tego produktu.

Kernel

Kernel to moduł języka Ruby dołączany do każdej klasy. Dzięki temu jego metody są dostępne dla każdego obiektu. Metody te działają w ten sam sposób co funkcje globalne w innych językach.

Metody skryptowe dla obiektu Kernel
MetodaTyp zwracanyOpis
.exitbrakKończy wykonanie bieżącego skryptu bez błędu. Jeśli zostanie to uruchomione, zanim cokolwiek zostanie przypisane do Output.cart, skrypt nie przyniesie żadnego efektu. Jest to przydatny sposób na zakończenie skryptów, na przykład, jeśli klient nie jest uprawniony do uruchomienia skryptu.

Przykład dla Kernel

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

Metody pozycji pojedynczych

Poniższe metody są dostępne tylko w skryptach pozycji pojedynczych:

Cart

Metody skryptowe dla obiektu Cart w skryptach pozycji pojedynczych
MetodaTyp zwracanyOpis
.subtotal_price_wasMoneyZwraca sumę częściową koszyka przed zastosowaniem jakichkolwiek rabatów.
.subtotal_price_changed?BooleanZwraca informację, czy suma częściowa uległa zmianie.

LineItem

Metody skryptowe dla obiektu LineItem w skryptach pozycji pojedynczych
MetodaTyp zwracanyOpis
.change_line_price(Money new_price, { message: String }) MoneyZmienia cenę pozycji pojedynczej na określoną kwotę. Wymagany jest komunikat. new_price musi być niższa od bieżącej ceny.
.original_line_priceMoneyZwraca pierwotną cenę pozycji pojedynczej przed zastosowaniem skryptów i rabatów.
.line_price_wasMoneyZwraca cenę pozycji pojedynczej przed wprowadzeniem zmian przez bieżący skrypt.
.line_price_changed?BooleanZwraca informację, czy cena pozycji pojedynczej uległa zmianie.
.change_properties(hash new_properties, { message: String }) hashUstawia nowe właściwości dla pozycji pojedynczej. Oryginalny hash właściwości jest przechowywany w properties_was, a hash właściwości przekazywany do metody staje się nowymi właściwościami pozycji pojedynczej.
.properties_washashZwraca oryginalny hash właściwości pozycji pojedynczej sprzed zastosowania jakichkolwiek zmian.
.properties_changed?BooleanZwraca informację, czy właściwości pozycji pojedynczej zostały zmienione.
.split({ take: Integer })LineItemDzieli pozycję pojedynczą na dwie pozycje pojedyncze. take określa, jaką ilość należy usunąć z oryginalnej pozycji pojedynczej w celu utworzenia nowej pozycji pojedynczej.

Przykład dla .split

Ten przykładowy skrypt dzieli pozycję pojedynczą o nazwie original_line_item na dwie pozycje pojedyncze. Nowa pozycja pojedyncza ma ilość równą 1 (określoną przez take: 1). Następnie skrypt stosuje obniżoną cenę do nowej pozycji pojedynczej z komunikatem „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

Wariant

Metody skryptowe dla obiektu Variant w skryptach pozycji pojedynczych
MetodaTyp zwracanyOpis
.compare_at_priceMoneyZwraca cenę porównawczą wariantu. Zwraca wartość nil, jeśli wariant nie ma ceny porównawczej.

Metody wysyłki

Poniższe metody są dostępne w skryptach wysyłki:

Dane wejściowe

Metody skryptowe dla obiektu Input w skryptach wysyłki
MetodaTyp zwracanyOpis
.shipping_ratesShippingRateListZwraca listę wszystkich stawek wysyłki.

ShippingRateList

Metody skryptu używające obiektu ShippingRateList w skryptach wysyłki
MetodaTyp zwracanyOpis
.delete_ifShippingRateListUsuwa stawki wysyłki za pomocą opcjonalnego bloku kodu. Zapoznaj się z dokumentacją dla metody delete_if języka Ruby.
.sort!ShippingRateListSortuje stawki wysyłki za pomocą operatora porównania lub opcjonalnego bloku kodu. Zapoznaj się z dokumentacją dla metody sort! języka Ruby.
.sort_by!ShippingRateListSortuje stawki wysyłki za pomocą opcjonalnego bloku kodu. Zapoznaj się z dokumentacją dla metody sort_by! języka Ruby.

ShippingRate

Metody skryptu używające obiektu ShippingRate w skryptach wysyłki
MetodaTyp zwracanyOpis
.codeCiąg znakówZwraca kod stawki wysyłki.
.markupMoneyZwraca narzut dla stawki wysyłki, jeśli ma to zastosowanie.
.nameCiąg znakówZwraca nazwę stawki wysyłki. Można ją zmodyfikować za pomocą metody change_name.
.priceMoneyZwraca cenę stawki wysyłki.
.sourceCiąg znakówZwraca źródło (przewoźnika) powiązane ze stawką wysyłki, jeśli jest to istotne. Nie można go modyfikować.
.change_name(String new_name)Ciąg znaków Zmienia nazwę (maksymalnie 255 znaków) stawki wysyłki. Zmiana, usunięcie lub ukrycie źródła nie jest możliwe.
.apply_discount(Money discount, { message: String })MoneyStosuje rabat o określonej ustalonej kwocie. Cena nie może zostać obniżona poniżej 0. Wiadomość jest wymagana.
.phone_required?BooleanZwraca wartość true, jeśli do uzyskania stawki wysyłki wymagany jest numer telefonu, lub false, jeśli numer telefonu nie jest wymagany.

Metody płatności

Poniższe metody mogą być używane w skryptach płatności:

Dane wejściowe

Metody skryptu używające obiektu Input w skryptach płatności
MetodaTyp zwracanyOpis
.payment_gatewaysPaymentGatewaysListZwraca listę wszystkich bramek płatniczych w sklepie.

PaymentGatewayList

Metody skryptu używające obiektu PaymentGatewayList w skryptach płatności
MetodaTyp zwracanyOpis
.delete_ifPaymentGatewayListUsuwa bramki płatnicze za pomocą opcjonalnego bloku kodu. Zapoznaj się z dokumentacją dla metody delete_if języka Ruby.
.sort!PaymentGatewayListSortuje bramki płatnicze za pomocą operatora porównania lub opcjonalnego bloku kodu. Zapoznaj się z dokumentacją dla metody sort! języka Ruby.
.sort_by!PaymentGatewayListSortuje bramki płatnicze za pomocą opcjonalnego bloku kodu. Zapoznaj się z dokumentacją dla metody sort_by! języka Ruby.

PaymentGateway

MetodaTyp zwracanyOpis
.nameCiąg znakówZwraca nazwę bramki płatniczej.
.enabled_card_brandsList<String>

Jeśli bramka płatnicza obsługuje karty kredytowe, zwraca listę typów kart kredytowych akceptowanych przez sklep. Jeśli bramka nie obsługuje kart kredytowych, zwraca pustą listę.

.change_name(String new_name)Ciąg znakówZmienia nazwę bramki płatniczej. Nie można zmieniać nazw bramek płatniczych z logo.

Przykłady

W poniższym przykładzie skryptu dla pozycji pojedynczej, gdy klient zamawia produkt, który nie jest kartą prezentową, cena produktu jest obniżana o 9 USD. Ponadto wyświetlana jest łączna kwota, którą klient wydał podczas wszystkich wizyt w Twoim sklepie:

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

Dowiedz się więcej

Dowiedz się więcej na temat: