Shopify Komut Dosyaları API referansı

Komut dosyaları, size yüksek düzeyde kontrol ve esneklik sağlayan bir Ruby API'si ile yazılır.

Farklı komut dosyası türleri vardır. Script Editor uygulamasında komut dosyası oluşturduğunuzda, başlangıçta seçtiğiniz komut dosyası şablonuna göre komut dosyasına bir tür atanır:

Satır öğesi komut dosyaları

Satır öğesi komut dosyaları sepetteki satır öğelerini etkiler, fiyatları değiştirebilir ve indirimler sağlayabilir. Bu komut dosyaları, sepette bir değişiklik yapıldığında çalıştırılır.

Bir abonelikte indirim yapan satır öğesi komut dosyaları yalnızca aboneliğin ilk ödemesine uygulanır. Sonraki ödemelere komut dosyası tarafından indirim uygulanmaz.

Bazı yöntemler yalnızca satır öğesi komut dosyalarında kullanılabilir.

Kargo komut dosyaları

Kargo komut dosyaları kargo ile etkileşim kurar, kargo yöntemlerini değiştirebilir ve kargo ücretlerinde indirimler sağlayabilir. Bu komut dosyaları, ödeme işlemi kargo seçenekleri sayfasına ulaştığında çalışır.

Bir aboneliğin kargo ücretinde indirim yapan kargo komut dosyaları yalnızca aboneliğin ilk ödemesine uygulanır. Sonraki ödemelere komut dosyası tarafından indirim uygulanmaz.

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

Ödeme komut dosyaları

Ödeme komut dosyaları ödemelerle etkileşim kurar ve ödeme ağ geçitlerini yeniden adlandırabilir, gizleyebilir ve yeniden sıralayabilir. Ödeme komut dosyalarının Apple Pay gibi, ödeme ekranından önce gösterilen ödeme ağ geçitleriyle etkileşim kurmadığını unutmayın. Bu komut dosyaları, ödeme işlemi ödeme sayfasına ulaştığında çalışır.

Bazı yöntemler yalnızca ödeme komut dosyalarında kullanılabilir.

Genel yöntemler

Aşağıdaki yöntemler her tür komut dosyasında kullanılabilir:

Giriş

Komut dosyası giriş yöntemleri
YöntemDönüş türüAçıklama
.cartSepetDeğiştirilebilir bir sepet nesnesi döndürür.
.localedizeMüşterinin yerel ayarını döndürür. Örneğin, en, fr veya pt-BR.

Sepet

Sepet nesnesi yalnızca online mağazada kullanılabilir. Bazı yarım bırakılmış ödemelerde sepet nesnesine erişim vardır. Ancak bir ödeme kapatıldıysa ve ardından müşteri, yarım bırakılmış ödemeyi ziyaret ederse müşteri, önceden doldurulmuş ödemeye gönderilir ve sepet nesnesi artık mevcut olmaz. Bunun nedeni, dijital vitrinin yarım bırakılmış ödeme e-postası tarafından atlanmış olmasıdır.

Sepet nesnesini kullanan komut dosyası yöntemleri
YöntemDönüş türüAçıklama
.customerMüşteriSepetin sahibini (varsa) döndürür.
.shipping_addressKargoAdresiSepet sahibinin kargo adresini (varsa) döndürür.
.discount_codedeğişir Döndürdüğü değerler:

Sepete bir indirim uygulandıysa discount_code bulunur. Bu, sepet fiyatının mutlaka değişeceği anlamına gelmez. Örneğin, 50 $'ın üzerindeki sepetlere bir indirim uygulanıyorsa ve bir komut dosyası sepet fiyatını 50 $'ın altına düşürüyorsa discount_code yine de bulunur ancak sepetin fiyatı değişmez.

<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

