whereIn('type', StripeWebhookHandler::HANDLED_TYPES) ->orderBy('id'); if ($this->option('event')) { $query->where('event_id', $this->option('event')); } $pending = $query->get(); if ($pending->isEmpty()) { $this->info('Keine unverarbeiteten Stripe-Events.'); return self::SUCCESS; } $processed = 0; $skipped = 0; foreach ($pending as $storedEvent) { try { if ($webhookHandler->processStoredEvent($storedEvent)) { $processed++; $this->info("Verarbeitet: {$storedEvent->event_id} ({$storedEvent->type})"); } else { $skipped++; $this->warn("Weiterhin nicht zuordenbar: {$storedEvent->event_id} ({$storedEvent->type})"); } } catch (\Throwable $e) { $skipped++; $this->error("Fehler bei {$storedEvent->event_id}: {$e->getMessage()}"); \Log::channel('stripe')->error('stripe:process-pending-events fehlgeschlagen', [ 'event_id' => $storedEvent->event_id, 'type' => $storedEvent->type, 'error' => $e->getMessage(), ]); } } \Log::channel('stripe')->info("stripe:process-pending-events: {$processed} verarbeitet, {$skipped} übersprungen."); $this->info("Fertig: {$processed} verarbeitet, {$skipped} übersprungen."); return self::SUCCESS; } }