Referensi API Skrip Shopify

Skrip ditulis dengan API Ruby yang memberi Anda banyak kontrol dan fleksibilitas.

Ada berbagai jenis skrip. Sebuah skrip diberi jenis saat Anda membuatnya di aplikasi Script Editor, berdasarkan templat skrip yang Anda pilih untuk memulai:

Skrip item pesanan

Skrip item pesanan memengaruhi item pesanan di keranjang dan dapat mengubah harga serta memberikan diskon. Skrip ini dijalankan saat ada perubahan yang dibuat pada keranjang.

Skrip item pesanan yang memberikan diskon pada langganan hanya berlaku untuk pembayaran pertama langganan tersebut. Pembayaran berikutnya tidak didiskon oleh skrip.

Beberapa metode hanya dapat digunakan dalam skrip item pesanan.

Skrip pengiriman

Skrip pengiriman berinteraksi dengan pengiriman, dan dapat mengubah metode pengiriman serta memberikan diskon pada tarif pengiriman. Skrip ini dijalankan saat checkout mencapai halaman opsi pengiriman.

Skrip pengiriman yang memberikan diskon pada tarif pengiriman langganan hanya berlaku untuk pembayaran pertama langganan tersebut. Pembayaran berikutnya tidak didiskon oleh skrip.

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

Skrip pembayaran

Skrip pembayaran berinteraksi dengan pembayaran, dan dapat mengganti nama, menyembunyikan, dan menyusun ulang gerbang pembayaran. Perhatikan bahwa skrip pembayaran tidak berinteraksi dengan gerbang pembayaran yang ditampilkan sebelum layar checkout, seperti Apple Pay. Skrip ini dijalankan saat checkout mencapai halaman pembayaran.

Beberapa metode hanya dapat digunakan dalam skrip pembayaran.

Metode umum

Metode berikut dapat digunakan dalam semua jenis skrip:

Input

Metode input skrip
MetodeJenis hasilDeskripsi
.cartKeranjangMengembalikan objek keranjang yang dapat diubah.
.localestringMengembalikan lokal pelanggan. Misalnya, en, fr, atau pt-BR.

Keranjang

Objek keranjang hanya tersedia di toko online. Beberapa checkout yang ditinggalkan memiliki akses ke objek keranjang. Namun, jika checkout telah ditutup lalu pelanggan mengunjungi checkout yang ditinggalkan, pelanggan akan diarahkan ke checkout yang sudah terisi dan objek keranjang tidak ada lagi. Hal ini karena etalase toko online telah dilewati oleh email pengingat checkout.

Metode skrip menggunakan objek Keranjang
MetodeJenis hasilDeskripsi
.customerPelangganMengembalikan pemilik keranjang (jika ada).
.shipping_addressAlamat pengirimanMengembalikan alamat pengiriman pemilik keranjang (jika ada).
.discount_codebervariasi Mengembalikan:

discount_code ada jika diskon telah diterapkan pada keranjang. Ini tidak berarti bahwa harga keranjang berubah. Misalnya, jika diskon berlaku untuk keranjang di atas $50, dan skrip mengurangi harga keranjang di bawah $50, discount_code akan tetap ada, tetapi harga keranjang tidak berubah.

<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 skrip menggunakan objek CartDiscount::FixedAmount
MetodeJenis hasilDeskripsi
.codeStringMengembalikan kode diskon yang digunakan untuk menerapkan diskon.
.amountUangMengembalikan jumlah diskon dalam bentuk uang.
.reject({ message: String })nilMenolak kode diskon yang diterapkan ke keranjang. Diperlukan message.
.rejected?BooleanMengembalikan apakah kode diskon ditolak.

CartDiscount::Percentage

Metode skrip menggunakan objek CartDiscount::Percentage
MetodeJenis hasilDeskripsi
.codeStringMengembalikan kode diskon yang digunakan untuk menerapkan diskon.
.percentageDesimalMengembalikan jumlah persentase diskon.
.reject({ message: String })nilMenolak kode diskon yang diterapkan ke keranjang. Diperlukan message.
.rejected?BooleanMengembalikan apakah kode diskon ditolak.

CartDiscount::Shipping

Metode skrip menggunakan objek CartDiscount::Shipping
MetodeJenis hasilDeskripsi
.codeStringMengembalikan kode diskon yang digunakan untuk menerapkan diskon.
.reject({ message: String })nilMenolak kode diskon yang diterapkan ke keranjang. Diperlukan message.
.rejected?BooleanMengembalikan apakah kode diskon ditolak.

