42 lines
1.2 KiB
TypeScript
42 lines
1.2 KiB
TypeScript
import { stripe } from "@/server/stripe";
|
|
import { createCheckout } from "@/server/linkToPricing";
|
|
import { auth, clerkClient } from "@clerk/nextjs";
|
|
import { redirect } from "next/navigation";
|
|
import { getUrlServerSide } from "@/server/getUrlServerSide";
|
|
import { db } from "@/db/db";
|
|
import { and, eq, isNull } from "drizzle-orm";
|
|
import { subscriptionStatusTable } from "@/db/schema";
|
|
import { getCurrentPlan } from "@/server/getCurrentPlan";
|
|
|
|
export async function GET(req: Request) {
|
|
const { userId, orgId } = auth();
|
|
|
|
if (!userId) return redirect("/");
|
|
|
|
const change = new URL(req.url).searchParams.get("change");
|
|
|
|
const sub = await getCurrentPlan({
|
|
org_id: orgId,
|
|
user_id: userId,
|
|
});
|
|
|
|
if (!sub) return redirect("/pricing");
|
|
|
|
const session = await stripe.billingPortal.sessions.create({
|
|
customer: sub.stripe_customer_id,
|
|
return_url: getUrlServerSide() + "/pricing",
|
|
// flow_data:
|
|
// change === "true" && sub.subscription_id
|
|
// ? {
|
|
// type: "subscription_update",
|
|
// subscription_update: {
|
|
// subscription: sub.subscription_id,
|
|
// },
|
|
// }
|
|
// : undefined,
|
|
});
|
|
|
|
redirect(session.url);
|
|
// if (session.url) redirect(session.url);
|
|
}
|