• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/webform/recaptcha.php
  • Класс: Bitrix\Crm\WebForm\ReCaptcha
  • Вызов: ReCaptcha::verify
public function verify($response, $remoteIp = null)
{
	$this->error = '';
	// Discard empty solution submissions
	if (empty($response))
	{
		$this->error = Loc::getMessage('CRM_WEBFORM_RECAPTCHA_ERROR_MISSING_INPUT_RESPONSE');
		return false;
	}

	$rawResponse = $this->httpClient->post(
		'https://www.google.com/recaptcha/api/siteverify',
		array(
			'secret' => $this->secret,
			'response' => $response,
			'remoteip' => $remoteIp ? $remoteIp : Context::getCurrent()->getServer()->get('REMOTE_ADDR'),
		)
	);

	try
	{
		$response = Json::decode($rawResponse);
	}
	catch (\Exception $exception)
	{
		$this->error = $exception->getMessage();
		return false;
	}

	if (!empty($response['error-codes']))
	{
		switch ($response['error-codes'][0])
		{
			case 'invalid-input-response':
				$this->error = Loc::getMessage('CRM_WEBFORM_RECAPTCHA_ERROR_INVALID_INPUT_RESPONSE');
				break;

			case 'missing-input-response':
				$this->error = Loc::getMessage('CRM_WEBFORM_RECAPTCHA_ERROR_MISSING_INPUT_RESPONSE');
				break;

			case 'invalid-input-secret':
				$this->error = Loc::getMessage('CRM_WEBFORM_RECAPTCHA_ERROR_INVALID_INPUT_SECRET');
				break;

			case 'missing-input-secret':
				$this->error = Loc::getMessage('CRM_WEBFORM_RECAPTCHA_ERROR_MISSING_INPUT_SECRET');
				break;

			default:
				$this->error = 'reCAPTCHA: ' . Loc::getMessage('CRM_WEBFORM_RECAPTCHA_ERROR_UNKNOWN');
				break;
		}

	}

	return (bool) $response['success'];
}