ข้อมูลอ้างอิง Shopify Scripts API
สคริปต์จะเขียนด้วย Ruby API ซึ่งให้คุณควบคุมได้อย่างเต็มที่และมีความยืดหยุ่นสูง
สคริปต์มีอยู่หลายประเภทด้วยกัน สคริปต์จะได้รับมอบหมายประเภทเมื่อคุณสร้างสคริปต์ในแอป Script Editor โดยอิงตามเทมเพลตสคริปต์ที่คุณเลือกที่จะเริ่มต้น ดังนี้
สคริปต์สินค้าเฉพาะรายการ
สคริปต์สินค้าเฉพาะรายการจะส่งผลต่อสินค้าเฉพาะรายการในตะกร้าสินค้า และสามารถเปลี่ยนราคาและให้ส่วนลดได้ สคริปต์เหล่านี้จะทำงานเมื่อมีการเปลี่ยนแปลงในตะกร้าสินค้า
สคริปต์สินค้าเฉพาะรายการที่ให้ส่วนลดสำหรับการสมัครใช้งานจะใช้ได้กับการชำระเงินครั้งแรกของการสมัครใช้งานเท่านั้น การชำระเงินครั้งต่อๆ ไปจะไม่ได้รับส่วนลดจากสคริปต์
เมธอดบางรายการสามารถใช้ได้ในสคริปต์สินค้าเฉพาะรายการเท่านั้น
สคริปต์การจัดส่ง
สคริปต์การจัดส่งจะโต้ตอบกับการจัดส่ง และสามารถเปลี่ยนวิธีการจัดส่งและให้ส่วนลดสำหรับอัตราค่าจัดส่งได้ สคริปต์เหล่านี้จะทำงานเมื่อขั้นตอนการชำระเงินไปถึงหน้าตัวเลือกการจัดส่ง
สคริปต์การจัดส่งที่ให้ส่วนลดสำหรับอัตราค่าจัดส่งของการสมัครใช้งานจะใช้ได้กับการชำระเงินครั้งแรกของการสมัครใช้งานเท่านั้น การชำระเงินครั้งต่อๆ ไปจะไม่ได้รับส่วนลดจากสคริปต์
<p>Some methods <a href="#shipping-methods">can only be used in shipping scripts</a>.</p>สคริปต์การชำระเงิน
สคริปต์การชำระเงินจะโต้ตอบกับการชำระเงิน และสามารถเปลี่ยนชื่อ ซ่อน และจัดลำดับช่องทางการชำระเงินใหม่ได้ โปรดทราบว่าสคริปต์การชำระเงินไม่ได้โต้ตอบกับช่องทางการชำระเงินที่แสดงก่อนหน้าจอการชำระเงิน เช่น Apple Pay สคริปต์เหล่านี้จะทำงานเมื่อขั้นตอนการชำระเงินไปถึงหน้าการชำระเงิน
เมธอดบางรายการสามารถใช้ได้ในสคริปต์การชำระเงินเท่านั้น
ในหน้านี้
เมธอดทั่วไป
เมธอดต่อไปนี้สามารถใช้ได้ในสคริปต์ทุกประเภท:
อินพุต
| เมธอด | ประเภทการส่งคืน | คำอธิบาย |
|---|---|---|
| .cart | Cart | ส่งคืนอ็อบเจกต์ Cart ที่เปลี่ยนแปลงได้ |
| .locale | สตริง | ส่งคืนตำแหน่งที่ตั้งของลูกค้า ตัวอย่างเช่น en, fr หรือ pt-BR |
Cart
อ็อบเจกต์ Cart มีให้ใช้งานเฉพาะบนร้านค้าออนไลน์เท่านั้น ขั้นตอนการชำระเงินที่ยังไม่เสร็จสิ้นบางส่วนสามารถเข้าถึงอ็อบเจกต์ Cart ได้ อย่างไรก็ตาม หากขั้นตอนการชำระเงินได้ถูกปิดไปแล้วและลูกค้าเข้าเยี่ยมชมขั้นตอนการชำระเงินที่ยังไม่เสร็จสิ้น ระบบจะส่งลูกค้าไปยังขั้นตอนการชำระเงินที่กรอกข้อมูลไว้ล่วงหน้าและจะไม่มีอ็อบเจกต์ Cart อยู่อีกต่อไป ทั้งนี้เนื่องจากหน้าร้านถูกข้ามโดยอีเมลแจ้งขั้นตอนการชำระเงินที่ยังไม่เสร็จสิ้น
| เมธอด | ประเภทการส่งคืน | คำอธิบาย |
|---|---|---|
| .customer | Customer | ส่งคืนเจ้าของตะกร้าสินค้า (หากมี) |
| .shipping_address | ShippingAddress | ส่งคืนที่อยู่ที่จัดส่งของเจ้าของตะกร้าสินค้า (หากมี) |
| .discount_code | แตกต่างกันไป |
ส่งคืน:
|
CartDiscount::FixedAmount
| เมธอด | ประเภทการส่งคืน | คำอธิบาย |
|---|---|---|
| .code | String | ส่งคืนรหัสส่วนลดที่นำมาใช้ |
| .amount | Money | ส่งคืนจำนวนเงินของส่วนลด |
| .reject({ message: String }) | nil | ปฏิเสธรหัสส่วนลดที่ปรับใช้กับตะกร้าสินค้า โดยต้องระบุ message |
| .rejected? | Boolean | ส่งคืนค่าว่าเป็นรหัสส่วนลดที่ถูกปฏิเสธหรือไม่ |
CartDiscount::Percentage
| เมธอด | ประเภทการส่งคืน | คำอธิบาย |
|---|---|---|
| .code | String | ส่งคืนรหัสส่วนลดที่นำมาใช้ |
| .percentage | Decimal | คืนค่าจำนวนเปอร์เซ็นต์ของส่วนลด |
| .reject({ message: String }) | nil | ปฏิเสธรหัสส่วนลดที่ปรับใช้กับตะกร้าสินค้า โดยต้องระบุ message |
| .rejected? | Boolean | ส่งคืนค่าว่าเป็นรหัสส่วนลดที่ถูกปฏิเสธหรือไม่ |
CartDiscount::Shipping
| เมธอด | ประเภทการส่งคืน | คำอธิบาย |
|---|---|---|
| .code | String | ส่งคืนรหัสส่วนลดที่นำมาใช้ |
| .reject({ message: String }) | nil | ปฏิเสธรหัสส่วนลดที่ปรับใช้กับตะกร้าสินค้า โดยต้องระบุ message |
| .rejected? | Boolean | ส่งคืนค่าว่าเป็นรหัสส่วนลดที่ถูกปฏิเสธหรือไม่ |
ลูกค้า
| เมธอด | ประเภทการส่งคืน | คำอธิบาย |
|---|---|---|
| .id | Integer | คืนค่าหมายเลข ID ของลูกค้า |
| String | คืนค่าที่อยู่อีเมลของลูกค้า | |
| .tags | List<Tag> | คืนค่ารายการสตริงที่แสดงแท็กใดๆ ที่ตั้งค่าไว้สำหรับลูกค้า |
| .orders_count | Integer | คืนค่าจำนวนคำสั่งซื้อทั้งหมดที่ลูกค้าเคยสั่ง |
| .total_spent | Money | คืนค่ายอดรวมที่ลูกค้าได้ใช้จ่ายไปกับคำสั่งซื้อทั้งหมด |
| .accepts_marketing? | Boolean | คืนค่าว่าลูกค้ายินยอมรับการตลาดหรือไม่ |
สินค้าเฉพาะรายการ
| เมธอด | ประเภทการส่งคืน | คำอธิบาย |
|---|---|---|
| .grams | grams | คืนค่าน้ำหนักรวมของสินค้าเฉพาะรายการ |
| .line_price | Money | ราคาสินค้าเฉพาะรายการ |
| .discounted? | Boolean | คืนค่าว่าราคาสินค้าเฉพาะรายการได้รับการลดราคาโดยสคริปต์หรือส่วนลดที่ใช้ด้วยตนเองหรือไม่ การใช้รหัสส่วนลดจะไม่มีผลต่อค่าที่ส่งคืน |
| .properties | hash | คืนค่าคุณสมบัติที่ระบุไว้สำหรับสินค้าเฉพาะรายการนี้ |
| .variant | Variant | คืนค่าตัวเลือกสินค้าที่เจาะจงซึ่งแสดงโดยสินค้าเฉพาะรายการ |
| .quantity | Integer | คืนค่าจำนวนของสินค้าเฉพาะรายการนี้ |
| .selling_plan_id | Integer | คืนค่า ID ของแผนการขายสำหรับสินค้าเฉพาะรายการ เมธอดนี้มีประโยชน์เมื่อร้านค้าขายสินค้าแบบการซื้อแบบเหมาจ่ายล่วงหน้า และคุณต้องการให้สคริปต์ตรวจจับเมื่อตัวเลือกสินค้าถูก ขายเป็นแบบการซื้อแบบเหมาจ่ายล่วงหน้า |
List
| เมธอด | ประเภทการส่งคืน | คำอธิบาย |
|---|---|---|
| .new | List | สร้างอ็อบเจกต์ใหม่เพื่อใช้แทนรายการ |
| .[] | Element or nil |
คืนค่าองค์ประกอบที่ดัชนีที่ระบุ |
| .& | List |
คืนค่ารายการใหม่ที่มีองค์ประกอบซึ่งมีอยู่ร่วมกันในทั้งสองรายการ โดยไม่มีรายการที่ซ้ำกัน |
| .delete_if | List | ลบองค์ประกอบโดยใช้บล็อกโค้ดที่เลือกได้ ดูเอกสารประกอบสำหรับเมธอด delete_if ของ Ruby |
| .empty? | Boolean |
คืนค่า |
| .first | Element or nil |
คืนค่าองค์ประกอบแรก หรือคืนค่า |
| .index(*args, &block) | int or nil |
คืนค่าดัชนีขององค์ประกอบแรกในรายการ หากระบุบล็อกแทนอาร์กิวเมนต์ จะคืนค่าดัชนีขององค์ประกอบแรกที่บล็อกมีค่าเป็นจริง |
| .rindex(*args, &block) | int or nil |
คืนค่าดัชนีขององค์ประกอบสุดท้ายในรายการ หากระบุบล็อกแทนอาร์กิวเมนต์ จะคืนค่าดัชนีขององค์ประกอบแรกที่บล็อกมีค่าเป็นจริง |
| .last | Element or nil |
คืนค่าองค์ประกอบสุดท้าย หรือคืนค่า |
| .length | int |
คืนค่าจำนวนองค์ประกอบในรายการ |
| .size | int |
ชื่อแฝงสำหรับ length |
| .each(*args, &block) | List |
เรียกใช้บล็อกหนึ่งครั้งสำหรับแต่ละองค์ประกอบในรายการ โดยส่งองค์ประกอบนั้นเป็นพารามิเตอร์ไปยังบล็อก |
ที่อยู่ที่จัดส่ง
| เมธอด | ประเภทการส่งคืน | คำอธิบาย |
|---|---|---|
| .name | สตริง | คืนค่าชื่อของบุคคลที่เชื่อมโยงกับที่อยู่ที่จัดส่ง |
| .address1 | สตริง | คืนค่าส่วนที่เป็นที่อยู่ (ถนน) ของที่อยู่ที่จัดส่ง |
| .address2 | สตริง | คืนค่าช่องข้อมูลเพิ่มเติมที่เลือกได้ของส่วนที่เป็นที่อยู่ (ถนน) ของที่อยู่ที่จัดส่ง |
| .phone | สตริง | คืนค่าหมายเลขโทรศัพท์ของที่อยู่ที่จัดส่ง |
| .city | สตริง | คืนค่าเมืองของที่อยู่ที่จัดส่ง |
| .zip | สตริง | คืนค่ารหัส ZIP ของที่อยู่ที่จัดส่ง |
| .province | สตริง | คืนค่าจังหวัด/รัฐของที่อยู่ที่จัดส่ง |
| .province_code | สตริง | คืนค่าตัวย่อของจังหวัด/รัฐของที่อยู่ที่จัดส่ง |
| .country_code | สตริง | คืนค่าตัวย่อของประเทศของที่อยู่ที่จัดส่ง |
Money
| เมธอด | ประเภทการส่งคืน | คำอธิบาย |
|---|---|---|
| .derived_from_presentment(customer_cents:X) | Money | แปลงจำนวนเงิน (ในหน่วยเซนต์) จากสกุลเงินท้องถิ่นของลูกค้า (สกุลเงินที่แสดง) เป็นสกุลเงินของร้านค้าคุณ เมธอดนี้ยอมรับพารามิเตอร์ customer_cents ซึ่งยอมรับตัวเลขในหน่วยเซนต์ ตัวอย่างเช่น Money.derived_from_presentment(customer_cents: 500) |
| .new | Money | สร้างอ็อบเจกต์ใหม่เพื่อแสดงราคา |
| .zero | Money |
สร้างอ็อบเจกต์ใหม่ที่มีราคาเป็นศูนย์ |
| + | Money | บวกอ็อบเจกต์ Money สองรายการ |
| - | Money | ลบอ็อบเจกต์ Money หนึ่งรายการออกจากอีกรายการ |
| * | Money | คูณอ็อบเจกต์ Money ด้วยตัวเลข |
ตัวอย่าง Money
Money.new(cents: 1000)สร้างอ็อบเจกต์ Money ที่แสดงมูลค่า 1000 เซนต์ หรือ $10
Money.new(cents: 100) * 50สร้างอ็อบเจกต์ Money ที่แสดงมูลค่า $1 จากนั้นคูณจำนวนนั้นด้วย 50 และส่งคืนอ็อบเจกต์ Money ที่แสดงมูลค่า $50
ตัวเลือกสินค้า
| เมธอด | ประเภทการส่งคืน | คำอธิบาย |
|---|---|---|
| .id | Integer | ส่งคืนหมายเลข ID ของตัวเลือกสินค้า |
| .price | Money | ส่งคืนราคาต่อหน่วยของตัวเลือกสินค้า |
| .product | สินค้า | ส่งคืนสินค้าที่เกี่ยวข้องของตัวเลือกสินค้า |
| .skus | รายการ<สตริง> | ส่งคืนรหัสสินค้าคงคลัง (SKU) ของตัวเลือกสินค้า ซึ่งมักใช้เพื่อติดตามสินค้าคงคลัง |
| .title | String | ส่งคืนชื่อของตัวเลือกสินค้า |
สินค้า
| เมธอด | ประเภทการส่งคืน | คำอธิบาย |
|---|---|---|
| .id | Integer | ส่งคืนหมายเลข ID ของสินค้า |
| .gift_card? | Boolean | ส่งคืนค่าที่ระบุว่าสินค้าเป็นบัตรของขวัญหรือไม่ |
| .tags | List<Tag> | ส่งคืนรายการสตริงที่แสดงแท็กที่กำหนดไว้สำหรับสินค้านี้ |
| .product_type | String | การจัดหมวดหมู่ที่สามารถใช้แท็กกับสินค้าได้ ซึ่งโดยทั่วไปแล้วจะใช้สำหรับการกรองและการค้นหา |
| .vendor | String | ส่งคืนผู้ขายของสินค้านี้ |
Kernel
Kernel เป็นโมดูลของ Ruby ที่มีอยู่ในทุกคลาส ด้วยเหตุนี้ ทุกอ็อบเจกต์จึงสามารถใช้เมธอดของโมดูลนี้ได้ เมธอดเหล่านี้ทำงานในลักษณะเดียวกับฟังก์ชันส่วนกลางในภาษาอื่นๆ
| เมธอด | ประเภทการส่งคืน | คำอธิบาย |
|---|---|---|
| .exit | ไม่มี | สิ้นสุดการทำงานของสคริปต์ปัจจุบันโดยไม่มีข้อผิดพลาด หากมีการรันคำสั่งนี้ก่อนที่จะมีการกำหนดค่าใดๆ ให้กับ Output.cart สคริปต์จะไม่มีผลใดๆ นี่เป็นวิธีที่มีประโยชน์ในการออกจากสคริปต์ ตัวอย่างเช่น หากลูกค้าไม่มีสิทธิ์รันสคริปต์ |
ตัวอย่าง Kernel
customer = Input.cart.customer
if customer && customer.email.end_with?("@mycompany.com")
# Employees are not eligible for this promotion.
exit
endเมธอดสินค้าเฉพาะรายการ
เมธอดต่อไปนี้ใช้ได้เฉพาะในสคริปต์สินค้าเฉพาะรายการเท่านั้น
Cart
| เมธอด | ประเภทการส่งคืน | คำอธิบาย |
|---|---|---|
| .subtotal_price_was | Money | ส่งคืนยอดรวมของตะกร้าสินค้าก่อนที่จะใช้ส่วนลดใดๆ |
| .subtotal_price_changed? | Boolean | ส่งคืนค่าที่ระบุว่ายอดรวมมีการเปลี่ยนแปลงหรือไม่ |
สินค้าเฉพาะรายการ
| เมธอด | ประเภทการส่งคืน | คำอธิบาย |
|---|---|---|
| .change_line_price(Money new_price, { message: สตริง }) | Money | เปลี่ยนราคาสินค้าเฉพาะรายการเป็นจำนวนเงินที่ระบุ จำเป็นต้องระบุ message โดย new_price ต้องต่ำกว่าราคาปัจจุบัน |
| .original_line_price | Money | ส่งคืนราคาดั้งเดิมของสินค้าเฉพาะรายการก่อนที่จะใช้สคริปต์และส่วนลด |
| .line_price_was | Money | ส่งคืนราคาสินค้าเฉพาะรายการก่อนที่สคริปต์ปัจจุบันจะทำการเปลี่ยนแปลง |
| .line_price_changed? | Boolean | ส่งคืนค่าที่ระบุว่าราคาสินค้าเฉพาะรายการมีการเปลี่ยนแปลงหรือไม่ |
| .change_properties(แฮช new_properties, { message: สตริง }) | hash | กำหนดคุณสมบัติใหม่สำหรับสินค้าเฉพาะรายการ แฮชของคุณสมบัติดั้งเดิมจะถูกจัดเก็บไว้ใน properties_was และแฮชของคุณสมบัติที่ส่งไปยังเมธอดจะกลายเป็นคุณสมบัติใหม่สำหรับสินค้าเฉพาะรายการ |
| .properties_was | hash | ส่งคืนแฮชคุณสมบัติดั้งเดิมของสินค้าเฉพาะรายการก่อนที่จะมีการเปลี่ยนแปลงใดๆ |
| .properties_changed? | Boolean | ส่งคืนค่าที่ระบุว่าคุณสมบัติสำหรับสินค้าเฉพาะรายการมีการเปลี่ยนแปลงหรือไม่ |
| .split({ take: จำนวนเต็ม }) | สินค้าเฉพาะรายการ | แบ่งสินค้าเฉพาะรายการหนึ่งรายการออกเป็นสองรายการ take จะระบุจำนวนที่ต้องการลบออกจากสินค้าเฉพาะรายการเดิมเพื่อสร้างสินค้าเฉพาะรายการใหม่ |
ตัวอย่าง .split
สคริปต์ตัวอย่างนี้จะแบ่งสินค้าเฉพาะรายการที่ชื่อว่า original_line_item ออกเป็นสองรายการ สินค้าเฉพาะรายการใหม่จะมีจำนวน 1 รายการ (ระบุโดย take: 1) จากนั้นสคริปต์จะใช้ราคาส่วนลดกับสินค้าเฉพาะรายการใหม่พร้อมกับข้อความ "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ตัวเลือกสินค้า
| เมธอด | ประเภทการส่งคืน | คำอธิบาย |
|---|---|---|
| .compare_at_price | Money | ส่งคืนราคาเปรียบเทียบของตัวเลือกสินค้า ส่งคืนค่า nil หากตัวเลือกสินค้าไม่มีราคาเปรียบเทียบ |
วิธีจัดส่ง
เมธอดต่อไปนี้ใช้ได้ในสคริปต์การจัดส่ง
อินพุต
| เมธอด | ประเภทการส่งคืน | คำอธิบาย |
|---|---|---|
| .shipping_rates | รายการอัตราค่าจัดส่ง | แสดงรายการอัตราค่าจัดส่งทั้งหมด |
ShippingRateList
| เมธอด | ประเภทการส่งคืน | คำอธิบาย |
|---|---|---|
| .delete_if | รายการอัตราค่าจัดส่ง | ลบอัตราค่าจัดส่งโดยใช้บล็อกโค้ดที่ไม่บังคับ โปรดดูเอกสารประกอบสำหรับเมธอด delete_if ของ Ruby |
| .sort! | รายการอัตราค่าจัดส่ง | จัดเรียงอัตราค่าจัดส่งโดยใช้ตัวดำเนินการเปรียบเทียบหรือใช้บล็อกโค้ดที่ไม่บังคับ โปรดดูเอกสารประกอบสำหรับเมธอด sort! ของ Ruby |
| .sort_by! | รายการอัตราค่าจัดส่ง | จัดเรียงอัตราค่าจัดส่งโดยใช้บล็อกโค้ดที่ไม่บังคับ โปรดดูเอกสารประกอบสำหรับเมธอด sort_by! ของ Ruby |
ShippingRate
| เมธอด | ประเภทการส่งคืน | คำอธิบาย |
|---|---|---|
| .code | String | แสดงรหัสของอัตราค่าจัดส่ง |
| .markup | Money | แสดงมาร์กอัปสำหรับอัตราค่าจัดส่ง หากมี |
| .name | String | แสดงชื่อของอัตราค่าจัดส่ง ซึ่งสามารถแก้ไขได้โดยใช้เมธอด change_name |
| .price | Money | แสดงราคาของอัตราค่าจัดส่ง |
| .source | String | แสดงแหล่งที่มา (ผู้ขนส่ง) ที่เชื่อมโยงกับอัตราค่าจัดส่ง หากมี ซึ่งไม่สามารถแก้ไขได้ |
| .change_name(String new_name) | String | เปลี่ยนชื่อ (สูงสุด 255 อักขระ) ของอัตราค่าจัดส่ง ไม่สามารถเปลี่ยน ลบ หรือซ่อนแหล่งที่มาได้ |
| .apply_discount(Money discount, { message: String }) | Money | ใช้ส่วนลดตามจำนวนคงที่ที่ระบุ ไม่สามารถลดราคาให้ต่ำกว่า 0 ได้ ทั้งนี้จำเป็นต้องมีข้อความประกอบ |
| .phone_required? | Boolean | แสดงผลเป็น true หากต้องใช้หมายเลขโทรศัพท์เพื่อรับอัตราค่าจัดส่ง หรือแสดงผลเป็น false หากไม่ต้องใช้หมายเลขโทรศัพท์ |
วิธีการชำระเงิน
เมธอดต่อไปนี้สามารถใช้ได้ในสคริปต์การชำระเงิน
อินพุต
| เมธอด | ประเภทการส่งคืน | คำอธิบาย |
|---|---|---|
| .payment_gateways | PaymentGatewaysList | แสดงรายการช่องทางการชำระเงินทั้งหมดในร้านค้า |
PaymentGatewayList
| เมธอด | ประเภทการส่งคืน | คำอธิบาย |
|---|---|---|
| .delete_if | PaymentGatewayList | ลบช่องทางการชำระเงินโดยใช้บล็อกโค้ดที่ไม่บังคับ โปรดดูเอกสารประกอบสำหรับเมธอด delete_if ของ Ruby |
| .sort! | PaymentGatewayList | จัดเรียงช่องทางการชำระเงินโดยใช้ตัวดำเนินการเปรียบเทียบหรือใช้บล็อกโค้ดที่ไม่บังคับ โปรดดูเอกสารประกอบสำหรับเมธอด sort! ของ Ruby |
| .sort_by! | PaymentGatewayList | จัดเรียงช่องทางการชำระเงินโดยใช้บล็อกโค้ดที่ไม่บังคับ โปรดดูเอกสารประกอบสำหรับเมธอด sort_by! ของ Ruby |
PaymentGateway
| เมธอด | ประเภทการส่งคืน | คำอธิบาย |
|---|---|---|
| .name | String | แสดงชื่อของช่องทางการชำระเงิน |
| .enabled_card_brands | รายการ<สตริง> |
หากช่องทางการชำระเงินรองรับบัตรเครดิต ระบบจะแสดงรายการประเภทบัตรเครดิตที่ร้านค้ายอมรับ แต่หากช่องทางดังกล่าวไม่รองรับบัตรเครดิต ระบบจะแสดงรายการว่างเปล่า |
| .change_name(String new_name) | String | เปลี่ยนชื่อของช่องทางการชำระเงิน ไม่สามารถเปลี่ยนชื่อช่องทางการชำระเงินที่มีโลโก้ได้ |
ตัวอย่าง
ในตัวอย่างสคริปต์สินค้าเฉพาะรายการต่อไปนี้ เมื่อลูกค้าสั่งซื้อสินค้าที่ไม่ใช่บัตรของขวัญ ราคาสินค้าจะลดลง 9 ดอลลาร์สหรัฐ นอกจากนี้ ระบบจะแสดงยอดรวมที่ลูกค้าใช้จ่ายตลอดการเข้าชมร้านค้าของคุณทั้งหมด
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
ดูข้อมูลเพิ่มเติม
ดูข้อมูลเพิ่มเติมเกี่ยวกับเรื่องต่อไปนี้