Как через PUT (CURL) отправить данные или что не так?

Отправляю данные в Маркет.
$authKey = 'ХХХХХХХХХХХХХХХХХХХХХХ';
$oauthClientId = 'ХХХХХХХХХХХХХХХХХХХХХХ';
$requestURL = 'https://api.partner.market.yandex.ru/v2/campaigns/ХХХХХХХХХХХХ/offers/stocks.json';
$warehouseId = 111111111;
$headers = array("Authorization: OAuth oauth_token=$authKey, oauth_client_id=$oauthClientId");
header('Content-Type: application/json; charset=UTF-8');


$post_data = array(
    "skus" => array(
        array(
            "sku" => '159865',
            "warehouseId" => warehouseId,
            "items" => array(
                "type" => "FIT",
                "count" => 1,
                "updatedAt" => "2022-03-01T10:00:00+03:00",
            )
        ),
    ),
);



$data_json = json_encode($post_data); // переводим поля в формат JSON

$curl = curl_init();

curl_setopt($curl, CURLOPT_URL, $requestURL);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_POST, false);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'PUT');
curl_setopt($curl, CURLOPT_PUT, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HEADER, true);
curl_setopt($curl, CURLINFO_HEADER_OUT, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data_json);

// Выполнение запроса, получение результата
$result = curl_exec($curl);
// обработку ошибки пропустил
curl_close($curl);


в ответ идет

{
    "error": {
        "code": 400,
        "message": "Required request body is missing"
    },
    "errors": [
        {
            "code": "BAD_REQUEST",
            "message": "Required request body is missing"
        }
    ],
    "status": "ERROR"
}


Но вроде как $post_data сконвертирована в JSON ($data_json) и через curl_setopt($curl, CURLOPT_POSTFIELDS, $data_json); идет попытка отправки.

Что не так? кто то может сталкивался. Суппорт Яндекс пишет что тело пустое. Как тогда передать данные PUT через CURL?
  • Вопрос задан
  • 749 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы