shopify api php 开发,Shopify 脚本 API 参考

Shopify 脚本 API 参考

已于 Mar 19, 2021 打印了此页面。若要查看当前版本,请访问 https://help.shopify.com/zh-CN/manual/checkout-settings/script-editor/shopify-scripts。

脚本是使用 Ruby API 编写的,能实现高度的控制力和灵活性。Shopify Plus

脚本和 Script Editor 应用仅适用于 Shopify Plus 商家。

脚本分为不同类型。在 Script Editor 应用程序中创建脚本时,系统将根据您选择的脚本模板为脚本分配类型:

订单项目脚本

订单项目脚本会影响购物车中的订单项,可以更改价格和给予折扣。此类脚本会在购物车产生变化时运行。

提供订阅折扣的订单项目脚本仅适用于订阅的第一笔付款。该脚本不会为后续付款提供折扣。

发货脚本

发货脚本是与发货环节交互的,可以更改发货方式并对运费给予折扣。当客户在结账时进入发货选项页面时,会运行此类脚本。

提供订阅运费折扣的发货脚本仅适用于订阅的第一笔付款。该脚本不会为后续付款提供折扣。

付款脚本

付款脚本与付款环节交互,可以重命名、隐藏和重新排序付款网关。请注意,付款脚本不会与在结账屏幕之前显示的支付网关交互,例如 Apple Pay。结账到达付款页面时会运行这些脚本。

通用方法

以下方法适用于任何类型的脚本:

输入

脚本输入方法

方法

返回类型

描述

.cart

返回可变的 Cart 对象。

.locale

字符串

返回客户的区域设置。例如,en、fr 或 pt-BR。

购物车

Cart 对象仅适用于在线商店。某些弃单可以访问 Cart 对象。但是,如果客户在某一结账关闭后访问此弃单,它则会将客户导向至预先填写的结账处,并且 Cart 对象不再存在。这是因为弃单电子邮件绕过了店面。

使用 Cart 对象的脚本方法

方法

返回类型

描述

.customer

返回购物车的所有者(如果有)。

.shipping_address

返回购物车所有者的收货地址(如果有)。

.discount_code

不定

返回:

如果已将折扣应用于购物车,则存在 discount_code。这并不一定意味着购物车的价格发生了更改。例如,如果将折扣应用于价格高于 50 美元的购物车,并且脚本将购物车价格减少至 50 美元以下,则 discount_code 仍然存在,但购物车的价格未发生更改。

查看 discount_code 的示例。

.line_items

List

返回包含购物车中订单项目的列表。

.presentment_currency

List

返回客户的当地(出示)货币(采用 ISO 4217 格式)。例如 USD。

.subtotal_price

返回应用订单项目折扣之后、应用折扣码之前的购物车小计价格。

.total_weight

返回购物车中所有订单项的总重量。

CartDiscount::FixedAmount

使用 CartDiscount::FixedAmount 对象的脚本方法

方法

返回类型

描述

.code

字符串

返回用于应用折扣的折扣码。

.amount

退还折扣金额。

.reject({ message: String })

拒绝应用于购物车的折扣码。需要一条消息。

.rejected?

布尔

返回折扣码是否被拒绝。

CartDiscount::Percentage

使用 CartDiscount::Percentage 对象的脚本方法

方法

返回类型

描述

.code

字符串

返回用于应用折扣的折扣码。

.percentage

十进制

返回折扣的百分比值。

.reject({ message: String })

拒绝应用于购物车的折扣码。需要一条消息。

.rejected?

布尔

返回折扣码是否被拒绝。

CartDiscount::Shipping

使用 CartDiscount::Shipping 对象的脚本方法

方法

返回类型

描述

.code

字符串

返回用于应用折扣的折扣码。

.reject({ message: String })

拒绝应用于购物车的折扣码。需要一条消息。

.rejected?

布尔

返回折扣码是否被拒绝。

客户

使用 Customer 对象的脚本方法

方法

返回类型

描述

.id

整数

返回客户的 ID 编号。

.email

字符串

返回客户的电子邮件地址。

