import { NextRequest, NextResponse } from "next/server"; import { getStripe } from "@/src/lib/stripe"; import { prisma } from "@/src/lib/prisma"; export const dynamic = "force-dynamic"; export async function POST(request: NextRequest) { try { const { bookingReference, email } = await request.json(); if (!bookingReference || !email) { return NextResponse.json( { error: "Missing bookingReference or email" }, { status: 400 } ); } const booking = await prisma.booking.findUnique({ where: { bookingReference }, }); if (!booking || booking.guestEmail !== email || !booking.stripeCustomerId) { return NextResponse.json( { error: "Booking not found" }, { status: 404 } ); } const stripe = getStripe(booking.houseId); const session = await stripe.billingPortal.sessions.create({ customer: booking.stripeCustomerId, return_url: `${process.env.NEXT_PUBLIC_BASE_URL}/de`, }); return NextResponse.json({ url: session.url }); } catch (error) { console.error("Portal session error:", error); return NextResponse.json( { error: "Failed to create portal session" }, { status: 500 } ); } }