"use client"; import { useParams } from "next/navigation"; import { useQuery, useMutation, useQueryClient } from "@tanstack/react-query"; import { toast } from "sonner"; import { useTenantId } from "@/hooks/useTenantId"; import { paymentApi } from "@/modules/payment/services/payment-api"; import { PaymentPageLoader, PaymentPageError } from "@/modules/payment/pages/shared"; import { PageHeader, Card, CardContent, Button } from "@/components/ds"; import { PaymentStatusChip } from "@/modules/payment/components/PaymentStatusChip"; export const PaymentRequestDetail = function PaymentRequestDetailPage() { const params = useParams(); const id = String(params?.id ?? ""); const { tenantId } = useTenantId(); const qc = useQueryClient(); const q = useQuery({ queryKey: ["payment", tenantId, "request", id], queryFn: () => paymentApi.requests.get(tenantId!, id), enabled: !!tenantId && !!id, }); const cancelM = useMutation({ mutationFn: () => paymentApi.requests.cancel(tenantId!, id), onSuccess: () => { toast.success("درخواست لغو شد"); qc.invalidateQueries({ queryKey: ["payment", tenantId, "request", id] }); }, onError: (e: Error) => toast.error(e.message), }); const verifyM = useMutation({ mutationFn: () => paymentApi.requests.verify(tenantId!, id, { status: "paid" }), onSuccess: () => { toast.success("پرداخت تأیید شد"); qc.invalidateQueries({ queryKey: ["payment", tenantId, "request", id] }); }, onError: (e: Error) => toast.error(e.message), }); if (!tenantId || q.isLoading) return ; if (q.error) return q.refetch()} />; const r = q.data!; const status = String(r.status); const canCancel = ["draft", "pending", "redirect_issued"].includes(status); const canVerify = ["redirect_issued", "pending"].includes(status); return (
وضعیت:

مبلغ: {String(r.amount_minor)} {String(r.currency)}

منبع: {String(r.payment_source)}

PSP: {String(r.provider_code)}

{r.redirect_url ? (

redirect:{" "} {String(r.redirect_url)}

) : null}

idempotency: {String(r.idempotency_key ?? "—")}

{canCancel ? ( ) : null} {canVerify ? ( ) : null}

داده کامل

{JSON.stringify(r, null, 2)}
); }; export default PaymentRequestDetail;