Обновление инвентаря Square-Connect cURL Call

0

Я пытаюсь обновить свой квадратный инвентарь на веб-сайте базы данных инвентаря, и я продолжаю получать эту ошибку.

Response:{"type":"bad_request","message":"Missing required parameter 'quantity_delta'"}

Я добавляю поле quantity_delta и adjust_type к вызову cURL, потому что это то, что говорит документация, в документации есть 3 варианта, и только 1 из них имеет (необязательно) рядом с ним, поэтому я использую 2, которые кажутся вам требуемыми, Я не могу захватить тело POST, чтобы точно увидеть, как происходит вызов, может быть проблема типа или json_encode, поэтому отладка это дает мне проблему.

Я также пишу заголовки и ответ на текстовый файл для легкого чтения.

Вот код:

$i = $_GET['id'];
$n = $_GET['name'];
$q = $_GET['qty'];
$s = $_GET['sku'];
$c = $_GET['current'];
$sync = $_GET['sync'];

if($c > $q){
    $up = $q - $c;
    $reason = "SALE";
}else{
    $up = $c + $q;
    $reason = "RECEIVE_STOCK";
}
$postData = array(
    "quantity_delta" => $up,
    "adjustment_type" => $reason);
$b = json_encode($postData);
$fp = fopen('curlOut.txt', 'rw+');
fopen('curlOut.txt', 'rw+');
$curl = curl_init();
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Authorization: Bearer *****_******' ));
curl_setopt($curl, CURLOPT_URL, "https://connect.squareup.com/v1/me/inventory/".$i."");
curl_setopt($curl, CURLOPT_POST, TRUE);
curl_setopt($curl, CURLOPT_POSTFIELDS, $b);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($curl, CURLINFO_HEADER_OUT, TRUE);
curl_setopt($curl, CURLOPT_VERBOSE, 1);
curl_setopt($curl, CURLOPT_STDERR, $fp);


if(!curl_exec($curl)){
    die('Error: "' . curl_error($curl) . '" - Code: ' . curl_errno($curl));
}
$filename = 'curlOut.txt';
if (is_writable($filename)){
    echo 'The file is writeable';
}else{
    echo 'nope';
}
$ch = curl_exec ($curl);
$sentCall = curl_getinfo($curl, CURLINFO_HEADER_OUT);
$dump = fopen("curlOut.txt","a") or die("Unable to open file!");
$dumptxt = "Header Info:".$sentCall . "Response:".$ch."\n\n";
fwrite($dump,$dumptxt);
curl_close ($curl);
fclose('curlOut.txt');
var_dump(json_decode($ch,true));

Не могли бы вы рассказать мне, что я делаю неправильно? Я пытался в течение нескольких дней выяснить, что не так с моим вызовом cURL. Я могу делать вызовы cURL для чтения данных из API с квадратным соединением без каких-либо проблем. У меня также есть несколько повторяющихся кодов для отображения вывода/ответа по-разному, надеясь получить дополнительную информацию. Я также опубликую информацию заголовка, которую я получаю, используя CULINFO_HEADER_OUT.

Header Info:POST /v1/me/inventory/011a799a-****-****-****-4f5b70dc1494 HTTP/1.1
Host: connect.squareup.com
Accept: */*
Authorization: Bearer *****_*****
Content-Length: 47
Content-Type: application/x-www-form-urlencoded

Спасибо.

Теги:
curl
square-connect

1 ответ

0
Лучший ответ

Я считаю, что эта ошибка возникает, потому что ваш заголовок Content-Type вашего запроса в настоящее время является application/x-www-form-urlencoded. Запросы API Connect должны иметь Content-Type application/json для соответствия вашему телу запроса.

Это явно бесполезное сообщение об ошибке для получения в этом случае; Я буду работать с командой инженеров API, чтобы улучшить ее.

  • 0
    Это сработало отлично Спасибо!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню