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
用于验证webhooks, X-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资源执行以下操作。这些常规操作的更详细的版本可能可用:
- GET /admin/api/2021-01/webhooks.json检索网络挂钩列表
- GET /admin/api/2021-01/webhooks/count.json收到所有Webhook的计数
- GET /admin/api/2021-01/webhooks/{webhook_id}.json收到一个Webhook
- POST /admin/api/2021-01/webhooks.json创建一个新的Webhook
- PUT /admin/api/2021-01/webhooks/{webhook_id}.json修改现有的Webhook
- 删除/admin/api/2021-01/webhooks/{webhook_id}.json删除现有的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订阅应发送数据的格式。有效值为JSON 和XML 。 |
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” : {
“ id” :4759306,
“地址” :“ [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