.tags

列表

返回字符串的列表,这些字符串表示为客户设置的任何标记。

.orders_count

整数

返回某个客户的总下单数。

.total_spent

返回客户在所有订单上花费的总金额。

.accepts_marketing?

布尔

返回客户是否接受营销。

LineItem

使用 LineItem 对象的脚本方法

方法

返回类型

描述

.grams

返回订单项的总重量。

.line_price

订单项目的价格。

.discounted?

布尔

返回折扣是否更改了订单项的价格。

.properties

哈希

返回为此订单项目指定的属性。

.variant

返回订单项目代表的特定产品多属性。

.quantity

整数

返回订单项目的数量。

.selling_plan_id

整数

如果商店销售订阅,并且您希望脚本能检测出产品多属性是何时以订阅形式销售的,则此方法非常有用。

列表

使用 List 对象的脚本方法

方法

返回类型

描述

.new

新建表示列表的新对象。

.[]

元素或零

返回指定索引处的元素。

.&

返回一个新列表,其中包含两个列表共有的元素且没有重复项。

.empty?

布尔

如果该列表不包含任何元素,则返回 true。

.first

元素或零

返回第一个元素,如果列表为空,则返回零。

.index(*args, &block)

整数或零

返回列表第一个元素的索引。如果给出了一个块而不是参数,则返回 block 为 true 的第一个元素的索引。

.rindex(*args, &block)

整数或零

返回列表中最后一个元素的索引。如果给定的是块而不是参数,则返回该块为 true 的第一个元素的索引。

.last

元素或零

返回最后一个元素,如果列表为空,则返回零。

.length

int

返回列表中的元素数量。

.size

int

.each(*args, &block)

为列表中的每个元素调用一次块,将元素作为参数传递给块。

发货地址

使用 ShippingAddress 对象的脚本方法

方法

返回类型

描述

.name

string

返回与收货地址关联的人员的姓名。

.address1

string

返回收货地址的街道地址部分。

.address2

string

返回收货地址的街道地址部分中的可选附加字段。

.phone

string

返回收货地址的电话号码。

.city

string

返回收货地址的城市。

.zip

string

返回收货地址的邮政编码。

.province

string

返回收货地址的省份/州。

.province_code

string

返回收货地址的省(或直辖市/自治区)/州的缩写值。

.country_code

string

返回收货地址的国家/地区的缩写值。

金钱

使用 Money 对象的脚本方法

方法

返回类型

描述

.derived_from_presentment(customer_cents:X)

将金额(以美分为单位)从客户的本地(出示)货币转化为您商店的货币。此方法接受 customer_cents 参数,该参数接受以美分为单位的数字。例如,Money.derived_from_presentment(customer_cents: 500)。

.new

创建代表价格的新对象。

.zero

新建价格为零的对象。

+

添加两个 Money 对象。

-

从一个 Money 对象中减去另一个 Money 对象。

*

将 Money 对象乘以数字。

Money 示例

Money.new(cents:1000)

创建代表 1000 美分或 10 美元的 Money 对象。Money.new(cents:100) * 50

创建代表 1 美元的 Money 对象,然后将该金额乘以 50。返回代表 50 美元的 Money 对象。

多属性

使用 Variant 对象的脚本方法

方法

返回类型

描述

.id

整数

返回多属性的 ID 号。

.price

返回多属性的单价。

.product

返回多属性的相关产品。

.skus

List

返回多属性的货号 (SKU),通常用于跟踪库存。

.title

字符串

返回多属性标题。

产品

使用 Product 对象的脚本方法

方法

返回类型

描述

.id

整数

返回产品的 ID 号。

.gift_card?

布尔

返回产品是否为礼品卡。

.tags

列表

返回字符串的列表,这些字符串表示为此产品设置的标记。

.product_type

字符串

可以标记产品的分类,通常用于筛选和搜索。

.vendor

字符串

返回产品的厂商。

Kernel

Kernel 是包含在每个类中的 Ruby 模块。因此,它的方法适用于每个对象。这些方法的作用方式与全局函数在其他语言中的作用方式相同。

使用 Kernel 对象的脚本方法

方法

返回类型

描述

.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

返回应用任何折扣之前购物车的小计价格。

.subtotal_price_changed?

布尔

返回小计价格是否已更改。

LineItem

在订单项目脚本中使用 LineItem 对象的脚本方法

方法

返回类型

描述

.change_line_price(Money new_price, { message: String })

将订单项的价格更改为指定金额。需要一条消息。new_price 必须低于当前价格。

.original_line_price

返回应用脚本和折扣之前订单项目的原始价格。

.line_price_was

返回在当前脚本应用更改之前订单项目的价格。

.line_price_changed?

布尔

返回订单项的价格是否已更改。

.change_properties(hash new_properties, { message: String })

哈希

设置订单项目的新属性。原始属性哈希存储在 properties_was 中,且传递至该方法的属性哈希会成为订单项目的新属性。

.properties_was

哈希

返回应用任何更改之前的订单项原始属性哈希。

.properties_changed?

布尔

返回该订单项目的属性是否有更改。

.split({ take: Integer })

将一个订单商品拆分为两个订单商品。take 指定要从原始订单商品中删除多少数量来创建新的订单商品。

.split 示例

此示例脚本将一个名为 original_line_item 的订单项目拆分为了两个订单项目。新订单项目的数量为 1(由 take: 1 指定)。然后,该脚本对新的订单项目应用折扣价,并显示消息“第三顶帽子 5 美元”。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

多属性

在订单项目脚本中使用 Variant 对象的脚本方法

方法

返回类型

描述

.compare_at_price

返回多属性的原价。如果多属性没有原价,则返回零。

发货方式

以下方法在发货脚本中可用:

输入

在发货脚本中使用 Input 对象的脚本方法

方法

返回类型

描述

.shipping_rates

返回所有运费的列表。

ShippingRateList

在发货脚本中使用 ShippingRateList 对象的脚本方法

方法

返回类型

描述

.sort!

使用比较运算符或可选代码块对运费进行排序。查看文档,了解 Ruby 的 sort! 方法。

.sort_by!

使用可选代码块对运费进行排序。查看文档,了解 Ruby 的 sort_by! 方法。

ShippingRate

在发货脚本中使用 ShippingRate 对象的脚本方法

方法

返回类型

描述

.code

字符串

返回运费代码。

.markup

字符串

返回运费说明的标记。

.name

字符串

返回运费名称。

.price

返回运费价格。

.source

字符串

返回与运费关联的来源(承运商)。

.change_name(String new_name)

字符串

更改运费名称(最多 255 个字符)。

.apply_discount(Money discount, { message: String })

应用指定固定金额的折扣。价格不能低于 0。需要一条消息。

.phone_required?

布尔

如果需要电话号码来获取运费,则返回 true;如果不需要电话号码,则返回 false。

支付方式

以下方法适用于付款脚本:

输入

在付款脚本中使用 Input 对象的脚本方法

方法

返回类型

描述

.payment_gateways

返回商店中所有支付网关的列表。

PaymentGatewayList

在付款脚本中使用 PaymentGatewayList 对象的脚本方法

方法

返回类型

描述

.sort!

使用比较运算符或可选代码块对支付网关进行排序。查看文档,了解 Ruby 的 sort! 方法。

.sort_by!

使用可选代码块对支付网关进行排序。查看文档,了解 Ruby 的 sort_by! 方法。

PaymentGateway

方法

返回类型

描述

.name

字符串

返回支付网关的名称。

.enabled_card_brands

List

如果支付网关支持信用卡,则返回商店接受的信用卡类型列表。如果网关不支持信用卡,则返回空列表。

.change_name(String new_name)

字符串

更改支付网关的名称。

示例

在以下订单商品脚本示例中,当客户订购非礼品卡的产品时,产品价格会降低 9 美元。此外还会显示该客户在对您的在线商店的所有访问中花费的总金额:customer = Input.cart.customerInput.cart.line_items.eachdo |line_item| product = line_item.variant.productnext 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

了解详细信息

详细了解以下内容:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值