Pelanggan

Metode skrip menggunakan objek Pelanggan
MetodeJenis hasilDeskripsi
.idIntegerMengembalikan nomor ID pelanggan.
.emailStringMengembalikan alamat email pelanggan.
.tagsDaftar<Tag>Mengembalikan daftar string yang mewakili tag apa pun yang diatur untuk pelanggan.
.orders_countIntegerMengembalikan jumlah total pesanan yang telah dibuat oleh pelanggan.
.total_spentUangMengembalikan jumlah total yang telah dibelanjakan pelanggan untuk semua pesanan.
.accepts_marketing?BooleanMengembalikan apakah pelanggan menerima pemasaran.

Item Pesanan

Metode skrip menggunakan objek Item Pesanan
MetodeJenis hasilDeskripsi
.gramsgramMengembalikan berat total item pesanan.
.line_priceUangHarga item pesanan.
.discounted?BooleanMengembalikan apakah harga item pesanan telah didiskon oleh skrip atau diskon yang diterapkan secara manual. Penggunaan kode diskon tidak memengaruhi nilai yang dikembalikan.
.propertieshashMengembalikan properti yang ditentukan untuk item pesanan ini.
.variantVarianMengembalikan varian produk spesifik yang diwakili oleh item pesanan.
.quantityIntegerMengembalikan kuantitas item pesanan ini.
.selling_plan_idIntegerMengembalikan ID rencana penjualan untuk item pesanan. Metode ini berguna saat toko menjual langganan dan Anda ingin skrip mendeteksi saat varian produk dijual sebagai langganan.

Daftar

Metode skrip menggunakan objek Daftar
MetodeJenis hasilDeskripsi
.newDaftarMembuat objek baru untuk mewakili daftar.
.[]Elemen atau nil

Mengembalikan elemen pada indeks yang ditentukan.

.&Daftar

Mengembalikan daftar baru yang berisi elemen yang sama untuk kedua daftar, tanpa duplikat.

.delete_ifDaftarHapus elemen menggunakan blok kode opsional. Lihat dokumentasi untuk metode delete_if Ruby.
.empty?Boolean

Mengembalikan true jika daftar tidak berisi elemen.

.firstElemen atau nil

Mengembalikan elemen pertama atau nil jika daftar kosong.

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

Mengembalikan indeks elemen pertama dari daftar. Jika blok diberikan sebagai pengganti argumen, mengembalikan indeks elemen pertama yang bloknya bernilai benar.

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

Mengembalikan indeks elemen terakhir dari daftar. Jika blok diberikan sebagai pengganti argumen, mengembalikan indeks elemen pertama yang bloknya bernilai benar.

.lastElemen atau nil

Mengembalikan elemen terakhir atau nil jika daftar kosong.

.lengthint

Mengembalikan jumlah elemen dalam daftar.

.sizeint

Alias untuk length.

.each(*args, &block)Daftar

Memanggil blok satu kali untuk setiap elemen dalam daftar, meneruskan elemen sebagai parameter ke blok.

Alamat Pengiriman

Metode skrip menggunakan objek Alamat Pengiriman
MetodeJenis hasilDeskripsi
.namestringMengembalikan nama orang yang terkait dengan alamat pengiriman.
.address1stringMengembalikan bagian alamat jalan dari alamat pengiriman.
.address2stringMengembalikan kolom tambahan opsional dari bagian alamat jalan pada alamat pengiriman.
.phonestringMengembalikan nomor telepon dari alamat pengiriman.
.citystringMengembalikan kota dari alamat pengiriman.
.zipstringMengembalikan Kode Pos dari alamat pengiriman.
.provincestringMengembalikan provinsi/negara bagian dari alamat pengiriman.
.province_codestringMengembalikan nilai singkatan dari provinsi/negara bagian pada alamat pengiriman.
.country_codestringMengembalikan nilai singkatan dari negara pada alamat pengiriman.

Uang

Metode skrip menggunakan objek Uang
MetodeJenis hasilDeskripsi
.derived_from_presentment(customer_cents:X)UangMengonversi jumlah (dalam sen) dari mata uang lokal pelanggan (mata uang yang ditampilkan) ke mata uang toko Anda. Metode ini menerima parameter customer_cents, yang menerima angka dalam sen. Misalnya, Money.derived_from_presentment(customer_cents: 500).
.newUangMembuat objek baru untuk mewakili harga.
.zeroUang

Membuat objek baru dengan harga nol.

+UangMenambahkan dua objek Money.
-UangMengurangkan satu objek Money dari objek lainnya.
*UangMengalikan objek Money dengan angka.

Contoh Uang

Money.new(cents: 1000)

Membuat objek Money yang mewakili 1000 sen, atau $10.

Money.new(cents: 100) * 50

Membuat objek Money yang mewakili $1, lalu mengalikan jumlah tersebut dengan 50. Menghasilkan objek Money yang mewakili $50.

Varian

Metode skrip yang menggunakan objek Varian
MetodeJenis hasilDeskripsi
.idIntegerMenghasilkan nomor ID varian.
.priceUangMenghasilkan harga satuan varian.
.productProdukMenghasilkan produk terkait dari varian.
.skusList<String>Menghasilkan unit penyimpanan stok (SKU) varian, yang sering digunakan untuk melacak inventaris.
.titleStringMenghasilkan judul varian.

Produk

Metode skrip yang menggunakan objek Produk
MetodeJenis hasilDeskripsi
.idIntegerMenghasilkan nomor ID produk.
.gift_card?BooleanMenghasilkan informasi apakah produk tersebut adalah kartu hadiah.
.tagsDaftar<Tag>Menghasilkan daftar string yang mewakili tag yang diatur untuk produk ini.
.product_typeStringKategorisasi yang dapat diberi tag pada produk, yang biasa digunakan untuk memfilter dan mencari.
.vendorStringMenghasilkan vendor produk ini.

Kernel

Kernel adalah modul Ruby yang disertakan di setiap kelas. Hasilnya, metodenya tersedia untuk setiap objek. Metode ini bertindak dengan cara yang sama seperti fungsi global di bahasa lain.

Metode skrip yang menggunakan objek Kernel
MetodeJenis hasilDeskripsi
.exittidak adaMengakhiri eksekusi skrip saat ini tanpa kesalahan. Jika ini dijalankan sebelum apa pun ditetapkan ke Output.cart, skrip tidak akan berpengaruh. Ini adalah cara yang berguna untuk keluar dari skrip, misalnya, jika pelanggan tidak memenuhi syarat untuk menjalankan skrip.

Contoh Kernel

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

Metode item pesanan

Metode berikut hanya dapat digunakan dalam skrip item pesanan:

Keranjang

Metode skrip yang menggunakan objek Keranjang dalam skrip item pesanan
MetodeJenis hasilDeskripsi
.subtotal_price_wasUangMenghasilkan harga subtotal keranjang sebelum diskon apa pun diterapkan.
.subtotal_price_changed?BooleanMenghasilkan informasi apakah harga subtotal telah berubah.

Item Pesanan

Metode skrip yang menggunakan objek LineItem dalam skrip item pesanan
MetodeJenis hasilDeskripsi
.change_line_price(Money new_price, { message: String }) UangMengubah harga item pesanan menjadi jumlah yang ditentukan. message wajib diisi. new_price harus lebih rendah dari harga saat ini.
.original_line_priceUangMenghasilkan harga asli item pesanan sebelum skrip dan diskon diterapkan.
.line_price_wasUangMenghasilkan harga item pesanan sebelum perubahan diterapkan oleh skrip saat ini.
.line_price_changed?BooleanMenghasilkan informasi apakah harga item pesanan telah berubah.
.change_properties(hash new_properties, { message: String }) hashMenetapkan properti baru untuk item pesanan. Hash properti asli disimpan di properties_was dan hash properti yang diteruskan ke metode menjadi properti baru untuk item pesanan.
.properties_washashMenghasilkan hash properti asli item pesanan sebelum perubahan apa pun diterapkan.
.properties_changed?BooleanMenghasilkan informasi apakah properti untuk item pesanan telah diubah.
.split({ take: Integer })LineItemMembagi item pesanan menjadi dua item pesanan. take menentukan kuantitas yang akan dihapus dari item pesanan asli untuk membuat item pesanan baru.

Contoh .split

Contoh skrip ini membagi item pesanan bernama original_line_item menjadi dua item pesanan. Item pesanan baru memiliki kuantitas 1 (ditentukan oleh take: 1). Skrip kemudian menerapkan harga diskon ke item pesanan baru dengan pesan "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

Varian

Metode skrip yang menggunakan objek Varian dalam skrip item pesanan
MetodeJenis hasilDeskripsi
.compare_at_priceUangMenghasilkan harga banding varian. Menghasilkan nil jika varian tidak memiliki harga banding.

Metode pengiriman

Metode berikut dapat digunakan dalam skrip pengiriman:

Input

Metode skrip yang menggunakan objek Input dalam skrip pengiriman
MetodeJenis hasilDeskripsi
.shipping_ratesShippingRateListMenampilkan daftar semua tarif pengiriman.

ShippingRateList

Metode skrip yang menggunakan objek ShippingRateList dalam skrip pengiriman
MetodeJenis hasilDeskripsi
.delete_ifShippingRateListHapus tarif pengiriman menggunakan blok kode opsional. Lihat dokumentasi untuk metode delete_if Ruby.
.sort!ShippingRateListUrutkan tarif pengiriman menggunakan operator perbandingan atau menggunakan blok kode opsional. Lihat dokumentasi untuk metode sort! Ruby.
.sort_by!ShippingRateListUrutkan tarif pengiriman menggunakan blok kode opsional. Lihat dokumentasi untuk metode sort_by! Ruby.

ShippingRate

Metode skrip yang menggunakan objek ShippingRate dalam skrip pengiriman
MetodeJenis hasilDeskripsi
.codeStringMenampilkan kode tarif pengiriman.
.markupUangMenampilkan penandaan untuk tarif pengiriman, jika berlaku.
.nameStringMenampilkan nama tarif pengiriman. Nama ini dapat diubah menggunakan metode change_name.
.priceUangMenampilkan harga tarif pengiriman.
.sourceStringMenampilkan sumber (pengangkut) yang terkait dengan tarif pengiriman, jika relevan. Ini tidak dapat diubah.
.change_name(String new_name)String Mengubah nama (maksimum 255 karakter) tarif pengiriman. Sumber tidak dapat diubah, dihapus, atau disembunyikan.
.apply_discount(Money discount, { message: String })UangMenerapkan diskon dengan jumlah tetap yang ditentukan. Harga tidak dapat dikurangi hingga di bawah 0. Pesan wajib diisi.
.phone_required?BooleanMenampilkan true jika nomor telepon diperlukan untuk mendapatkan tarif pengiriman, atau false jika nomor telepon tidak diperlukan.

Metode pembayaran

Metode berikut dapat digunakan dalam skrip pembayaran:

Input

Metode skrip yang menggunakan objek Input dalam skrip pembayaran
MetodeJenis hasilDeskripsi
.payment_gatewaysPaymentGatewaysListMenampilkan daftar semua gerbang pembayaran di toko.

PaymentGatewayList

Metode skrip yang menggunakan objek PaymentGatewayList dalam skrip pembayaran
MetodeJenis hasilDeskripsi
.delete_ifPaymentGatewayListHapus gerbang pembayaran menggunakan blok kode opsional. Lihat dokumentasi untuk metode delete_if Ruby.
.sort!PaymentGatewayListUrutkan gerbang pembayaran menggunakan operator perbandingan atau menggunakan blok kode opsional. Lihat dokumentasi untuk metode sort! Ruby.
.sort_by!PaymentGatewayListUrutkan gerbang pembayaran menggunakan blok kode opsional. Lihat dokumentasi untuk metode sort_by! Ruby.

PaymentGateway

MetodeJenis hasilDeskripsi
.nameStringMenampilkan nama gerbang pembayaran.
.enabled_card_brandsList<String>

Jika gerbang pembayaran mendukung kartu kredit, metode ini akan menampilkan daftar jenis kartu kredit yang diterima toko. Jika gerbang tidak mendukung kartu kredit, metode ini akan menampilkan daftar kosong.

.change_name(String new_name)StringMengubah nama gerbang pembayaran. Gerbang pembayaran dengan logo tidak dapat diganti namanya.

Contoh

Pada contoh skrip item pesanan berikut, saat pelanggan memesan produk yang bukan kartu hadiah, harga produk akan dikurangi sebesar $9. Selain itu, jumlah total yang telah dibelanjakan pelanggan selama semua kunjungan ke toko Anda juga ditampilkan:

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

Pelajari selengkapnya

Pelajari selengkapnya tentang: