Справочник по API Скриптов Shopify
Скрипты пишутся с использованием API Ruby, который обеспечивает высокий уровень контроля и гибкости.
Существуют различные типы скриптов. Тип присваивается скрипту при его создании в приложении Script Editor в зависимости от выбранного вами исходного шаблона:
Скрипты позиций
Скрипты позиций влияют на позиции в корзине и могут изменять цены и предоставлять скидки. Эти скрипты запускаются при внесении изменений в корзину.
Скрипты позиций, предоставляющие скидку на подписку, применяются только к первому платежу по ней. На последующие платежи скидка по скрипту не распространяется.
Некоторые методы могут использоваться только в скриптах позиций.
Скрипты доставки
Скрипты доставки взаимодействуют с доставкой, могут изменять способы доставки и предоставлять скидки на тарифы доставки. Эти скрипты запускаются, когда при оформлении заказа открывается страница с вариантами доставки.
Скрипты доставки, предоставляющие скидку на стоимость доставки по подписке, применяются только к первому платежу по ней. На последующие платежи скидка по скрипту не распространяется.
<p>Some methods <a href="#shipping-methods">can only be used in shipping scripts</a>.</p>Платёжные скрипты
Платёжные скрипты взаимодействуют с оплатой и могут переименовывать, скрывать и изменять порядок платёжных шлюзов. Обратите внимание, что платёжные скрипты не взаимодействуют с платёжными шлюзами, которые отображаются до экрана оформления заказа, например с Apple Pay. Эти скрипты запускаются, когда при оформлении заказа открывается страница оплаты.
Некоторые методы могут использоваться только в платёжных скриптах.
На этой странице
Общие методы
Следующие методы можно использовать в скриптах любого типа:
Input
| Метод | Тип возвращаемого значения | Описание |
|---|---|---|
| .cart | Cart | Возвращает изменяемый объект корзины. |
| .locale | string | Возвращает локаль клиента. Например, en, fr или pt-BR. |
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 | Целое число | Возвращает ИД клиента. |
| String | Возвращает адрес электронной почты клиента. | |
| .tags | Список<Tag> | Возвращает список строк с тегами, присвоенными клиенту. |
| .orders_count | Целое число | Возвращает общее количество заказов, оформленных клиентом. |
| .total_spent | Money | Возвращает общую сумму, которую клиент потратил на все заказы. |
| .accepts_marketing? | Boolean | Возвращает, согласен ли клиент на получение маркетинговых материалов. |
Позиция
| Метод | Тип возвращаемого значения | Описание |
|---|---|---|
| .grams | граммы | Возвращает общий вес позиции. |
| .line_price | Money | Цена позиции. |
| .discounted? | Boolean | Возвращает, была ли снижена цена позиции с помощью скрипта или применённой вручную скидки. Использование кодов скидок не влияет на возвращаемое значение. |
| .properties | хеш | Возвращает свойства, которые были указаны для этой позиции. |
| .variant | Вариант | Возвращает конкретный вариант товара, представленный этой позицией. |
| .quantity | Целое число | Возвращает количество данной позиции. |
| .selling_plan_id | Целое число | Возвращает ИД плана продаж для позиции. Этот метод полезен, если магазин продаёт товары по подписке и скрипту необходимо определять, когда вариант товара продаётся по подписке. |
Список
| Метод | Тип возвращаемого значения | Описание |
|---|---|---|
| .new | Список | Создаёт новый объект для представления списка. |
| .[] | Элемент или nil |
Возвращает элемент по указанному индексу. |
| .& | Список |
Возвращает новый список, содержащий общие для двух списков элементы без дубликатов. |
| .delete_if | Список | Удаляет элементы с помощью необязательного блока кода. См. документацию по методу delete_if в Ruby. |
| .empty? | Boolean |
Возвращает |
| .first | Элемент или nil |
Возвращает первый элемент или |
| .index(*args, &block) | int или nil |
Возвращает индекс первого элемента списка. Если вместо аргумента передан блок кода, возвращает индекс первого элемента, для которого этот блок возвращает true. |
| .rindex(*args, &block) | int или nil |
Возвращает индекс последнего элемента списка. Если вместо аргумента передан блок кода, возвращает индекс последнего элемента, для которого этот блок возвращает true. |
| .last | Элемент или nil |
Возвращает последний элемент или |
| .length | int |
Возвращает количество элементов в списке. |
| .size | int |
Псевдоним для length. |
| .each(*args, &block) | Список |
Вызывает блок кода для каждого элемента списка, передавая этот элемент в блок в качестве параметра. |
Адрес доставки
| Метод | Тип возвращаемого значения | Описание |
|---|---|---|
| .name | string | Возвращает имя человека, указанное в адресе доставки. |
| .address1 | string | Возвращает основную часть адреса доставки (улицу, дом). |
| .address2 | string | Возвращает необязательное дополнительное поле адреса доставки. |
| .phone | string | Возвращает номер телефона из адреса доставки. |
| .city | string | Возвращает город из адреса доставки. |
| .zip | string | Возвращает почтовый индекс из адреса доставки. |
| .province | string | Возвращает провинцию/штат из адреса доставки. |
| .province_code | string | Возвращает сокращённое название провинции/штата из адреса доставки. |
| .country_code | string | Возвращает код страны из адреса доставки. |
Деньги
| Метод | Тип возвращаемого значения | Описание |
|---|---|---|
| .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 | Целое число | Возвращает ИД варианта. |
| .price | Money | Возвращает цену за единицу товара для варианта. |
| .product | Product | Возвращает связанный с вариантом товар. |
| .skus | List<String> | Возвращает единицы учёта запасов (артикулы) варианта, которые часто используются для отслеживания товарных запасов. |
| .title | String | Возвращает название варианта. |
Товар
| Метод | Тип возвращаемого значения | Описание |
|---|---|---|
| .id | Целое число | Возвращает ИД товара. |
| .gift_card? | Boolean | Возвращает значение, указывающее, является ли товар подарочной картой. |
| .tags | Список<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: String }) | Money | Изменяет цену позиции на указанную сумму. Параметр message обязателен. Цена new_price должна быть ниже текущей. |
| .original_line_price | Money | Возвращает исходную цену позиции до применения скриптов и скидок. |
| .line_price_was | Money | Возвращает цену позиции до того, как текущий скрипт применил изменения. |
| .line_price_changed? | Boolean | Возвращает значение, указывающее, изменилась ли цена позиции. |
| .change_properties(hash new_properties, { message: String }) | хеш | Задаёт новые свойства для позиции. Исходный хеш свойств сохраняется в properties_was, а хеш свойств, переданный в метод, становится новыми свойствами для этой позиции. |
| .properties_was | хеш | Возвращает исходный хеш свойств позиции до применения каких-либо изменений. |
| .properties_changed? | Boolean | Возвращает значение, указывающее, были ли изменены свойства позиции. |
| .split({ take: Integer }) | LineItem | Разделяет одну позицию на две. Параметр 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, если у варианта нет цены для сравнения. |
Способы доставки
Следующие методы можно использовать в скриптах доставки:
Input
| Метод | Тип возвращаемого значения | Описание |
|---|---|---|
| .shipping_rates | ShippingRateList | Возвращает список всех тарифов доставки. |
ShippingRateList
| Метод | Тип возвращаемого значения | Описание |
|---|---|---|
| .delete_if | ShippingRateList | Удаляет тарифы доставки с помощью необязательного блока кода. См. документацию по методу delete_if в Ruby. |
| .sort! | ShippingRateList | Сортирует тарифы доставки с помощью оператора сравнения или необязательного блока кода. См. документацию по методу sort! в Ruby. |
| .sort_by! | ShippingRateList | Сортирует тарифы доставки с помощью необязательного блока кода. См. документацию по методу 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, если номер телефона не требуется. |
Способы оплаты
Следующие методы можно использовать в платежных скриптах:
Input
| Метод | Тип возвращаемого значения | Описание |
|---|---|---|
| .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 | List<String> |
Если платежный шлюз поддерживает кредитные карты, возвращает список типов кредитных карт, которые принимает магазин. Если шлюз не поддерживает кредитные карты, возвращает пустой список. |
| .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
Подробнее
Подробнее: