summaryrefslogtreecommitdiffhomepage
path: root/packages/console/app/src/routes/api
diff options
context:
space:
mode:
Diffstat (limited to 'packages/console/app/src/routes/api')
-rw-r--r--packages/console/app/src/routes/api/black/setup-intent.ts30
1 files changed, 30 insertions, 0 deletions
diff --git a/packages/console/app/src/routes/api/black/setup-intent.ts b/packages/console/app/src/routes/api/black/setup-intent.ts
new file mode 100644
index 000000000..eb5571616
--- /dev/null
+++ b/packages/console/app/src/routes/api/black/setup-intent.ts
@@ -0,0 +1,30 @@
+import type { APIEvent } from "@solidjs/start/server"
+import { Billing } from "@opencode-ai/console-core/billing.js"
+
+export async function POST(event: APIEvent) {
+ try {
+ const body = (await event.request.json()) as { plan: string }
+ const plan = body.plan
+
+ if (!plan || !["20", "100", "200"].includes(plan)) {
+ return Response.json({ error: "Invalid plan" }, { status: 400 })
+ }
+
+ const amount = parseInt(plan) * 100
+
+ const intent = await Billing.stripe().setupIntents.create({
+ payment_method_types: ["card"],
+ metadata: {
+ plan,
+ amount: amount.toString(),
+ },
+ })
+
+ return Response.json({
+ clientSecret: intent.client_secret,
+ })
+ } catch (error) {
+ console.error("Error creating setup intent:", error)
+ return Response.json({ error: "Internal server error" }, { status: 500 })
+ }
+}