CartDiscount::FixedAmount nesnesini kullanan komut dosyası yöntemleri
YöntemDönüş türüAçıklama
.codeDizeİndirimi uygulamak için kullanılan indirim kodunu döndürür.
.amountParaİndirimin para tutarını döndürür.
.reject({ message: String })nilSepete uygulanan indirim kodunu reddeder. Bir mesaj gereklidir.
.rejected?Booleİndirim kodunun reddedilip reddedilmediğini döndürür.

CartDiscount::Percentage

CartDiscount::Percentage nesnesini kullanan komut dosyası yöntemleri
YöntemDönüş türüAçıklama
.codeDizeİndirimi uygulamak için kullanılan indirim kodunu döndürür.
.percentageOndalıkİndirimin yüzde tutarını döndürür.
.reject({ message: String })nilSepete uygulanan indirim kodunu reddeder. Bir mesaj gereklidir.
.rejected?Booleİndirim kodunun reddedilip reddedilmediğini döndürür.

CartDiscount::Shipping

CartDiscount::Shipping nesnesini kullanan komut dosyası yöntemleri
YöntemDönüş türüAçıklama
.codeDizeİndirimi uygulamak için kullanılan indirim kodunu döndürür.
.reject({ message: String })nilSepete uygulanan indirim kodunu reddeder. Bir mesaj gereklidir.
.rejected?Booleİndirim kodunun reddedilip reddedilmediğini döndürür.

Müşteri

Customer nesnesini kullanan komut dosyası yöntemleri
YöntemDönüş türüAçıklama
.idTam sayıMüşterinin kimlik numarasını döndürür.
.emailDizeMüşterinin e-posta adresini döndürür.
.tagsListe<Etiket>Bir müşteri için ayarlanan etiketleri temsil eden bir dize listesi döndürür.
.orders_countTam sayıBir müşterinin verdiği toplam sipariş sayısını döndürür.
.total_spentParaMüşterinin tüm siparişlerde harcadığı toplam tutarı döndürür.
.accepts_marketing?BooleMüşterinin pazarlamayı kabul edip etmediğini döndürür.

LineItem

LineItem nesnesini kullanan komut dosyası yöntemleri
YöntemDönüş türüAçıklama
.gramsgramSatır öğesinin toplam ağırlığını döndürür.
.line_priceParaSatır öğesinin fiyatı.
.discounted?BooleBir satır öğesinin fiyatına bir komut dosyası veya manuel olarak uygulanan bir indirimle indirim uygulanıp uygulanmadığını döndürür. İndirim kodlarının kullanımı, döndürülen değeri etkilemez.
.propertieshashBu satır öğesi için belirtilen özellikleri döndürür.
.variantVaryasyonSatır öğesi tarafından temsil edilen belirli ürün varyasyonunu döndürür.
.quantityTam sayıBu satır öğesinin miktarını döndürür.
.selling_plan_idTam sayıSatır öğesinin satış planı kimliğini döndürür. Bu yöntem, mağazada abonelik satışı yapılıyorsa ve komut dosyasının bir ürün varyasyonunun abonelik olarak satıldığını algılamasını istediğinizde yararlıdır.

Liste

List nesnesini kullanan komut dosyası yöntemleri
YöntemDönüş türüAçıklama
.newListeBir listeyi temsil etmek için yeni bir nesne oluşturur.
.[]Öğe veya nil

Belirtilen dizindeki öğeyi döndürür.

.&Liste

Yinelenen öğe olmadan, iki listede ortak olan öğeleri içeren yeni bir liste döndürür.

.delete_ifListeİsteğe bağlı bir kod bloğu kullanarak öğeleri siler. Ruby'nin delete_if yönteminin belgelerine bakın.
.empty?Boole

Liste hiçbir öğe içermiyorsa true değerini döndürür.

.firstÖğe veya nil

İlk öğeyi veya liste boşsa nil değerini döndürür.

.index(*args, &block)tam sayı veya nil

Listenin ilk öğesinin dizinini döndürür. Bir bağımsız değişken yerine bir blok verilirse bloğun doğru olduğu ilk öğenin dizinini döndürür.

