В своем уроке я понял, что могу получить номер / идентификатор заказа во время каждого мероприятия, кроме orders/delete
, В моем контроллере ниже, я пытаюсь получить номер заказа, как я делаю для каждой темы ('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
?
неопределенная ошибка индекса
происходит потому, что в ответе интернет-крюка Shopify Order нет числового поля. Кроме того, это всегда хорошая идея, чтобы проверить, существует ли поле в первую очередь.
Если вы посмотрите на Удалить отзыв заказа отправлено Shopify, оно включает только
{
"id": 777859760246
}
где id — это идентификатор заказа. Но так как заказ удален, вы не сможете получить более подробную информацию позже даже через API. В соответствии с это сообщение на форуме заказ не может быть удален, пока он не будет отменен первым. Поэтому обходной путь заключается в том, чтобы прослушать ловушку Order Cancel и сохранить эту информацию где-нибудь в вашем приложении Laravel (база данных и т. Д.) И использовать ее позже, когда будет получен веб-крючок Order Delete.
Других решений пока нет …