Spaces:
Build error
Build error
| import { NextRequest, NextResponse } from "next/server"; | |
| import { db } from "@/lib/db"; | |
| import { createCheckoutSession, getOrCreateStripeCustomer } from "@/lib/stripe"; | |
| // Endpoint para iniciar checkout de Stripe | |
| // Body: { userId, influencerId, tier, price } | |
| export async function POST(request: NextRequest) { | |
| try { | |
| const body = await request.json(); | |
| const { userId, influencerId, tier, price } = body; | |
| const origin = request.headers.get("origin") || "http://localhost:7860"; | |
| if (!userId || !influencerId || !tier || !price) { | |
| return NextResponse.json({ success: false, error: "userId, influencerId, tier y price son requeridos" }, { status: 400 }); | |
| } | |
| // Obtener usuario e influencer | |
| const user = await db.user.findUnique({ where: { id: userId } }); | |
| if (!user) return NextResponse.json({ success: false, error: "Usuario no encontrado" }, { status: 404 }); | |
| const influencer = await db.aIInfluencer.findUnique({ where: { id: influencerId } }); | |
| if (!influencer) return NextResponse.json({ success: false, error: "Influencer no encontrado" }, { status: 404 }); | |
| // Crear o obtener cliente Stripe | |
| const email = user.email || `user-${userId}@dev.local`; | |
| const stripeCustomerId = await getOrCreateStripeCustomer(userId, email, user.name || undefined); | |
| // Crear sesi贸n de checkout | |
| const sessionId = await createCheckoutSession({ | |
| userId, | |
| influencerId, | |
| influencerName: influencer.name, | |
| tier, | |
| price, | |
| stripeCustomerId, | |
| origin, | |
| }); | |
| return NextResponse.json({ success: true, sessionId, checkoutUrl: `https://checkout.stripe.com/pay/${sessionId}` }); | |
| } catch (error: unknown) { | |
| const message = error instanceof Error ? error.message : "Error desconocido"; | |
| console.error("Checkout error:", message); | |
| return NextResponse.json({ success: false, error: message }, { status: 500 }); | |
| } | |
| } | |