anky2002's picture
update
dbd088a
raw
history blame
1.58 kB
import { NextRequest, NextResponse } from "next/server";
import { getRazorpay, PLANS } from "@/lib/razorpay";
import { createClient } from "@/lib/supabase/server";
export async function POST(req: NextRequest) {
try {
const supabase = await createClient();
const { data: { user } } = await supabase.auth.getUser();
if (!user) return NextResponse.json({ error: "Not authenticated" }, { status: 401 });
const { plan } = await req.json();
if (plan !== "pro" && plan !== "team") {
return NextResponse.json({ error: "Invalid plan" }, { status: 400 });
}
const planId = PLANS[plan as keyof typeof PLANS].razorpay_plan_id;
if (!planId) return NextResponse.json({ error: "Plan not configured" }, { status: 500 });
const razorpay = getRazorpay();
const subscription = await razorpay.subscriptions.create({
plan_id: planId,
total_count: 120,
quantity: 1,
customer_notify: 1,
notes: {
user_id: user.id,
email: user.email || "",
plan: plan,
},
});
// Save subscription ID to profile
await supabase
.from("profiles")
.update({
razorpay_subscription_id: subscription.id,
updated_at: new Date().toISOString(),
})
.eq("id", user.id);
return NextResponse.json({
subscription_id: subscription.id,
short_url: subscription.short_url,
});
} catch (error: any) {
console.error("Subscription create error:", error);
return NextResponse.json({ error: error.message || "Failed" }, { status: 500 });
}
}