У меня проблема с моим модулем Prestashop. Я пытаюсь отправить сообщение с заказом товаров в hookActionValidateOrder. Но если я получаю сообщение об ошибке в API или оно просто не работает, клиент "страница подтверждения заказа" не загружается (потому что ожидает ответа API).
Вопрос в том, могу ли я как-нибудь сделать запрос на отправку с РАБОТНИКАМИ или заданиями. Или следует создать код с кодом ajax и передать его шаблону «страница подтверждения заказа», чтобы он отправлял запрос после просмотра страницы пользователем и не блокировал запрос. Извините за мой Engli sh, я надеюсь, вы поймете мой вопрос
public function hookActionValidateOrder($params)
{
if (Configuration::get('MY_API_STATUS') == 1) {
$id_order = $params['order']->id;
$products = $params['order']->getProducts();
$data = [];
$data['account_id'] = Configuration::get('MY_API_ACCOUNT_ID');
$data['project_id'] = Configuration::get('MY_API_PROJECT_ID');
$data['order_id'] = $id_order;
$productsData = [];
foreach ($products as $productItem) {
$product = array();
$product['order_id'] = $id_order;
$product['project_id'] = $data['project_id'];
$product['account_id'] = $data['account_id'];
$product['product_id'] = $productItem['product_id'];
$product['product_cost'] = Product::getPriceStatic($productItem['product_id']);
$product['quantity'] = $productItem['product_quantity'];
$productsData[] = $product;
}
$data['products'] = $productsData;
$returned = static::sendData($this->orderHookUrl, $data);
}
return;
}
это код sendData
private function sendData($url, $dataJson)
{
$payload = json_encode($dataJson);
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLINFO_HEADER_OUT, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'Content-Length: ' . Tools::strlen($payload)));
$result = curl_exec($ch);
curl_close($ch);
return json_decode($result, true);
}
Вопрос, как это сделать, не блокируя хук, так клиент может увидеть страницу подтверждения, не дожидаясь ответа от API.