import { NextResponse } from "next/server" import { createServiceClient } from "@/lib/supabase" import { buscarPagamentoAsaas, mapearStatus } from "@/lib/asaas" export async function GET( _request: Request, { params }: { params: Promise<{ id: string }> } ) { const { id } = await params const supabase = createServiceClient() const { data, error } = await supabase .from("pedidos") .select( "id, status, valor_centavos, metodo_pagamento, pix_copia_cola, pix_qrcode_url, asaas_invoice_url, asaas_payment_id, paid_at, clientes(nome, email), produtos(nome, validade, midia)" ) .eq("id", id) .single() if (error || !data) { return NextResponse.json({ error: "Pedido não encontrado" }, { status: 404 }) } // Se ainda está pendente, consulta o ASAAS diretamente para pegar status atualizado if (data.status === "PENDING" && data.asaas_payment_id) { try { const asaasPayment = await buscarPagamentoAsaas(data.asaas_payment_id) const novoStatus = mapearStatus(asaasPayment.status) if (novoStatus !== "PENDING") { const isPago = novoStatus === "RECEIVED" || novoStatus === "CONFIRMED" const updateData: Record = { status: novoStatus } if (isPago) updateData.paid_at = new Date().toISOString() await supabase .from("pedidos") .update(updateData) .eq("id", id) return NextResponse.json({ ...data, status: novoStatus, paid_at: isPago ? updateData.paid_at : null }) } } catch { // Falha silenciosa — retorna o que tem no banco } } return NextResponse.json(data) }