'use client'; import { useEffect, useState, Suspense } from 'react'; import { useRouter, useSearchParams } from 'next/navigation'; import { motion } from 'framer-motion'; import { FaCheckCircle, FaTimesCircle, FaSpinner } from 'react-icons/fa'; function CallbackContent() { const router = useRouter(); const searchParams = useSearchParams(); const [status, setStatus] = useState<'verifying' | 'success' | 'failed'>('verifying'); const [message, setMessage] = useState('Verifying your payment...'); const [refId, setRefId] = useState(null); useEffect(() => { const authority = searchParams.get('Authority'); const statusParam = searchParams.get('Status'); if (!authority || !statusParam) { setStatus('failed'); setMessage('Invalid payment callback'); return; } if (statusParam !== 'OK') { setStatus('failed'); setMessage('Payment was cancelled or failed'); return; } // Verify the payment verifyPayment(authority); }, [searchParams]); const verifyPayment = async (authority: string) => { try { const response = await fetch('/api/payment/verify', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ authority }), }); const data = await response.json(); if (response.ok && data.success) { setStatus('success'); setMessage(`Payment verified successfully!`); setRefId(data.refId); // Redirect to home after 3 seconds setTimeout(() => { router.push('/'); }, 3000); } else { setStatus('failed'); setMessage(data.error || 'Payment verification failed'); } } catch (error: any) { setStatus('failed'); setMessage('Failed to verify payment'); } }; return (
{status === 'verifying' && ( <>

Verifying Payment

{message}

)} {status === 'success' && ( <>

Payment Successful!

{message}

{refId && (

Reference ID:

{refId}

)}

Redirecting you to the home page...

)} {status === 'failed' && ( <>

Payment Failed

{message}

)}
); } export default function PaymentCallback() { return ( }> ); }