settings->get('integration.webhook_enabled', false); $url = $this->settings->get('integration.webhook_url'); if (!$enabled || empty($url)) { return; } $secret = $this->settings->get('integration.webhook_secret'); $signature = $secret ? hash_hmac('sha256', json_encode($data), $secret) : null; try { Http::timeout(5) ->withHeaders(array_filter([ 'X-Webhook-Event' => $event, 'X-Webhook-Signature' => $signature, ])) ->post($url, [ 'event' => $event, 'data' => $data, 'sent_at' => now()->toIso8601String(), ]); } catch (\Throwable $e) { Log::warning('Webhook dispatch failed', ['event' => $event, 'message' => $e->getMessage()]); } } }