В Google reCaptcha параметр g-recaptcha-response пустой

Я пытаюсь подключить Google reCaptcha на свой сайт, но иногда (примерно 50/50) рекаптча не возвращает параметр g-recaptcha-response (он пустой). ПРи попытке запустить функцию капчи grecaptcha.execute() выдаёт Алерт "Не удается связаться с сервисом reCAPTCHA. Проверьте подключение к Интернету и повторите попытку." Браузер последней версии, ВПН нет, Сайт прокинут через прокси CloudFlare

PHP обработчик:

if (isset($form['g-recaptcha-response']) && !empty($form['g-recaptcha-response'])) {
        $data = array(
            'secret' => $optionsForm['recaptcha_secret_key'],
            'response' => $form['g-recaptcha-response']
        );
        $verify = curl_init();
        curl_setopt($verify, CURLOPT_URL, "https://www.google.com/recaptcha/api/siteverify");
        curl_setopt($verify, CURLOPT_POST, true);
        curl_setopt($verify, CURLOPT_POSTFIELDS, http_build_query($data));
        curl_setopt($verify, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($verify, CURLOPT_RETURNTRANSFER, true);
        $response = curl_exec($verify);
        // d($response);
        if ($response == true) {
            $email = $form['email'];

            $is_valid = preg_match(
                '/^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/',
                $email,
                $matches,
                PREG_OFFSET_CAPTURE
            );

            // Проверка на маты и нежелательные слова
            foreach ($badWords as $badWord) {
                if (strpos(strtolower($email), strtolower(trim($badWord))) !== FALSE) {
                    $respCode = 4; // Найджены слова их блеклиста
                    echo json_encode(array('respCode' => $respCode));
                    wp_die();
                }
            }

            if ($is_valid) {
                $emailChack = $wpdb->get_row("SELECT email FROM $table_name WHERE email='" . $email . "'", OBJECT);

                if ($emailChack->email) {
                    $respCode = 1; // Адрес уже есть
                } else {
                    $wpdb->insert(
                        $table_name,
                        [
                            'email' => esc_sql($email),
                            'ip' => getIP(),
                            'page' => esc_sql($_POST['page']),
                            'date' => current_time('mysql')
                        ]
                    );
                    $respCode = 2; // Адрес добавлен
                }
            } else {
                $respCode = 3; // Непверный формат
            }
        }
    }

Форма:

           <form id="subscribeForm" method="post" class="offset-md-2 col-md-8">
                <div class="d-flex input-container">
                    <input type="email" placeholder="E-mail" name="email" require>
                    <button 
                        class="js-subscribeForm btn btn-js g-recaptcha" 
                        data-sitekey="<?=$optionsForm['recaptcha_site_key']?>" 
                        data-callback='sendForm' 
                        type="submit">
                        <?=$optionsForm['btn_text']?>
                    </button>
                    <p class="subscribeForm-msg js-subscribeFormMsg error js-requiredField"><?=$optionsForm['required_field']?></p>
                    <p class="subscribeForm-msg js-subscribeFormMsg error js-errorMsg"><?=$optionsForm['error_msg']?></p>
                    <p class="subscribeForm-msg js-subscribeFormMsg error js-badWordsMsg"><?=$optionsForm['bad_words_msg']?></p>
                    <p class="subscribeForm-msg js-subscribeFormMsg error js-wrongFormat"><?=$optionsForm['wrong_format']?></p>
                    <p class="subscribeForm-msg js-subscribeFormMsg error js-alreadyExist"><?=$optionsForm['already_exist']?></p>
                    <p class="subscribeForm-msg js-subscribeFormMsg success js-successMsg"><?=$optionsForm['success_msg']?></p>
                </div>
                <?php if(isset($optionsForm['subscribe']) && !empty($optionsForm['subscribe'])): ?>
                    <p><?=$optionsForm['subscribe']?></p>
                <?php endif; ?>
            </form>

JS:

window.sendForm = function(e) {

        let $curForm = $('#subscribeForm'),
            $curEmail = $curForm.find('input[type="email"]').val(),
            $subscribeFormMsg = $('.js-subscribeFormMsg'),
            $requiredField = $('.js-requiredField'),
            $errorMsg = $('.js-errorMsg'),
            $badWordsMsg = $('.js-badWordsMsg'),
            $successMsg = $('.js-successMsg'),
            $wrongFormat = $('.js-wrongFormat'),
            $alreadyExist = $('.js-alreadyExist'),
            isValid = $curForm.find('input[type="email"]').val().toLowerCase()
            .match(
                /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/
            )

        $subscribeFormMsg.removeClass('show')

        if (isValid) {
            grecaptcha.execute()
            $.ajax({
                type: 'POST',
                url: window.ajaxurl,
                data: {
                    action: 'post_subscribe',
                    form: $curForm.serialize(),
                    page: location.href
                },
                success: function(result) {
                    switch (JSON.parse(result).respCode) {
                        case 1: // Адрес уже есть
                            $alreadyExist.addClass('show')
                            break;
                        case 2: // Адрес добавлен
                            $successMsg.addClass('show')
                            break;
                        case 3: // Непверный формат
                            $wrongFormat.addClass('show')
                            break;
                        case 4: // Найдены слова их блеклиста
                            $badWordsMsg.addClass('show')
                            break;
                        default:
                            $errorMsg.addClass('show')
                            break;
                    }
                }
            })
        } else {
            if ($curEmail) {
                $wrongFormat.addClass('show')
            } else {
                $requiredField.addClass('show')
            }
        }
        return false;
    }

Ответы (0 шт):