Отправляю данные в Маркет.
$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?