import { NextRequest, NextResponse } from 'next/server' import { getStripeClient } from '@/lib/stripe/client' /** * POST /api/stripe/checkout * Create a Stripe Checkout session */ export async function POST(request: NextRequest) { try { const stripe = getStripeClient() const body = await request.json() const { items, successUrl, cancelUrl } = body if (!items || !Array.isArray(items) || items.length === 0) { return NextResponse.json( { error: 'Items are required' }, { status: 400 } ) } // Build line items for Stripe Checkout const lineItems = items.map((item: { priceId: string; quantity: number }) => ({ price: item.priceId, quantity: item.quantity, })) // Create Stripe Checkout session const session = await stripe.checkout.sessions.create({ payment_method_types: ['card'], line_items: lineItems, mode: 'payment', success_url: successUrl || `${request.nextUrl.origin}/checkout/success?session_id={CHECKOUT_SESSION_ID}`, cancel_url: cancelUrl || `${request.nextUrl.origin}/checkout/cancel`, metadata: { // Add any additional metadata here }, }) return NextResponse.json({ sessionId: session.id, url: session.url }) } catch (error) { console.error('Error creating checkout session:', error) return NextResponse.json( { error: 'Failed to create checkout session' }, { status: 500 } ) } }