php - 如何获取从 Shopify Webhook 中删除的订单 ID - Laravel 和 Shopify
问题描述
在我的教程中,我意识到我能够在除orders/delete
. 在下面的控制器中,我尝试像为每个主题一样检索订单号('orders/create', 'orders/paid')etc
,但随后出现错误消息:
未定义索引: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
?
解决方案
未定义的索引错误
发生是因为 Shopify Order Delete webhook 响应中没有数字字段。此外,首先检查该字段是否存在总是一个好主意。
如果您查看Shopify 发送的删除订单响应,它仅包括:
{
"id": 777859760246
}
其中 id 是订单 ID。但随着订单被删除,您以后即使通过 API 也无法获得更多详细信息。根据此论坛帖子,订单必须先取消才能删除。因此,一种解决方法是也收听 Order Cancel 挂钩并将此信息保存在您的 Laravel 应用程序(数据库等)中,并在收到 Order Delete webhook 时使用它。