import { NextResponse } from 'next/server' import Stripe from 'stripe' const stripe = new Stripe(process.env.STRIPE_SECRET_KEY) export async function POST(req) { const { plan, amount } = await req.json(); const params = { mode: 'subscription', payment_method_types: ['card'], line_items: [ { price_data: { currency: 'usd', product_data: { name: plan, }, unit_amount: Math.round(amount * 100), recurring: { interval: 'month', interval_count: 1, }, }, quantity: 1, }, ], success_url: `${req.headers.get( 'Referer', )}/result?session_id={CHECKOUT_SESSION_ID}`, cancel_url: `${req.headers.get( 'Referer', )}/result?session_id={CHECKOUT_SESSION_ID}`, } try { const checkoutSession = await stripe.checkout.sessions.create(params) return NextResponse.json(checkoutSession, { status: 200, }) } catch (error) { console.error('Error creating checkout session:', error) return new NextResponse(JSON.stringify({ error: { message: error.message } }), { status: 500, }) } } export async function GET(req) { const searchParams = req.nextUrl.searchParams const session_id = searchParams.get('session_id') try { if (!session_id) { throw new Error('Session ID is required') } const checkoutSession = await stripe.checkout.sessions.retrieve(session_id) return NextResponse.json(checkoutSession) } catch (error) { console.error('Error retrieving checkout session:', error) return NextResponse.json({ error: { message: error.message } }, { status: 500 }) } }