validateToken($turnstileToken, $turnstileSettings); if (!$isValidToken) { return new \WP_Error( 'turnstile_invalid', __('Security check failed. Please try again or refresh the page.', 'fluent-cart') ); } return $isValid; } /** * Validate Cloudflare Turnstile token * * @param string $token * @param array $turnstileSettings * @return bool */ public function validateToken($token, $turnstileSettings) { $secretKey = Arr::get($turnstileSettings, 'secret_key', ''); if (empty($secretKey)) { return false; } $ipAddress = AddressHelper::getIpAddress(); $response = wp_remote_post('https://challenges.cloudflare.com/turnstile/v0/siteverify', [ 'body' => [ 'secret' => $secretKey, 'response' => $token, 'remoteip' => $ipAddress ], 'timeout' => 10 ]); if (is_wp_error($response)) { return false; } $body = wp_remote_retrieve_body($response); $result = json_decode($body, true); return isset($result['success']) && $result['success'] === true; } }