Мало что может помешать работе вашего кода:
1. Преобразование массива в строку
Вы объявили тело запроса в виде массива в $body
. Вам нужно JSON-кодировать его перед передачей в cURL:
$body = array('Filter' => array('SKU'=>$filters, 'OutputSelector' => $selectors));
$bodyJSON = json_encode($body);
[...]
curl_setopt($ch, CURLOPT_POSTFIELDS, $bodyJSON);
2. HTTPS-запрос
Если вы получаете пустой ответ, вам также необходимо настроить cURL для связи SSL. Быстрое решение этой проблемы - игнорировать действительность сертификата удаленного сервера:
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
Хотя это работает, см. этот ответ для лучшего решения.
3. Отсутствует тип контента
При отправке необработанных пост-полей некоторые серверы должны знать, какой тип данных вы отправляете. Это делается путем установки заголовка Content-Type
:
$headers = array(
"Content-Type: application/json",
[...]
);