如何获取从 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 时使用它。