【问题标题】:How To Get ID of Order Deleted from Shopify Webhook - Laravel & Shopify如何获取从 Shopify Webhook 中删除的订单 ID - Laravel 和 Shopify
【发布时间】:2018-11-07 12:04:16
【问题描述】:

在我的教程中,我意识到我能够在除orders/delete 之外的每个事件期间获取订单的编号/ID。在下面的控制器中,我尝试检索订单号,就像我为每个主题 ('orders/create', 'orders/paid')etc 所做的那样,但随后我收到一条错误消息:

未定义的索引:控制器中的数字

控制器

  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会发生这种情况?

【问题讨论】:

  • 您是否尝试转储您的 $request$order 变量?你能把调用orderDeleteWebhook函数的那部分代码放上去吗?
  • @gomd,部分代码已经存在了。当用户在shopify上删除订单时,post请求被发送到地址https://example.domain.com/order-delete-webhook,触发orderDeleteWebhook
  • 好的,那么,您可以尝试使用var_dump 函数转储您的$request$order 变量吗?为了查看问题是否在于您提出请求的方式或您如何解释请求。

标签: php laravel shopify webhooks


【解决方案1】:

未定义的索引错误

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

如果你看一下 Shopify 发送的Delete Order response,它只包括,

{
  "id": 777859760246
}

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

【讨论】:

    猜你喜欢
    • 2018-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-13
    • 1970-01-01
    • 1970-01-01
    • 2012-09-01
    • 1970-01-01
    相关资源
    最近更新 更多