Google Invisible reCAPTCHA

#
Google Invisible reCAPTCHA
Доброго времени суток. Кто внедрял Invisible reCAPTCHA для форм? Поделитесь кодом?
E-mail: info@syrbek.ru / телега: @syrbek /skype: activexm / syrbek.ru / Поддержка сайтов / г. Москва [HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, Git, SVN, Redmine]
#
Re: Google Invisible reCAPTCHA
Seri,
разницы никакой, кроме дополнительного параметра
к нужному тегу добавляется атрибут data-size="invisible", либо в инициализаторе добавляется параметр: size      : 'invisible',
HostDev.pw - модули для HostCMS, Telegram: @hostdev
#
Re: Google Invisible reCAPTCHA
Seri,
Вы разобрались с  Invisible reCAPTCHA для форм? Поделитесь решением пожалуйста. При
<div class="g-recaptcha" data-sitekey="{/form/site_key}" data-size="invisible"></div>

не срабатывает reCaptcha
В говно может вступить любой желающий. (с)
#
Re: Google Invisible reCAPTCHA
Rewired,
HTML
<form>
                    <button type="submit" class="btn btn-primary btn-footer g-recaptcha" data-sitekey="RECAPTCHA_SITEKEY" data-callback="onSubmitRecaptcha" data-size="invisible">Отправить</button>
</form>

JS
function onSubmitRecaptcha(token) {
    var footer = $("#form");
    if(footer.valid())
    {
        $.ajax({
            url: footer.attr("action"),
            type: footer.attr("method") ? footer.attr("method") : "get",
            data: footer.serialize(),
            beforeSend: function() {
                $.loadingScreen('show');
            },
            success: function (data) {
                if(parseInt(data.code) > 0)
                {
                    footer.hide();
                    footer.parent().find('.success_message').html(data.message);
                }
                else
                {
                    footer.find('.error_message').html(data.message);
                }
            },
            error: function (data) {
                console.log('Error', data);
            },
            complete: function() {
                $.loadingScreen('hide');
            },
            dataType: "json"
        })
    }
    else
    {
        grecaptcha.reset() ;
    }
}

https://developers.google.com/recaptcha/docs/invisible
E-mail: info@syrbek.ru / телега: @syrbek /skype: activexm / syrbek.ru / Поддержка сайтов / г. Москва [HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, Git, SVN, Redmine]
#
Re: Google Invisible reCAPTCHA
Seri,
Спасибо за Ваш вариант
Я сделал с DIV еще вчера, забыл отписаться

Размещаем код невидимки
<div class="g-recaptcha" data-sitekey="{/form/site_key}" data-callback="onloadCallback" data-size="invisible"></div>

После него уже где то под конец xsl темплейта вставляем
<script>
         function onloadCallback() {
         grecaptcha.execute();
      }
      </script>
для обработки челленджа нашей рекапчи
и при вызове API указываем
?onload=onloadCallback

как тут:
<script src="https://www.google.com/recaptcha/api.js?onload=onloadCallback" async defer></script>

и у меня все заработало.
В говно может вступить любой желающий. (с)
#
Re: Google Invisible reCAPTCHA
На сколько я понял, за проверку капчи отвечает вот это:
if ($oShop->use_captcha == 0 || $siteuser_id > 0 || Core_Captcha::valid(Core_Array::getPost('captcha_id'), Core_Array::getPost('captcha')))
{

А если вот это:  
Core_Captcha::valid(Core_Array::getPost('captcha_id'), Core_Array::getPost('captcha'))
заменить на результат функции например:
function answer(){
   $sSecretKey = "xxx"; // Указывается секретный ключ reCAPTCHA
      if (Core_Array::getPost('g-recaptcha-response'))
    {
      $sResponse = Core_Array::getPost('g-recaptcha-response');

         $sUrl = 'https://www.google.com/recaptcha/api/siteverify?secret=' . $sSecretKey . "&response=" . $sResponse;    

         $aAnswer = json_decode(file_get_contents($sUrl), TRUE);

               if ($aAnswer['success'])
            {
               return TRUE;
            }
              else
              {
            Core_Log::instance()
                ->clear()
                ->status(Core_Log::$ERROR)->write('Google Recaptcha: ' . $aAnswer['error-codes'][0]);
              }
            }
        }

и уже потом
if (]if ($oShop->use_captcha == 0 || $siteuser_id > 0 || answer())
{

Насколько жизнеспособен такой вариант?

PS Вне зависимости от того, магазин это, ИС или регистрация пользователя.
В говно может вступить любой желающий. (с)
#
Re: Google Invisible reCAPTCHA
Написал jQuery плагин для быстрого подключения рекаптчи к формам со стороны браузера

https://github.com/EugenyP/jquery.grecaptcha.js
HostDev.pw - модули для HostCMS, Telegram: @hostdev
#
Re: Google Invisible reCAPTCHA
Здравствуйте, EugenyP.
Это для recaptcha v3 подходит?
Серверной части нет на гите?
#
Re: Google Invisible reCAPTCHA
Здравствуйте, zdweb.
На 3 версии не проверял.
Здесь написано
Цитата:
Make the request to verify the response token as with reCAPTCHA v2 or Invisible reCAPTCHA.

Т.е. запрос на сервере такой же как и раньше

$sResponse = Core_Array::getPost('g-recaptcha-response');
$sUrl = 'https://www.google.com/recaptcha/api/siteverify?secret=' . $sSecretKey . "&response=" . $sResponse;
$aAnswer = json_decode(file_get_contents($sUrl), TRUE);
HostDev.pw - модули для HostCMS, Telegram: @hostdev
Авторизация