summaryrefslogtreecommitdiffhomepage
path: root/packages/console/app/src/routes/api
diff options
context:
space:
mode:
authorFrank <[email protected]>2026-01-13 13:36:37 -0500
committerFrank <[email protected]>2026-01-13 13:36:37 -0500
commitf24251f89e277cab2669730dc1e028573e0fe082 (patch)
tree94b68225be4e8257fa1d89eedecafd624a7fab0a /packages/console/app/src/routes/api
parent3c5a256f0fe620743f9e1a8f7d1546b87950aa5e (diff)
downloadopencode-f24251f89e277cab2669730dc1e028573e0fe082.tar.gz
opencode-f24251f89e277cab2669730dc1e028573e0fe082.zip
sync
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 })
+ }
+}