44 lines
1.1 KiB
TypeScript
44 lines
1.1 KiB
TypeScript
import { NextResponse } from "next/server";
|
|
import { stripeClient } from "../../../../../lib/stripeClient";
|
|
|
|
export async function GET(req: Request) {
|
|
try {
|
|
const { searchParams } = new URL(req.url);
|
|
const accountId = searchParams.get("accountId");
|
|
|
|
if (!accountId) {
|
|
return NextResponse.json(
|
|
{ error: "accountId is required." },
|
|
{ status: 400 }
|
|
);
|
|
}
|
|
|
|
const account = await stripeClient.v2.core.accounts.retrieve(accountId, {
|
|
include: ["configuration.merchant", "requirements"],
|
|
});
|
|
|
|
const readyToProcessPayments =
|
|
account?.configuration?.merchant?.capabilities?.card_payments?.status ===
|
|
"active";
|
|
|
|
const requirementsStatus =
|
|
account?.requirements?.summary?.minimum_deadline?.status;
|
|
|
|
const onboardingComplete =
|
|
requirementsStatus !== "currently_due" &&
|
|
requirementsStatus !== "past_due";
|
|
|
|
return NextResponse.json({
|
|
readyToProcessPayments,
|
|
onboardingComplete,
|
|
requirementsStatus,
|
|
});
|
|
} catch (err: any) {
|
|
return NextResponse.json(
|
|
{ error: err?.message || "Failed to fetch account status." },
|
|
{ status: 500 }
|
|
);
|
|
}
|
|
}
|
|
|