Agrega cobros y pagos a tu aplicación de Astro.
Instala la Commet Skill para que tu agente integre el SDK actual y valide su trabajo contra el contrato vivo de la API.
npx skills add commet-labs/skills --skill commetAstro requiere un adaptador SSR para las rutas API. Configura output: 'server' o output: 'hybrid' en tu astro.config.mjs.
pnpm add @commet/nodenpm install @commet/nodeyarn add @commet/nodebun add @commet/nodeCOMMET_API_KEY=ck_sandbox_xxximport { Commet } from '@commet/node'
export const commet = new Commet({
apiKey: import.meta.env.COMMET_API_KEY,
})customers.create es idempotente — si ya existe un cliente con el mismo id, retorna el registro existente.
import type { APIRoute } from 'astro'
import { commet } from '../../../lib/commet'
export const POST: APIRoute = 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 Response.json({ checkoutUrl: subscription.checkoutUrl ?? null })
}import type { APIRoute } from 'astro'
import { commet } from '../../../../lib/commet'
export const GET: APIRoute = async ({ params }) => {
const subscription = await commet.subscriptions.getActive({ customerId: params.customerId! })
if (!subscription) {
return Response.json({ error: 'no_active_subscription' }, { status: 404 })
}
const feature = await commet.featureAccess.get({
code: 'api_calls',
customerId: params.customerId!,
})
return Response.json({
status: subscription.status,
allowed: feature.allowed,
})
}import type { APIRoute } from 'astro'
import { commet } from '../../../lib/commet'
export const POST: APIRoute = async ({ request }) => {
const { customerId } = await request.json()
await commet.usage.track({
customerId,
featureCode: 'api_calls',
value: 1,
})
return Response.json({ tracked: true })
}El uso se agrega y se cobra al final del período.
import type { APIRoute } from 'astro'
import { commet } from '../../../lib/commet'
export const GET: APIRoute = async ({ redirect }) => {
const customerId = 'user_123'
const portal = await commet.portal.getUrl({ customerId })
return redirect(portal.portalUrl)
}¿Cómo está esta guía?