Как отправить ответ 200 OK и данные обратно в smartsheet - PullRequest
0 голосов
/ 26 апреля 2020

Борьба за то, чтобы заставить работать веб-хук - Продолжайте получать следующую ошибку в статусе:

["status"] => string (28) "DISABLED_VERIFICATION_FAILED" ["disabledDetails"] = > string (126) "В ответе отсутствовал проверочный ответ как в заголовке, так и в теле, или тело JSON могло быть недействительным. (ref id: hdc2kn4zri14)" ["version"] => int (1) ["creationAt"] => string (20) "2020-04-26T13: 27: 44Z" ["ifiedAt "] => string (20)" 2020-04-26T13: 28: 43Z "}}

вот мой слушатель webhook - что случилось?

nb Я удалил свои токены и заменил на xxxxxxxx

$body = file_get_contents("php://input");
$webhook = json_decode($body, true);


$challenge = $webhook["challenge"];


//setup WEbhook data
$Response_error=FALSE;
//Set API Token
$SSAPIToken = $config['smartsheets']['xxxxxxxxxxxxxxxxxx'];

//Set SS-HEADER URL to call
$sheetsURL = "https://api.smartsheet.com/2.0/webhooks";

//________________________________________
//SET WEBHOOK DETAILS
//________________________________________
$data_json = '{   "smartsheetHookResponse": '.$challenge.' ,
    success: true, 
    code: 200 }';

//________________________________________
// Create Headers Array for Curl
$headers = array(
"Authorization: Bearer xxxxxxxxxxxxxxxxxxx",
'Content-Type: application/json',
'Content-Length: ' . strlen($data_json),
'smartsheetHookResponse:'.$Challenge
);

http_response_code(200);


//________________________________________
//Connect to SS and update Sheet
//________________________________________
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$sheetsURL ); 
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT ,0); 
curl_setopt($ch, CURLOPT_TIMEOUT, 400); //timeout in seconds
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLINFO_HEADER_OUT, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);

curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS,$data_json);

$data = curl_exec($ch); 

$status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);   //get status code
$curl_errno = curl_errno($ch);
$curl_error = curl_error($ch);
$information = curl_getinfo($ch);

curl_close($ch);
...