reCapche v3 возвращает не валидный JSON
Устанавливаю на сайт reCapthe v3. За основу взял код
# BEGIN Setting reCaptcha v3 validation data
$url = "https://www.google.com/recaptcha/api/siteverify";
$data = [
'secret' => SECRET_KEY,
'response' => $_POST['g-recaptcha'],
'remoteip' => $_SERVER['REMOTE_ADDR']
];
$options = array(
'http' => array(
'header' => "Content-type: application/x-www-form-urlencoded\r\n",
'method' => 'POST',
'content' => http_build_query($data)
)
);
$context = stream_context_create($options);
$response = file_get_contents($url, false, $context);
$res = json_decode($response, true);
var_dump($response);
if ($res['success'] == true && $res['score'] >= 0.5) {
//My code
}
Token приходит корректно, передаю его в PHP и отправляю по инструкции, в ответ возвращается не валидный JSON: при попытке распарсить его через json_decode выдает ошибку "FATAL ERROR syntax error, unexpected 'success' (T_STRING) on line number 4". Вывожу его в var_dump
string(142) "{
"success": true,
"challenge_ts": "2021-11-08T14:21:39Z",
"hostname": "mySite",
"score": 0.9,
"action": "homepage"
}"
Понимаю, что все дело в первых и последних двойных кавычках, если бы все было обернуто в одинарные, то проблемы бы не было, но как преобразовать полученный JSON в валидный я не понимаю(работать с результатом как со строкой не получается, преобразовать его в JSON и обратно тоже, заменить кавычки на одинарные тоже не получается). Подскажите, что делаю не так? Может я передаю не корректные заголовки при запросе или есть какая то дополнительная настройка при получении строки JSON от стороннего ресурса?