@wyw1204

PHP Отправка xml в EDI kontur через API?

Подскажите как передать XML через curl
Есть метод который создаёт сообщение
POST /V1/Messages/SendMessage
Описание: Метод для отправки сообщения. В теле запроса должен быть передан массив байт – содержимое сообщения.

Request Body принимает string <byte>

С помощью PHP я формирую xml (строка)
Сообщение отправляется но в личном кабинете висит ошибка "файл пуст"
Пробовал закодировать base64 и unpack('C*', $xml) - ничего не принимает.

Поддержка отвечает "Читайте инструкцию"
  • Вопрос задан
  • 87 просмотров
Пригласить эксперта
Ответы на вопрос 1
grantur5707
@grantur5707
Full Stack Web Developer
Возможно вы некорректно формируете массив байтов, либо не задаёте необходимый Content-Type в шапке запроса.
Вот пример корректного запроса:

$xmlContent = '<?xml version="1.0" encoding="UTF-8"?><message>Пример сообщения</message>';

$xmlBytes = unpack('C*', $xmlContent);

$byteString = implode(array_map("chr", $xmlBytes));

$url = 'https://edi.kontur.ru/V1/Messages/SendMessage';

$ch = curl_init($url);

curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    'Content-Type: application/octet-stream',
    ...
));

curl_setopt($ch, CURLOPT_POSTFIELDS, $byteString);

$response = curl_exec($ch);

if (curl_errno($ch)) {
    echo 'Ошибка cURL: ' . curl_error($ch);
} else {
    echo 'Ответ сервера: ' . $response;
}

curl_close($ch);
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы