* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * @copyright PayPal */ namespace PaypalAddons\classes\Webhook; use PaypalAddons\classes\AbstractMethodPaypal; use PaypalAddons\classes\API\Request\V_1\ValidateWebhookEventRequest; class RequestValidator { public function validateIPN($data) { $curl = curl_init($this->getIpnPaypalListener() . '?cmd=_notify-validate&' . http_build_query($data)); curl_setopt($curl, CURLOPT_HEADER, 0); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_TIMEOUT, 90); $response = curl_exec($curl); return trim($response) == 'VERIFIED'; } /** * @return string */ protected function getIpnPaypalListener() { return (new IpnPaypalListener())->get(); } /** * @param array $headers * @param string $request * * @return bool */ public function isValidWebhookEvent($headers, $request, $attemptCount = 1) { $attemptCountDone = 0; $validateRequest = new ValidateWebhookEventRequest( AbstractMethodPaypal::load(), $headers, $request ); while ($attemptCount > $attemptCountDone) { ++$attemptCountDone; $isValid = $validateRequest->execute()->isSuccess(); if ($isValid) { return true; } } return false; } }