"use client"; import React, { Suspense, useEffect, useState } from "react"; import { useSearchParams, useRouter } from "next/navigation"; import { CheckCircle2, XCircle, Clock, ArrowRight, ShoppingBag, RotateCcw, Copy, Receipt, ShieldCheck, CreditCard, Building, } from "lucide-react"; import { toPersian, cn } from "../../../lib/utils"; import { toast } from "sonner"; import { useCartStore } from "../../../lib/store/cartStore"; import { useUserStore } from "../../../lib/store/userStore"; import api from "../../../lib/services/api"; function VerifyContent() { const searchParams = useSearchParams(); const router = useRouter(); const successParam = searchParams.get("success"); const trackId = searchParams.get("trackId") || ""; const orderId = searchParams.get("orderId") || ""; const refNumber = searchParams.get("refNumber") || ""; const cardNumber = searchParams.get("cardNumber") || ""; const messageParam = searchParams.get("message") || ""; const amountParam = searchParams.get("amount") || ""; const paymentType = searchParams.get("type") || "ORDER"; const isSuccess = successParam === "1"; const [orderDetails, setOrderDetails] = useState(null); const [loading, setLoading] = useState(false); const [retrying, setRetrying] = useState(false); const { clearCart } = useCartStore(); const { fetchProfile } = useUserStore(); useEffect(() => { if (isSuccess) { clearCart(); fetchProfile().catch(() => {}); } if (orderId) { setLoading(true); api .get(`/orders/${orderId}`) .then((res) => { if (res.data) setOrderDetails(res.data); }) .catch(() => {}) .finally(() => setLoading(false)); } }, [isSuccess, orderId, clearCart, fetchProfile]); const handleCopy = (text: string, title: string) => { navigator.clipboard.writeText(text); toast.success(`${title} با موفقیت کپی شد!`); }; const handleRetryPayment = async () => { if (!orderId) { router.push("/checkout"); return; } setRetrying(true); try { const res = await api.post("/payment/zibal/initiate", { orderId }); if (res.data?.paymentUrl) { window.location.href = res.data.paymentUrl; } else { toast.error("خطا در ایجاد درگاه پرداخت جدید"); } } catch (err: any) { const errorMsg = err.response?.data?.message || err.message || "خطا در ایجاد اتصال مجدد به درگاه"; toast.error(errorMsg); } finally { setRetrying(false); } }; const displayAmount = amountParam || (orderDetails?.totalAmount ? String(orderDetails.totalAmount) : ""); return (
{/* Main Status Card */}
{/* Top colored accent bar */}
{/* Status Icon */}
{isSuccess ? ( ) : ( )}
{/* Title & Status */}

{isSuccess ? "پرداخت با موفقیت انجام شد" : "پرداخت ناموفق بود"}

{messageParam || (isSuccess ? "سفارش شما در سامانه ثبت و در حال آماده‌سازی و ارسال است." : "تراکنش بانکی تکمیل نشد یا توسط کاربر لغو گردید.")}

{/* Receipt Info Box */}
درگاه پرداخت: درگاه امن زیبال (Zibal IPG)
{displayAmount && (
مبلغ تراکنش: {toPersian(Number(displayAmount).toLocaleString("fa-IR"))} تومان
)} {refNumber && (
شماره مرجع بانکی (Ref Number):
{refNumber}
)} {trackId && (
شناسه پیگیری زیبال (Track ID):
{trackId}
)} {cardNumber && (
شماره کارت پرداخت‌کننده: {cardNumber}
)} {orderDetails?.trackingNumber && (
کد پیگیری سفارش کانینا: {orderDetails.trackingNumber}
)}
{/* Action Buttons */}
{isSuccess ? (
{orderId && ( )}
) : (
)}
{/* Security Notice */}
تراکنش تحت پروتکل رمزنگاری امن شاپرک و درگاه پرداخت زیبال
); } export default function PaymentVerifyPage() { return (

در حال دریافت و اعتبارسنجی تراکنش پرداخت زیبال...

} >
); }