Документация API Square гласит, что для настройки веб-хуков вам просто нужно выполнить следующий запрос CURL:
curl -X PUT -H «Авторизация: Носитель 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>";
но не радость, видимо мой «неверный формат заголовка авторизации», но я понятия не имею, как это исправить?
У вас есть проблема с кодом. Когда вы запускаете свой код, вы должны увидеть следующие ошибки в дополнение к вашему описанному выводу:
<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>";
?>
Других решений пока нет …