UnluckySerivelha
@UnluckySerivelha

Почему при передаче файла через curl возвращается http_code 0?

Нужно передавать в кассу бифит по апи csv-файл с товарами.
У них есть документация (в конце, importCsvData).

Использую такой POST-запрос через curl
$url = "https://kassa.bifit.com/cashdesk-api/v1/protected/exchange/csv/upload?organization_id=1611916961259-481504684&charset=UTF-8";

$post_data = array (
);

$post_data['file'] = new \CurlFile('file.csv', 'text/csv', 'file.csv');

$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: multipart/form-data', $authorization ));
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// Указываем, что у нас POST запрос
curl_setopt($ch, CURLOPT_POST, 1);
// Добавляем переменные
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);

$output = curl_exec($ch);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);

curl_close($ch);
echo 'http code: ' . $http_code; // Выведет: 0
echo $output;


Почему-то при передаче файла не возвращается ответ от сервера, а возвращается http_code 0. Как понимаю, ошибка.
Если не передавать файл, то ответ от сервера возвращается, но соответственно ругается на отсутствие файла в теле запроса.
Попробовал логировать запрос - судя по логу, соединение просто закрывается или я чего-то не понимаю
*   Trying 109.232.254.149...
* TCP_NODELAY set
* Connected to kassa.bifit.com (109.232.254.149) port 443 (#0)
* ALPN, offering http/1.1
* Cipher selection: ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH
* successfully set certificate verify locations:
  CAfile: c:/ospanel/modules/php/PHP_5.6/cacert.pem
  CApath: none
* SSL connection using TLSv1.2 / ECDHE-RSA-AES256-GCM-SHA384
* ALPN, server accepted to use http/1.1
* Server certificate:
*  subject: CN=kassa.bifit.com
*  start date: Jan  8 09:10:59 2021 GMT
*  expire date: Apr  8 09:10:59 2021 GMT
*  subjectAltName: host "kassa.bifit.com" matched cert's "kassa.bifit.com"
*  issuer: C=US; O=Let's Encrypt; CN=R3
*  SSL certificate verify ok.
* Closing connection 0


В чем может быть проблема? Куда копать, как дебажить?

UPD:
При таком же запросе через https://web.postman.co/ всё корректно работает. Так что проблема точно в прикреплении файла curl'ом
  • Вопрос задан
  • 218 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

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