import { NextRequest, NextResponse } from 'next/server' import { getServerSession } from 'next-auth/next' import { authOptions } from '@/lib/authOptions' import { db } from '@/lib/db' export const dynamic = 'force-dynamic' function parseCallbackData(raw?: string | null): Record { if (!raw) return {} try { return JSON.parse(raw) } catch { return { raw } } } export async function GET(request: NextRequest) { try { // 验证登录状态 const session = await getServerSession(authOptions) if (!session || !session.user?.id) { return NextResponse.json( { message: '请先登录' }, { status: 401 } ) } const searchParams = request.nextUrl.searchParams const orderNo = searchParams.get('order_no') if (!orderNo) { return NextResponse.json( { message: '订单号不能为空' }, { status: 400 } ) } // 查找订单 const order = await db.findOrderByOrderNo(orderNo) if (!order) { return NextResponse.json( { message: '订单不存在' }, { status: 404 } ) } // 验证订单是否属于当前用户 const userId = parseInt(session.user.id) if (order.user_id !== userId) { return NextResponse.json( { message: '无权访问此订单' }, { status: 403 } ) } return NextResponse.json({ success: true, order: { id: order.id, order_no: order.order_no, product_type: order.product_type, product_name: order.product_name, amount: order.amount, status: order.status, payment_method: order.payment_method, trade_no: order.trade_no, created_at: order.created_at, paid_at: order.paid_at, ...parseCallbackData(order.callback_data), }, }) } catch (error) { console.error('查询订单状态错误:', error) return NextResponse.json( { message: '查询失败,请稍后重试' }, { status: 500 } ) } }