@extends('admin.layout') @section('title', 'Stripe Integration') @section('content')

Stripe Integration

@if (session('connection_result'))
{{ session('connection_result') }}
@endif @php($configured = $configuration->isConfigured())

Stripe API: {{ $configured ? 'Configured' : 'Not configured / invalid' }}

Checkout status: {{ $checkoutAvailable ? 'Available' : 'Unavailable until valid API credentials, a matching webhook secret, and NGN currency are configured.' }}

Mode
{{ strtoupper($configuration->mode()) }}
Publishable key
{{ $configuration->maskedPublishableKey() }}
Secret key
{{ $configuration->secretKey() ? 'Configured' : 'Not configured' }}
Key modes
{{ $configuration->keyModeMatchesSecret() ? 'Consistent' : 'Mismatch' }}
Webhook secret
{{ $configuration->hasWebhookSecret() ? 'Configured' : 'Not configured' }}
Currency
{{ strtoupper(config('services.stripe.currency')) }}
Currency supported by this form
{{ $configuration->supportsConfiguredCurrency() ? 'Yes (NGN)' : 'No — donation checkout requires NGN' }}
Webhook endpoint (POST)
{{ $webhookUrl }}

Connection test

The test performs a read-only Stripe account API request. Secret credentials are not displayed or logged.

@csrf

Stripe Dashboard setup

Register this exact endpoint as a webhook in the Stripe Dashboard for the same TEST or LIVE mode as the API keys above. Copy that endpoint's signing secret to STRIPE_WEBHOOK_SECRET.

Enable checkout.session.completed, checkout.session.async_payment_succeeded, checkout.session.async_payment_failed, checkout.session.expired, payment_intent.succeeded, payment_intent.payment_failed, and charge.refunded.

@endsection