responseProvider = $responseProvider; $this->validate = $validate; $this->failureProvider = $failureProvider; $this->remoteAddress = $remoteAddress; $this->isCheckRequired = $isCheckRequired; } /** * @param Observer $observer * @return void */ public function execute(Observer $observer) { if ($this->isCheckRequired->execute()) { $reCaptchaResponse = $this->responseProvider->execute(); $remoteIp = $this->remoteAddress->getRemoteAddress(); /** @var \Magento\Framework\App\Action\Action $controller */ $controller = $observer->getControllerAction(); if (!$this->validate->validate($reCaptchaResponse, $remoteIp)) { $this->failureProvider->execute($controller ? $controller->getResponse(): null); } } } }