import { NextRequest, NextResponse } from "next/server"; import Stripe from "stripe"; const stripe = new Stripe(process.env.STRIPE_SECRET_KEY!); // Map price IDs to human-readable tier names const TIER_NAMES: Record = { [process.env.STRIPE_PRICE_WEEKLY!]: "Weekly", [process.env.STRIPE_PRICE_MONTHLY!]: "Monthly", [process.env.STRIPE_PRICE_ANNUAL!]: "Annual", [process.env.STRIPE_PRICE_LIFETIME!]: "Lifetime", }; export async function POST(req: NextRequest) { const { priceId } = await req.json(); if (!priceId || !TIER_NAMES[priceId]) { return NextResponse.json({ error: "Invalid price" }, { status: 400 }); } const session = await stripe.checkout.sessions.create({ mode: "payment", line_items: [{ price: priceId, quantity: 1 }], success_url: `${process.env.NEXT_PUBLIC_SITE_URL}/purchase/success?session_id={CHECKOUT_SESSION_ID}`, cancel_url: `${process.env.NEXT_PUBLIC_SITE_URL}/uit#pricing`, metadata: { tier: TIER_NAMES[priceId] }, invoice_creation: { enabled: true }, custom_text: { submit: { message: "Your license key will be emailed to you immediately after purchase." }, }, }); return NextResponse.json({ url: session.url }); }