import Link from "next/link"; import { ArrowRight, CheckCircle2, XCircle } from "lucide-react"; import { verifySession } from "@/lib/session"; import { siparisGetir } from "../odeme-queries"; import { kullanicininRaporu } from "@/features/rapor/rapor-queries"; import { odemeyiSonuclandir } from "@/lib/odeme"; import { Button } from "@/components/ui/button"; import { PagePixelDivider } from "@/components/pixel-decor"; import { Skeleton } from "@/components/ui/skeleton"; import { RaporYokCta } from "./rapor-yok-cta"; export async function OdemeSonucKarti({ siparis }: { siparis?: string }) { // Oturum düşmüşse geri dönüşte ?siparis= kaybolmasın (başarı/unblur deneyimi) const geriDonus = siparis ? `/odeme/sonuc?siparis=${encodeURIComponent(siparis)}` : "/paket"; // Oturum ve sipariş sorgusu bağımsız; sahiplik kontrolü aşağıda yapılıyor const [session, order] = await Promise.all([ verifySession(geriDonus), siparis ? siparisGetir(siparis) : Promise.resolve(null), ]); // Yalnızca kendi siparişi görüntülenebilir const sahibiMi = order?.userId === session.user.id; // Self-healing: callback kaybolduysa burada tekrar doğrula const durum = order && sahibiMi ? order.status === "paid" ? "paid" : await odemeyiSonuclandir(order.id) : "not_found"; const basarili = durum === "paid"; // Rapor zaten üretildiyse ödül bir tık uzakta: kullanıcıyı doğrudan // rapor sayfasına döndür ki blur çözülme animasyonuyla tam listeyi görsün. const rapor = basarili ? await kullanicininRaporu(session.user.id) : null; const listeHref = rapor ? "/listem?acildi=1" : null; return basarili ? (

Ödeme alındı 🎉

{order!.credits} kredi {" "} hesabına tanımlandı {order!.product === "paket" ? " ve Tercih Dönemi Paketi'n aktif — kişisel listen, risk raporun ve PDF çıktın hazır olduğunda burada." : "."}

{listeHref ? ( <>

24 tercihin tamamı, gerekçeler, riskler ve PDF artık açık.

) : ( )}
) : (

Ödeme tamamlanamadı

{durum === "pending" ? ( "Ödemen hâlâ işleniyor. Birkaç saniye sonra bu sayfayı yenile — kartından çekim yapıldıysa krediler mutlaka tanımlanır." ) : ( <> Çekim yapılmadı ya da işlem iptal edildi. Kartından para çekildiğini düşünüyorsan{" "} bizimle iletişime geç . )}

); } // iyzico doğrulaması beklenirken ortalanmış sonuç kartı iskeleti. export function OdemeSonucKartiSkeleton() { return (
); }