import { Button } from '../../../components/ui/button' import { usePaymentNavigation } from '../lib/navigation' import { usePaymentStatus } from '../lib/usePaymentStatus' import type { PaymentStatusResponse } from '../lib/midtrans' function formatIDR(amount?: string) { if (!amount) return '' const n = Number(amount) if (Number.isNaN(n)) return amount return new Intl.NumberFormat('id-ID', { style: 'currency', currency: 'IDR', maximumFractionDigits: 0 }).format(Math.round(n)) } export function InlinePaymentStatus({ orderId, method, compact }: { orderId: string; method?: string; compact?: boolean }) { const nav = usePaymentNavigation() const { data, isLoading, error, refetch, isRefetching } = usePaymentStatus(orderId) const status = (data?.status ?? 'pending') as PaymentStatusResponse['status'] const isSuccess = status === 'settlement' || status === 'capture' const isFailure = ['deny', 'cancel', 'expire', 'refund', 'chargeback'].includes(status) return (
{/* Header minimal tanpa detail teknis */}
Status pembayaran
{/* Konten berdasarkan status */} {isLoading ? (
Mengecek pembayaran…
Kami memeriksa otomatis setiap 3 detik.
) : error ? (
Gagal memuat status. Coba refresh.
) : isSuccess ? (
{/* check icon */}
Pembayaran berhasil
{data?.grossAmount ? (
Total dibayar: {formatIDR(data.grossAmount)}
) : null}
Terima kasih! Pesanan Anda sedang diproses.
) : isFailure ? (
{/* x icon */}
Pembayaran belum berhasil
Silakan coba lagi atau pilih metode lain.
) : (
{/* hourglass/spinner icon */}
Menunggu pembayaran
Kami memeriksa otomatis setiap 3 detik sampai selesai.
)}
) }