Запрос Square Webhook Curl Put

В документации API Square указано, что для настройки веб-хуков вам просто нужно выполнить следующий запрос CURL:

curl -X PUT -H "Авторизация: Bearer PERSONAL_ACCESS_TOKEN" -H "Тип контента: application/json" -d "[\"PAYMENT_UPDATED\"]" https://connect.squareup.com/v1/LOCATION_ID/webhooks

Я перевел это на следующее в PHP:

    echo "<br>curl started<br>";

    // create curl resource
    $ch = curl_init();

    $data = array(
    "[\"PAYMENT_UPDATED\"]",
    );

    // set url

    curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "PUT");

    curl_setopt($curl, CURLOPT_HTTPHEADER, array("Authorization: Bearer XYZXYZXYZXYZXYZXYZ", "Content-type: application/json\r\n"));

    curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($data));

    curl_setopt($ch, CURLOPT_URL, "https://connect.squareup.com/v1/XYZXYZXYZXYZXYZXYZ/webhooks");

    //return the transfer as a string
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

    // $output contains the output string
    $output = curl_exec($ch);

    echo $output;

    // close curl resource to free up system resources
    curl_close($ch);     

    echo "<br>curl ends<br>";

но без радости, видимо, мой «неверный формат заголовка авторизации», но я понятия не имею, как это исправить?


person user1419810    schedule 13.04.2018    source источник
comment
Прочтите справочную страницу curl, чтобы узнать, что означают переключатели, затем прочитайте документацию php curl-api и попытайтесь найти концепции из справочной страницы - если вы дополнительно посмотрите на curl-php-code, который легко найти через веб-поиск, у вас должен быть код мгновенно. И если этот код не работает, вернитесь с вопросом по этому коду.   -  person Tom Regner    schedule 13.04.2018
comment
Спасибо, я прочитал, и все это имело смысл, но до сих пор нет радости, есть идеи, что я делаю неправильно?   -  person user1419810    schedule 13.04.2018
comment
Ваш личный токен доступа случайно не содержит знак $? Затем поместите заголовок в одинарные кавычки, чтобы предотвратить интерполяцию. Сейчас в пути, посмотрю позже   -  person Tom Regner    schedule 13.04.2018
comment
Не могли бы вы завершить этот вопрос, приняв ответ @tristansokol - если ваша проблема решена сейчас, или дополните комментарий или отредактируйте?   -  person Tom Regner    schedule 17.04.2018


Ответы (1)


У вас проблема с кодом. Когда вы запускаете свой код, вы должны увидеть следующие ошибки в дополнение к описанному вами выводу:

<br>curl started<br>
Warning: curl_setopt() expects parameter 1 to be resource, null given in /Users/tristans/Desktop/test.php on line 13

Warning: curl_setopt() expects parameter 1 to be resource, null given in /Users/tristans/Desktop/test.php on line 15

Warning: curl_setopt() expects parameter 1 to be resource, null given in /Users/tristans/Desktop/test.php on line 17
{"type":"unauthorized","message":"Authorization header format incorrect"}<br> 

Если вы этого не видите, вам следует увеличить уровень ведения журнала. Проблема в том, что вы перепутали $ch и $curl

Попробуйте этот код:

<?php
echo "<br>curl started<br>";

// create curl resource
$ch = curl_init();

$data = array(
"[\"PAYMENT_UPDATED\"]",
);

// set url

curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");

curl_setopt($ch, CURLOPT_HTTPHEADER, array("Authorization: Bearer sq0atp-XXXXXXXXXXX", "Content-type: application/json\r\n"));

curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));

curl_setopt($ch, CURLOPT_URL, "https://connect.squareup.com/v1/XXXXXXXXXX/webhooks");

//return the transfer as a string
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

// $output contains the output string
$output = curl_exec($ch);

echo $output;

// close curl resource to free up system resources
curl_close($ch);

echo "<br>curl ends<br>";
?>
person tristansokol    schedule 13.04.2018