Webhook

您可以使用webhook订阅来接收有关商店中特定事件的通知。订阅Webhook之后,可以在安装了应用程序的商店中发生特定事件后立即让应用程序执行代码 ,而不必定期进行API调用以检查其状态。

例如,当客户创建购物车或商户在其Shopify管理员中创建新产品时,您可以依靠webhook触发应用程序中的操作。通过使用webhooks订阅,您可以总体上减少API调用,从而确保您的应用程序更高效并快速更新。

Webhook的解剖

你之后配置网络挂接订阅,您所指定的事件将每次发生时触发网络挂接通知。该通知包含JSON有效负载和提供上下文的HTTP标头。例如,orders/create webhook包含以下标头:

  • X-Shopify-Topic: orders/create
  • X-Shopify-Hmac-Sha256: XWmrwMey6OsLMeiZKwP4FppHH3cmAiiJJAweH5Jo4bM=
  • X-Shopify-Shop-Domain: johns-apparel.myshopify.com
  • X-Shopify-API版本: 2021-01
  • X-Shopify-Webhook-Id: b54557e4-bdd9-4b37-8a5f-bf7d70bcd043

一些HTTP标头对于您的应用程序特别有用。例如,X-Shopify-Hmac-Sha256 用于验证webhooksX-Shopify-Webhook-Id用于标识唯一的webhooks以及 X-Shopify-Shop-Domain用于标识与其关联的商店。

API版本

X-Shopify-API-Version用于确认用于序列化webhook事件有效负载的Admin API版本。您可以将您的应用配置 为对所有Webhooks使用特定的API版本,并且将尽可能使用该版本。如果将某个应用程序设置为使用不再受支持的API版本,则Shopify将落后于使用受支持的最早版本。

注意事项

如果您通过Shopify管理员创建Webhook订阅,则该Webhook将不会在API调用中返回。这些Webhook订阅仅与商店相关联,因此API无法访问它们。

Webhook订阅仅适用于已注册的应用程序。这意味着当向应用程序注册Webhook订阅时,其他应用程序将无法查看,修改或删除它。

要了解如何对Webhook进行身份验证,请参阅使用Admin API管理Webhook。有关身份验证的一般信息,请参阅Shopify API身份验证

Amazon EventBridge集成

您还可以使用Amazon EventBridge从商店接收Webhook事件。

要了解如何通过将应用程序与Amazon EventBridge集成来管理大量事件通知,请参阅使用Amazon EventBridge管理webhook事件

支持的Webhook事件和主题列表

您可以检索JSON或XML格式的数据。Webhooks可用于以下事件:

大事记 主题
计费尝试 subscription_billing_attempts/failure, subscription_billing_attempts/success
查看回应
大车 carts/create, carts/update
查看回应
退房 checkouts/create, checkouts/update
查看回应
checkouts/delete
查看回应
收藏 collections/create, collections/update
查看回应
collections/delete
查看回应
收藏出版 collection_listings/add, collection_listings/update
查看回应
collection_listings/remove
查看回应
顾客 customers/create,customers/disable,customers/enable,customers/update
查看回应
customers/delete
查看回应
客户付款方式 customer_payment_methods/create,customer_payment_methods/revoke,customer_payment_methods/update
查看回应
客户保存的搜索 customer_groups/create, customer_groups/update
查看回应
customer_groups/delete
查看回应
争议 disputes/create, disputes/update
查看回应
领域 domains/create,domains/destroy,domains/update
查看回应
DraftOrder draft_orders/create, draft_orders/update
查看回应
draft_orders/delete
查看回应
履行 fulfillments/create, fulfillments/update
查看回应
履行事件 fulfillment_events/create
查看回应
fulfillment_events/delete
查看回应
库存物品 inventory_items/create, inventory_items/update
查看回应
inventory_items/delete
查看回应
库存水平 inventory_levels/connect,inventory_levels/disconnect,inventory_levels/update
查看回应
地点 locations/create, locations/update
查看回应
locations/delete
查看回应
命令 orders/cancelled,orders/create,orders/fulfilled,orders/paid,orders/partially_fulfilled,orders/updated
查看回应
orders/delete
查看回应
订单编辑 orders/edited
查看回应
OrderTransaction order_transactions/create
查看回应
产品 products/create, products/update
查看回应
products/delete
查看回应
产品清单 product_listings/add, product_listings/update
查看回应
product_listings/remove
查看回应
轮廓 profiles/create, profiles/update
查看回应
profiles/delete
查看回应
退款 refunds/create
查看回应
店铺 app/uninstalled, shop/update
查看回应
ShopAlternateLocale locales/create, locales/update
查看回应
订阅合约 subscription_contracts/create, subscription_contracts/update
查看回应
投标交易 tender_transactions/create
查看回应
主题 themes/create,themes/publish,themes/update
查看回应
themes/delete
查看回应

Webhook可以做什么

Shopify API使您可以使用Webhook资源执行以下操作。这些常规操作的更详细的版本可能可用:

Webhook属性

地址 plain "address": "https://apple.com/uninstall" 事件发生时,webhook订阅应在其中发送POST请求的URI。
api_version 只读 plain "api_version": "2019-10" Shopify用于序列化Webhook事件的Admin API版本。此值由创建Webhook的应用设置。
created_at 只读 plain "created_at": "2012-09-28T11:50:07-04:00" 创建Webhook订阅的日期和时间。API以ISO 8601格式返回此值。
领域 plain "fields": [ "id", "updated_at" ] Webhook订阅中应包含的可选字段数组。
格式 plain "format": "json" Webhook订阅应发送数据的格式。有效值为JSONXML
ID 只读 plain "id": 901431826 Webhook订阅的唯一数字标识符。
metafield_namespaces plain "metafield_namespaces": [ "google", "inventory" ] 每个Webhook应包含的任何元字段的名称空间的可选数组。
private_metafield_namespaces plain "private_metafield_namespaces": [ "myapp" ] 每个Webhook都应包含的任何私有元字段的名称空间的可选数组。
话题 plain "topic": "app/uninstalled" 触发Webhook的事件。有效值包括:app /未安装,购物车/创建,购物车/更新,签出/创建,签出/删除,签出/更新,collection_listings /添加,collection_listings /删除,collection_listings / update,collection / create,collection / delete,collections /更新,customer_groups /创建,customer_groups /删除,customer_groups /更新,customer_payment_methods /创建,customer_payment_methods /撤消,customer_payment_methods /更新,customers / create,customers / delete,customers / disable,customers / enable,customers / update,problems / create,争议/更新,域/创建,域/销毁,域/更新,draft_orders /创建,draft_orders /删除,draft_orders /更新,complement_events /创建,complement_events / delete,complement / create,complement / update,inventory_items / create,stocking_items /删除,
Updated_at 只读 plain "updated_at": "2012-09-28T11:50:07-04:00" Webhook订阅更新的日期和时间。API以ISO 8601格式返回此值。

终点

得到/admin/api/2021-01/webhooks.json 检索Webhook列表。注意:从2019-10版本开始,此端点通过使用响应标头中提供的链接来实现分页。要了解更多信息,请参阅向分页的REST Admin API端点发出请求
地址 检索将POST请求发送到此URI的Webhook订阅。
created_at_max 检索在给定日期和时间之前创建的Webhook订阅(格式:2014-04-25T16:15:47-04:00)。
created_at_min 检索在给定日期和时间之后创建的Webhook订阅(格式:2014-04-25T16:15:47-04:00)。
领域 要为结果列表中的每个项目返回的属性的逗号分隔列表。使用此参数可将返回的项目列表限制为仅指定的那些属性。
限制 应返回的最大Webhook订阅数。将此参数设置在最大范围之外将返回错误。
(默认值:50
最大:250
since_id 将返回列表限制为ID大于指定的since_id的Webhook订阅。
话题 显示具有给定主题的Webhook订阅。有关有效值的列表,请参阅[topic](https://shopify.dev/docs/admin-api/rest/reference/events/webhook#topic-property-2021-01)属性
Updated_at_min 检索在给定日期和时间之前更新的Webhook(格式:2014-04-25T16:15:47-04:00)。
Updated_at_max 检索在给定日期和时间后更新的Webhook(格式:2014-04-25T16:15:47-04:00)。

检索商店的所有Webhook订阅的列表

GET /admin/api/2021-01/webhooks.json

查看回应

在指定的时间后,检索商店的所有Webhook订阅的列表 id

GET /admin/api/2021-01/webhooks.json?since_id=4759306

查看回应

得到/admin/api/2021-01/webhooks/count.json 检索现有的Webhook订阅数
地址 检索将POST请求发送到此URI的Webhook订阅。
话题 显示具有给定主题的Webhook订阅。有关有效值的列表,请参阅[topic](https://shopify.dev/docs/admin-api/rest/reference/events/webhook#topic-property-2021-01)属性

计算您商店的所有Webhook订阅

GET /admin/api/2021-01/webhooks/count.json

查看回应

计算该主题的所有Webhook订阅 orders/create

GET /admin/api/2021-01/webhooks/count.json?topic=orders/create

查看回应

得到/admin/api/2021-01/webhooks/{webhook_id}.json 检索单个Webhook订阅
领域 要为结果列表中的每个项目返回的属性的逗号分隔列表。使用此参数可将返回的项目列表限制为仅指定的那些属性。

通过其检索单个webhook id

GET /admin/api/2021-01/webhooks/4759306.json

查看回应

邮政/admin/api/2021-01/webhooks.json 通过同时指定<font style="background-color:#F4F6F8;">address</font>和来创建新的Webhook订阅<font style="background-color:#F4F6F8;">topic</font> | 格式 | 使用此参数选择有效负载的数据格式。有效值为json和xml。
(默认值:json
) | | :—- | :—- | ### 订阅订单创建网络挂钩 POST /admin/api/2021-01/webhooks.json { “ webhook” : { “ topic” :“订单/创建”, “地址” :“ https://whatever.hostname.com/”, “ format” :“ json” } } 查看回应 ### 尝试创建不带address和的webhook订阅topic将返回422 - Unprocessable Entity错误 POST /admin/api/2021-01/webhooks.json { “ webhook” : { “ body” :“ foobar” } } 查看回应 /admin/api/2021-01/webhooks/{webhook_id}.json 更新Webhook订阅的主题或地址URI

更新Webhook订阅,以便其发布到其他地址

PUT /admin/api/2021-01/webhooks/4759306.json

{

“ webhook” : {

  1. id 4759306
  2. “地址” :“ [https://somewhere-else.com/](https://somewhere-else.com/)”

}

}

查看回应

删除/admin/api/2021-01/webhooks/{webhook_id}.json 删除Webhook订阅

从商店中删除现有的Webhook

删除/admin/api/2021-01/webhooks/4759306.json

查看回应