@extends('layouts.app') @section('title', 'Platform Settings') @section('content') @include('super-admin.partials.nav') @php $tabs = [ 'platform' => ['label' => 'Platform', 'icon' => 'bolt'], 'branding' => ['label' => 'Branding', 'icon' => 'sparkles'], 'legal' => ['label' => 'Legal / GDPR', 'icon' => 'shield'], 'notifications' => ['label' => 'Defaults', 'icon' => 'alerts'], 'maintenance' => ['label' => 'Maintenance', 'icon' => 'wrench'], 'apps' => ['label' => 'Apps', 'icon' => 'download'], ]; @endphp
@if ($tab === 'platform')
@csrf @method('PUT')

2FA is off by default. Enable Optional/Required here (and/or admin requirement below) when you are ready.

Turn on any combination. Payers choose among the enabled methods. Auto-renew with a saved card remains Paystack-only (Paystack must stay enabled).

@foreach (($paymentGatewayLabels ?? \App\Services\Payments\PaymentGatewayManager::labels()) as $id => $label) @endforeach

Self-serve trials convert at {{ \App\Support\Currency::format((float) ($settings['subscription_price_usd'] ?? 3.99), $settings['subscription_currency'] ?? 'USD', true) }} / {{ (int) ($settings['subscription_interval_days'] ?? 30) }} days (edit under Subscription). Fields below are legacy offline/pending registration only.

Paystack credentials

Webhook: {{ $paystackWebhookUrl }}

Hubtel credentials

Webhook: {{ $hubtelWebhookUrl }}

Stripe credentials

Webhook: {{ $stripeWebhookUrl }} (event: checkout.session.completed)

PayPal credentials

Webhook: {{ $paypalWebhookUrl }} (event: PAYMENT.CAPTURE.COMPLETED)

Offline MoMo receiving account

Payers submit amount, transaction ID, phone, and a document. Super Admins approve under Payments.

Bank receiving account

Payers submit amount, the bank details they paid from, and a document. Super Admins approve under Payments.

@elseif ($tab === 'branding')
@csrf @method('PUT')
@elseif ($tab === 'legal')
@csrf @method('PUT')

Edit GDPR-facing public pages. Live at Privacy, Terms, Cookies.

@elseif ($tab === 'notifications')
@csrf @method('PUT')

These are platform default values. Companies can still override their own settings.

@foreach ([ 'notify_otp_alerts' => 'OTP alerts', 'notify_large_payment_alerts' => 'Large payment alerts', 'notify_sync_failure_alerts' => 'Sync failure alerts', 'require_device_hmac' => 'Require device HMAC signatures', ] as $key => $label) @endforeach
@elseif ($tab === 'maintenance')
@csrf @method('PUT')
@elseif ($tab === 'apps')
@csrf @method('PUT')

Upload local APK/IPA files and optional store URLs. Empty store URLs and missing files show as “Coming soon” on the public download page. Files can be up to 100 MB. PHP upload_max_filesize must allow the same.

@foreach ($appDownloads ?? [] as $group)

{{ $group['name'] }}

{{ $group['summary'] }}

@foreach ($group['platforms'] as $slot)

@if (!empty($slot['has_file'])) File uploaded. New upload replaces it. @else No file uploaded — visitors see Coming soon. @endif

Leave blank to show Coming soon.

@endforeach
@endforeach
@endif
@endsection