.rindex(*args, &block)tam sayı veya nil

Listenin son öğesinin dizinini döndürür. Bir bağımsız değişken yerine bir blok verilirse bloğun doğru olduğu ilk öğenin dizinini döndürür.

.lastÖğe veya nil

Son öğeyi veya liste boşsa nil değerini döndürür.

.lengthtam sayı

Listedeki öğe sayısını döndürür.

.sizetam sayı

length için takma ad.

.each(*args, &block)Liste

Öğeyi bloğa parametre olarak geçirerek listedeki her öğe için bir kez bir blok çağırır.

ShippingAddress

ShippingAddress nesnesini kullanan komut dosyası yöntemleri
YöntemDönüş türüAçıklama
.namedizeKargo adresiyle ilişkili kişinin adını döndürür.
.address1dizeKargo adresinin açık adres bölümünü döndürür.
.address2dizeKargo adresinin açık adres bölümünün isteğe bağlı ek alanını döndürür.
.phonedizeKargo adresinin telefon numarasını döndürür.
.citydizeKargo adresinin şehrini döndürür.
.zipdizeKargo adresinin posta kodunu döndürür.
.provincedizeKargo adresinin ilini/eyaletini döndürür.
.province_codedizeKargo adresinin ilinin/eyaletinin kısaltılmış değerini döndürür.
.country_codedizeKargo adresinin ülkesinin kısaltılmış değerini döndürür.

Money

Money nesnesini kullanan komut dosyası yöntemleri
YöntemDönüş türüAçıklama
.derived_from_presentment(customer_cents:X)ParaMüşterinin yerel (sunulan) para birimindeki bir tutarı (sent cinsinden) mağazanızın para birimine dönüştürür. Bu yöntem, sent cinsinden bir sayıyı kabul eden customer_cents parametresini kabul eder. Örneğin, Money.derived_from_presentment(customer_cents: 500).
.newParaBir fiyatı temsil etmek için yeni bir nesne oluşturur.
.zeroPara

Sıfır fiyatlı yeni bir nesne oluşturur.

+Paraİki Money nesnesini toplar.
-ParaBir Money nesnesini diğerinden çıkarır.
*ParaBir Money nesnesini bir sayıyla çarpar.

Para örnekleri

Money.new(cents: 1000)

1000 senti veya 10 $'ı temsil eden bir Money nesnesi oluşturur.

Money.new(cents: 100) * 50

1 $'ı temsil eden bir Money nesnesi oluşturur, ardından bu tutarı 50 ile çarpar. 50 $'ı temsil eden bir Money nesnesi döndürür.

Varyasyon

