Невидимая (скрытая) captcha

На странице reCaptcha надо добавить свой сайт. После чего в настройках станут доступы «ключ сайта» и «секретный ключ».

Потом на сайте добавить скрипт для капчи:

<script src="https://www.google.com/recaptcha/api.js?render=PUBLIC_KEY" async defer></script>

И на кнопку отправки формы добавить атрибуты data-sitekey и data-callback.

<form>
    <!-- Поля форм -->
    <input type="submit" data-sitekey="PUBLIC_KEY" data-callback="functionName">
</form>

<script>
function functionName(token) {
    // функция для отправки ajax-запроса
}
</script>

Выполнение кода на строне PHP.

$secretKey = 'секретный ключ при создании recaptcha';

$url = "https://www.google.com/recaptcha/api/siteverify?secret=".$secretKey ."&response=".$_POST['g-recaptcha-response']."&remoteip=".$_SERVER['REMOTE_ADDR'];

$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$curlData = json_decode(curl_exec($curl));
curl_close($curl);

if (!$curlData->success) {
    $aResponse['error'] = true;
    $aResponse['message'] = 'Не корректно пройдена капча';
    echo json_encode($aResponse); die();
}