我正在编写我的第一个Shopify应用程序,该应用程序会在库存水平低于阈值时取消发布产品。
为此我注册了一个带有回调网址http://example.com/script.php
的webhook,一旦产品更新事件发生,Shopify将调用该webhook。
在script.php
中如何获取Shopify API令牌以PUT
请求products/update
取消发布?
到目前为止,这是我的script.php
(我知道我缺少hmac
验证,但这不是重点):
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST'){
session_start();
require 'shopify.php';
$api_key = 'api_key';
$secret = 'secret';
$sc = new ShopifyClient($_SERVER['HTTP_X_SHOPIFY_SHOP_DOMAIN'], $_SERVER['HTTP_X_SHOPIFY_HMAC_SHA256'], $api_key, $secret);
$inventory = $_POST['inventory_quantity'];
$old_inventory = $_POST['old_inventory_quantity'];
if($inventory <= 0){
$args = array("product" => array("id" => $_SERVER['HTTP_X_SHOPIFY_PRODUCT_ID'], "published" => false));
$sc->call("PUT","/admin/products/".$_SERVER['HTTP_X_SHOPIFY_PRODUCT_ID'].".json",$args);
}
}
我正在尝试使用$_SERVER['HTTP_X_SHOPIFY_HMAC_SHA256']
,但显然这是错误的。
答案 0 :(得分:2)
Shopify会在每个webhook的标题中向您发送商店名称。因此,您的webhook现在可以验证来电,并使用商店名称,您只需查询您的持久层以获取匹配的商店凭据。如果您找到商店,您可以非常轻松地打开API会话,因为您有两件事需要:
请注意,隐藏产品的更好方法是考虑收听订单和产品的订单webhooks,然后查询所售产品的库存水平。对于与订单相比可能需要处理的呼叫数量而言,处理产品/更新webhook可能会非常令人讨厌。