Varyasyon nesnesini kullanan komut dosyası yöntemleri
YöntemDönüş türüAçıklama
.idTam sayıVaryasyonun kimlik numarasını döndürür.
.priceParaVaryasyonun birim fiyatını döndürür.
.productÜrünVaryasyonun ilişkili ürününü döndürür.
.skusListe<Dize>Genellikle envanteri izlemek için kullanılan, varyasyonun stok bulundurma birimlerini (SKU'lar) döndürür.
.titleDizeVaryasyonun başlığını döndürür.

Ürün

Ürün nesnesini kullanan komut dosyası yöntemleri
YöntemDönüş türüAçıklama
.idTam sayıÜrünün kimlik numarasını döndürür.
.gift_card?BooleÜrünün hediye kartı olup olmadığını döndürür.
.tagsListe<Etiket>Bu ürün için ayarlanan etiketleri temsil eden bir dize listesi döndürür.
.product_typeDizeBir ürünün etiketlenebileceği ve genellikle filtreleme ile arama için kullanılan bir kategorilendirme.
.vendorDizeBu ürünün satıcısını döndürür.

Kernel

Kernel, her sınıfa dahil edilen bir Ruby modülüdür. Sonuç olarak, yöntemleri her nesne tarafından kullanılabilir. Bu yöntemler, diğer dillerdeki genel işlevlerle aynı şekilde çalışır.

Kernel nesnesini kullanan komut dosyası yöntemleri
YöntemDönüş türüAçıklama
.exityokMevcut komut dosyasının yürütülmesini hatasız şekilde sonlandırır. Bu, Output.cart öğesine bir değer atanmadan önce çalıştırılırsa komut dosyasının bir etkisi olmaz. Örneğin, müşteri komut dosyasını çalıştırmaya uygun olmadığında komut dosyalarından çıkmak için bu, kullanışlı bir yoldur.

Kernel örneği

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

Satır öğesi yöntemleri

Aşağıdaki yöntemler yalnızca satır öğesi komut dosyalarında kullanılabilir:

Sepet

Satır öğesi komut dosyalarında Sepet nesnesini kullanan komut dosyası yöntemleri
YöntemDönüş türüAçıklama
.subtotal_price_wasParaHerhangi bir indirim uygulanmadan önceki sepet alt toplam fiyatını döndürür.
.subtotal_price_changed?BooleAlt toplam fiyatının değişip değişmediğini döndürür.

LineItem

Satır öğesi komut dosyalarında Satır Öğesi nesnesini kullanan komut dosyası yöntemleri
YöntemDönüş türüAçıklama
.change_line_price(Para new_price, { message: Dize }) ParaSatır öğesinin fiyatını belirtilen tutar olarak değiştirir. Bir message gereklidir. new_price, mevcut fiyattan daha düşük olmalıdır.
.original_line_priceParaKomut dosyaları ve indirimler uygulanmadan önceki orijinal satır öğesi fiyatını döndürür.
.line_price_wasParaMevcut komut dosyası tarafından değişiklikler uygulanmadan önceki satır öğesi fiyatını döndürür.
.line_price_changed?BooleSatır öğesi fiyatının değişip değişmediğini döndürür.
.change_properties(hash new_properties, { message: Dize }) hashBir satır öğesi için yeni özellikler ayarlar. Orijinal özellikler hash'i properties_was içinde saklanır ve yönteme geçirilen özellikler hash'i, satır öğesinin yeni özellikleri olur.
.properties_washashHerhangi bir değişiklik uygulanmadan önceki orijinal satır öğesi özellikleri hash'ini döndürür.
.properties_changed?BooleSatır öğesi özelliklerinin değiştirilip değiştirilmediğini döndürür.
.split({ take: Tam Sayı })Satır ÖğesiBir satır öğesini iki satır öğesine böler. take, yeni satır öğesini oluşturmak için orijinal satır öğesinden hangi miktarın kaldırılacağını belirtir.

.split örneği

Bu örnek komut dosyası, original_line_item adlı bir satır öğesini iki satır öğesine böler. Yeni satır öğesinin miktarı 1'dir (take: 1 ile belirtilir). Ardından komut dosyası, "Üçüncü şapka 5 dolar" mesajıyla yeni satır öğesine indirimli bir fiyat uygular.

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

Varyasyon

Satır öğesi komut dosyalarında Varyasyon nesnesini kullanan komut dosyası yöntemleri
YöntemDönüş türüAçıklama
.compare_at_priceParaVaryasyonun karşılaştırma fiyatını döndürür. Varyasyonun karşılaştırma fiyatı yoksa nil döndürür.

Kargo yöntemleri

Aşağıdaki yöntemler kargo komut dosyalarında kullanılabilir:

Giriş

Kargo komut dosyalarında Input nesnesini kullanan komut dosyası yöntemleri
YöntemDönüş türüAçıklama
.shipping_ratesKargoÜcretiListesiTüm kargo ücretlerinin bir listesini döndürür.

ShippingRateList

Kargo komut dosyalarında ShippingRateList nesnesini kullanan komut dosyası yöntemleri
YöntemDönüş türüAçıklama
.delete_ifKargoÜcretiListesiİsteğe bağlı bir kod bloğu kullanarak kargo ücretlerini silin. Ruby'nin delete_if yöntemine ilişkin belgelere bakın.
.sort!KargoÜcretiListesiKarşılaştırma operatörünü veya isteğe bağlı bir kod bloğunu kullanarak kargo ücretlerini sıralayın. Ruby'nin sort! yöntemine ilişkin belgelere bakın.
.sort_by!KargoÜcretiListesiİsteğe bağlı bir kod bloğu kullanarak kargo ücretlerini sıralayın. Ruby'nin sort_by! yöntemine ilişkin belgelere bakın.

ShippingRate

Kargo komut dosyalarında ShippingRate nesnesini kullanan komut dosyası yöntemleri
YöntemDönüş türüAçıklama
.codeDizeKargo ücretinin kodunu döndürür.
.markupParaVarsa kargo ücreti için kâr payını döndürür.
.nameDizeKargo ücretinin adını döndürür. Bu ad, change_name yöntemi kullanılarak değiştirilebilir.
.priceParaKargo ücretinin fiyatını döndürür.
.sourceDizeİlgiliyse kargo ücretiyle ilişkili kaynağı (kargo şirketini) döndürür. Bu, değiştirilemez.
.change_name(String new_name)Dize Kargo ücretinin adını (en fazla 255 karakter) değiştirir. Kaynağı değiştirmek, silmek veya gizlemek mümkün değildir.
.apply_discount(Money discount, { message: String })ParaBelirtilen sabit tutarda bir indirim uygular. Fiyat, 0'ın altına düşürülemez. Mesaj girilmesi zorunludur.
.phone_required?BooleKargo ücretini almak için telefon numarası gerekiyorsa true, gerekmiyorsa false değerini döndürür.

Ödeme yöntemleri

Aşağıdaki yöntemler ödeme komut dosyalarında kullanılabilir:

Giriş

Ödeme komut dosyalarında Input nesnesini kullanan komut dosyası yöntemleri
YöntemDönüş türüAçıklama
.payment_gatewaysPaymentGatewaysListMağazadaki tüm ödeme ağ geçitlerinin bir listesini döndürür.

PaymentGatewayList

Ödeme komut dosyalarında PaymentGatewayList nesnesini kullanan komut dosyası yöntemleri
YöntemDönüş türüAçıklama
.delete_ifPaymentGatewayListİsteğe bağlı bir kod bloğu kullanarak ödeme ağ geçitlerini silin. Ruby'nin delete_if yöntemine ilişkin belgelere bakın.
.sort!PaymentGatewayListKarşılaştırma operatörünü veya isteğe bağlı bir kod bloğunu kullanarak ödeme ağ geçitlerini sıralayın. Ruby'nin sort! yöntemine ilişkin belgelere bakın.
.sort_by!PaymentGatewayListİsteğe bağlı bir kod bloğu kullanarak ödeme ağ geçitlerini sıralayın. Ruby'nin sort_by! yöntemine ilişkin belgelere bakın.

PaymentGateway

YöntemDönüş türüAçıklama
.nameDizeÖdeme ağ geçidinin adını döndürür.
.enabled_card_brandsListe<Dize>

Ödeme ağ geçidi kredi kartlarını destekliyorsa mağazanın kabul ettiği kredi kartı türlerinin bir listesini döndürür. Ağ geçidi kredi kartlarını desteklemiyorsa boş bir liste döndürür.

.change_name(String new_name)DizeÖdeme ağ geçidinin adını değiştirir. Logosu olan ödeme ağ geçitleri yeniden adlandırılamaz.

Örnekler

Aşağıdaki satır öğesi komut dosyası örneğinde, bir müşteri hediye kartı olmayan bir ürün sipariş ettiğinde ürünün fiyatı 9 $ azaltılır. Ayrıca, müşterinin mağazanıza yaptığı tüm ziyaretlerde harcadığı toplam tutar gösterilir:

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

Daha fazla bilgi edinin

Şunlar hakkında daha fazla bilgi edinin: