如何获取从 Shopify Webhook 中删除的订单 ID - Laravel & Shopify
How To Get ID of Order Deleted from Shopify Webhook - Laravel & Shopify
在我的教程中,我意识到我能够在除 orders/delete
之外的每个事件期间获得订单的 number/id。在我下面的控制器中,我尝试检索订单号,就像我对每个主题所做的那样 ('orders/create', 'orders/paid')etc
,但随后我收到一条错误消息:
Undefined index: number in Controller
控制器
public function registerOrderDeleteWebhook()
{
$shop = Auth::user()->site;
$token = Auth::user()->access_token;
$shopify = Shopify::setShopUrl($shop)->setAccessToken($token);
Shopify::setShopUrl($shop)->setAccessToken($token)->post("admin/webhooks.json", ['webhook' =>
['topic' => 'orders/delete',
'address' => 'https://example.domain.com/order-delete-webhook',
'format' => 'json'
]
]);
}
public function orderDeleteWebhook(Request $request)
{
$order = $request->getContent();
$order = json_decode($order, true);
$order_id = $order['number'];
//send notification to Admin with order number deleted below
}
为什么只有 orders/delete
会发生这种情况?
the undefinded index error
发生是因为 Shopify Order Delete webhook 响应中没有数字字段。此外,首先检查该字段是否存在总是一个好主意。
如果您查看 Shopify 发送的 Delete Order response,它仅包括
{
"id": 777859760246
}
其中 id 是订单 ID。但是随着订单被删除,您以后即使通过 API 也无法获得更多详细信息。根据 this forum post 订单必须先取消才能删除。因此,一种解决方法是也监听 Order Cancel 挂钩并将此信息保存在您的 Laravel 应用程序(数据库等)中,稍后在收到 Order Delete webhook 时使用它。
在我的教程中,我意识到我能够在除 orders/delete
之外的每个事件期间获得订单的 number/id。在我下面的控制器中,我尝试检索订单号,就像我对每个主题所做的那样 ('orders/create', 'orders/paid')etc
,但随后我收到一条错误消息:
Undefined index: number in Controller
控制器
public function registerOrderDeleteWebhook()
{
$shop = Auth::user()->site;
$token = Auth::user()->access_token;
$shopify = Shopify::setShopUrl($shop)->setAccessToken($token);
Shopify::setShopUrl($shop)->setAccessToken($token)->post("admin/webhooks.json", ['webhook' =>
['topic' => 'orders/delete',
'address' => 'https://example.domain.com/order-delete-webhook',
'format' => 'json'
]
]);
}
public function orderDeleteWebhook(Request $request)
{
$order = $request->getContent();
$order = json_decode($order, true);
$order_id = $order['number'];
//send notification to Admin with order number deleted below
}
为什么只有 orders/delete
会发生这种情况?
the undefinded index error
发生是因为 Shopify Order Delete webhook 响应中没有数字字段。此外,首先检查该字段是否存在总是一个好主意。
如果您查看 Shopify 发送的 Delete Order response,它仅包括
{
"id": 777859760246
}
其中 id 是订单 ID。但是随着订单被删除,您以后即使通过 API 也无法获得更多详细信息。根据 this forum post 订单必须先取消才能删除。因此,一种解决方法是也监听 Order Cancel 挂钩并将此信息保存在您的 Laravel 应用程序(数据库等)中,稍后在收到 Order Delete webhook 时使用它。