首页 > 解决方案 > 如何获取从 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

标签: phplaravelshopifywebhooks

解决方案


未定义的索引错误

发生是因为 Shopify Order Delete webhook 响应中没有数字字段。此外,首先检查该字段是否存在总是一个好主意。

如果您查看Shopify 发送的删除订单响应,它仅包括:

{
  "id": 777859760246
}

其中 id 是订单 ID。但随着订单被删除,您以后即使通过 API 也无法获得更多详细信息。根据此论坛帖子,订单必须先取消才能删除。因此,一种解决方法是也收听 Order Cancel 挂钩并将此信息保存在您的 Laravel 应用程序(数据库等)中,并在收到 Order Delete webhook 时使用它。


推荐阅读