diff options
| author | Frank <[email protected]> | 2026-01-13 13:36:37 -0500 |
|---|---|---|
| committer | Frank <[email protected]> | 2026-01-13 13:36:37 -0500 |
| commit | f24251f89e277cab2669730dc1e028573e0fe082 (patch) | |
| tree | 94b68225be4e8257fa1d89eedecafd624a7fab0a /packages/console/app/src/routes/api | |
| parent | 3c5a256f0fe620743f9e1a8f7d1546b87950aa5e (diff) | |
| download | opencode-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.ts | 30 |
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 }) + } +} |
