import { NextResponse } from 'next/server'; import { prisma } from '@/lib/db'; import { getSettings } from '@/lib/settings'; export async function POST( request: Request, { params }: { params: { code: string } } ) { try { const bookingCode = params.code; const body = await request.json(); const { paymentMethod } = body; if (!paymentMethod || !['TUNAI', 'QRIS'].includes(paymentMethod)) { return NextResponse.json({ error: 'Metode pembayaran tidak valid.' }, { status: 400 }); } const booking = await prisma.booking.findUnique({ where: { bookingCode }, }); if (!booking) { return NextResponse.json({ error: 'Pemesanan tidak ditemukan.' }, { status: 404 }); } if (booking.status !== 'PENDING') { return NextResponse.json({ error: 'Pemesanan ini sudah lunas atau dibatalkan.' }, { status: 400 }); } if (paymentMethod === 'TUNAI') { const updated = await prisma.booking.update({ where: { bookingCode }, data: { paymentMethod: 'TUNAI', }, }); return NextResponse.json({ success: true, booking: updated }); } else { // QRIS via Pakasir const settings = await getSettings(); const slug = settings.pakasirSlug; const apiKey = settings.pakasirApiKey; if (!slug || !apiKey) { return NextResponse.json({ error: 'Pembayaran QRIS belum dikonfigurasi lengkap oleh Admin.' }, { status: 400 }); } // Record selection in DB await prisma.booking.update({ where: { bookingCode }, data: { paymentMethod: 'QRIS', }, }); return NextResponse.json({ success: true }); } } catch (error) { console.error('Process payment error:', error); return NextResponse.json({ error: 'Gagal memproses metode pembayaran.' }, { status: 500 }); } }