Commet
  • Pricing
Log InTry out
Introducción

Inicio rápido

Integrar con Next.jsIntegrar con RemixIntegrar con NuxtIntegrar con SvelteKitIntegrar con AstroIntegrar con ExpressIntegrar con HonoIntegrar con Bun

Aprender

Recursos

Referencia del SDKVersionado de APIManejo de erroresTestingCLI

Plugins

Better Auth
DocumentaciónRecursosConstruir con AIAPI ReferenceWebhooks

Integrar con SvelteKit

Agrega cobros y pagos a tu aplicación de SvelteKit.

Usa este prompt prearmado para integrar Commet más rápido con asistentes de IA.

Instalar

pnpm add @commet/node
npm install @commet/node
yarn add @commet/node
bun add @commet/node

Configurar

.env
COMMET_API_KEY=ck_sandbox_xxx
src/lib/server/commet.ts
import { Commet } from '@commet/node'
import { COMMET_API_KEY } from '$env/static/private'

export const commet = new Commet({
  apiKey: COMMET_API_KEY,
})

Suscribir

customers.create es idempotente — si ya existe un cliente con el mismo id, retorna el registro existente.

src/routes/api/billing/subscribe/+server.ts
import { json } from '@sveltejs/kit'
import { commet } from '$lib/server/commet'
import type { RequestHandler } from './$types'

export const POST: RequestHandler = async ({ request }) => {
  const { customerId, email } = await request.json()

  await commet.customers.create({ email, id: customerId })

  const subscription = await commet.subscriptions.create({
    customerId,
    planCode: 'pro',
  })

  return json({ checkoutUrl: subscription.data.checkoutUrl })
}

Verificar Acceso

src/routes/api/billing/access/[customerId]/+server.ts
import { json } from '@sveltejs/kit'
import { commet } from '$lib/server/commet'
import type { RequestHandler } from './$types'

export const GET: RequestHandler = async ({ params }) => {
  const { data: subscription } = await commet.subscriptions.get(params.customerId)

  const { data: feature } = await commet.features.check({
    code: 'api_calls',
    customerId: params.customerId,
  })

  return json({ status: subscription.status, allowed: feature.allowed })
}

Trackear Uso

src/routes/api/billing/usage/+server.ts
import { json } from '@sveltejs/kit'
import { commet } from '$lib/server/commet'
import type { RequestHandler } from './$types'

export const POST: RequestHandler = async ({ request }) => {
  const { customerId } = await request.json()

  await commet.usage.track({
    customerId,
    feature: 'api_calls',
    value: 1,
  })

  return json({ tracked: true })
}

El uso se agrega y se cobra al final del período.

Portal del Cliente

src/routes/api/billing/portal/+server.ts
import { redirect } from '@sveltejs/kit'
import { commet } from '$lib/server/commet'
import type { RequestHandler } from './$types'

export const GET: RequestHandler = async ({ locals }) => {
  const { data } = await commet.portal.getUrl({
    customerId: locals.user.customerId,
  })

  redirect(303, data.portalUrl)
}

Relacionado

  • Suscripciones
  • Trackear Uso
  • Portal del Cliente
  • Referencia del SDK

¿Cómo está esta guía?

Integrar con Nuxt

Agrega cobros y pagos a tu aplicación de Nuxt.

Integrar con Astro

Agrega cobros y pagos a tu aplicación de Astro.

En esta página

Instalar
Configurar
Suscribir
Verificar Acceso
Trackear Uso
Portal del Cliente
Relacionado