File_get_contents всегда возвращает false


#1

Здравствуйте, посылаю POST запрос из формы в контроллер, при выполнении file_get_contents() запрос выполняется без проблем, заказ создаётся в админке, но при var_dump($query); всегда возвращает false, вне зависимости от того, выполнился запрос успешно или нет.

Сам код:

<?Php if($mode == 'custom_order') { # Параметры. $params = $_REQUEST; $name = $params['name'] ? $params['name'] : 'No Name'; $phone = $params['phone'] ? $params['phone'] : '+77777777777'; $email = $params['email'] ? $params['email'] : 'info@example.com'; $city = $params['city'] ? $params['city'] : 'Алматы'; $address = $params['address'] ? $params['address'] : 'Алматы'; $comment = $params['comment'] ? $params['comment'] : 'Не указан'; # Сообщение. $message = 'Имя: ' . $name; $message .= "\n"; $message .= 'Телефон: ' . $phone; $message .= "\n"; $message .= 'E-Mail: ' . $email; $message .= "\n"; $message .= 'Город: ' . $city; $message .= "\n"; $message .= 'Адрес: ' . $address; $message .= "\n"; $message .= 'Комментарий: ' . $comment; # Логика. if($cart['products']) { $products = []; foreach($cart['products'] as $product) { $products[$product['product_id']] = [ 'amount' => $product['amount'] ]; } $content = [ 'user_id' => $auth['user_id'], 'payment_id' => 19, 'shipping_id' => 13, 'products' => $products, 'notes' => $message ]; if($auth['user_id'] === 0) { $content['user_data'] = [ 'email' => $email, 'b_firstname' => $name, 'b_lastname' => '-', 'b_address' => $address, 'b_city' => $city, 'b_state' => 'ALA', 'b_country' => 'KZ', 'b_zipcode' => '040000', 'b_phone' => $phone, 's_firstname' => $name, 's_lastname' => '-', 's_address' => $address, 's_city' => $city, 's_state' => 'ALA', 's_country' => 'KZ', 's_zipcode' => '040000', 's_phone' => $phone ]; } if($query = file_get_contents('http://example.com/api/2.0/orders/', false, stream_context_create([ 'http' => [ 'method' => 'POST', 'header' => [ 'Authorization: Basic ' . base64_encode('XXX:XXX'), 'Content-type: application/json' ], 'content' => json_encode($content) ] ]))) { # Платёжный шлюз. } else { return [ CONTROLLER_STATUS_OK, 'checkout.checkout' ]; } } else { return [ CONTROLLER_STATUS_OK, 'checkout.cart' ]; } }


#2

А если стандартными средствами попробовать

$query = Http::post('http://example.com/api/2.0/orders/', json_encode($content), [
                'headers' => [
                    'Authorization: Basic ' . base64_encode('XXX:XXX'),
                    'Content-Type: application/json'
                ]
            ]
);

в начале файла не забудьте

use Tygh\Http;


#3

Здравствуйте, при использовании класса HTTP var_dump() по-прежнему возвращает false, не могу понять то ли параметров не хватает в теле контента, то ли API создания заказа сам по себе глючный, проблема в том что при попытке получить результат выполнения скрипта всегда возвращается false, хотя запрос успешно отрабатывает.


#4

Посмотрите заголовки еще

var_dump(Http::getHeaders());