@extends('layouts.admin') @section('title', 'Webhook Events') @section('page-title', 'Payment Webhook Events') @section('content')
{{-- Stats --}}
@php $cards = [ ['label' => 'Total', 'value' => $stats['total'], 'color' => 'text-slate-900'], ['label' => 'Queued', 'value' => $stats['queued'], 'color' => 'text-amber-600'], ['label' => 'Processed', 'value' => $stats['processed'], 'color' => 'text-emerald-600'], ['label' => 'Failed', 'value' => $stats['failed'], 'color' => 'text-red-600'], ['label' => 'Stripe', 'value' => $stats['stripe'], 'color' => 'text-indigo-600'], ['label' => 'PayPal', 'value' => $stats['paypal'], 'color' => 'text-blue-600'], ]; @endphp @foreach($cards as $card)

{{ $card['label'] }}

{{ number_format($card['value']) }}

@endforeach
{{-- Filters --}}
@if(request()->hasAny(['provider','status','event_type'])) Clear @endif
{{-- Table --}}
@forelse($events as $event) @empty @endforelse
Provider Event Type Event ID Status Notes Received Processed At
@if($event->provider === 'stripe') Stripe @else PayPal @endif {{ $event->event_type ?? '—' }} {{ Str::limit($event->event_id, 20) ?? '—' }} @php $badge = match($event->status) { 'processed' => 'bg-emerald-100 text-emerald-700', 'failed' => 'bg-red-100 text-red-700', default => 'bg-amber-100 text-amber-700', }; @endphp {{ ucfirst($event->status) }} {{ $event->processing_notes ?? '—' }} {{ $event->created_at->diffForHumans() }} {{ $event->processed_at?->diffForHumans() ?? '—' }}
No webhook events yet. Events appear here after Stripe or PayPal posts to the webhook endpoints.
@if($events->hasPages())
{{ $events->links() }}
@endif
@endsection