@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.
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