Удаленный API-запрос модуля Prestashop - PullRequest
0 голосов

У меня проблема с моим модулем 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.

...