import { NextRequest, NextResponse } from 'next/server' import { longPollDoc } from '@/lib/sri-utils' export async function POST(request: NextRequest) { try { const body = await request.json() const { accessKey, ambiente } = body if (!accessKey) { return NextResponse.json( { error: 'Clave de acceso es requerida' }, { status: 400 } ) } // Validar ambiente const ambienteValido = ambiente === 'produccion' ? 'produccion' : 'pruebas' // Verificar el estado del documento en el SRI // longPollDoc hace polling hasta que el documento sea procesado const result = await longPollDoc({ accessKey, ambiente: ambienteValido }) // Obtener la autorización del resultado const autorizacion = result.RespuestaAutorizacionComprobante.autorizaciones?.autorizacion?.[0] // Determinar el estado basado en la respuesta let estado: string = 'verificando' if (autorizacion) { if (autorizacion.estado === 'AUTORIZADO') { estado = 'autorizado' } else if (autorizacion.estado === 'DEVUELTA') { estado = 'devuelto' } else if (autorizacion.estado === 'NO AUTORIZADO') { estado = 'no_autorizado' } } // Formatear mensajes const mensajes = autorizacion?.mensajes?.mensaje?.map(m => ({ identificador: m.identificador, mensaje: m.mensaje, tipo: m.tipo as "INFORMATIVO" | "ADVERTENCIA" | "ERROR", informacionAdicional: m.informacionAdicional })) || [] return NextResponse.json({ success: true, estado, numeroAutorizacion: autorizacion?.numeroAutorizacion, fechaAutorizacion: autorizacion?.fechaAutorizacion, ambiente: autorizacion?.ambiente, comprobante: autorizacion?.comprobante, mensajes }) } catch (error) { console.error('Error verificando estado en el SRI:', error) return NextResponse.json( { error: 'Error al verificar el estado en el SRI', details: error instanceof Error ? error.message : 'Error desconocido' }, { status: 500 } ) } }