Agrega cobros y pagos a tu aplicación de Nuxt.
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 commetpnpm add @commet/nodenpm install @commet/nodeyarn add @commet/nodebun add @commet/nodeCOMMET_API_KEY=ck_sandbox_xxxexport default defineNuxtConfig({
runtimeConfig: {
commetApiKey: process.env.COMMET_API_KEY,
},
})Nuxt importa automáticamente desde server/utils/, por lo que el cliente está disponible en todas las rutas del servidor.
import { Commet } from '@commet/node'
const config = useRuntimeConfig()
export const commet = new Commet({
apiKey: config.commetApiKey,
})customers.create es idempotente — si ya existe un cliente con el mismo id, retorna el registro existente.
export default defineEventHandler(async (event) => {
const { customerId, email } = await readBody(event)
await commet.customers.create({ email, id: customerId })
const subscription = await commet.subscriptions.create({
customerId,
planCode: 'pro',
})
return { checkoutUrl: subscription.checkoutUrl ?? null }
})export default defineEventHandler(async (event) => {
const customerId = getRouterParam(event, 'customerId')!
const subscription = await commet.subscriptions.getActive({ customerId })
if (!subscription) {
throw createError({ statusCode: 404, statusMessage: 'No active subscription' })
}
const feature = await commet.featureAccess.get({
code: 'api_calls',
customerId,
})
return {
status: subscription.status,
allowed: feature.allowed,
}
})export default defineEventHandler(async (event) => {
const { customerId } = await readBody(event)
await commet.usage.track({
customerId,
featureCode: 'api_calls',
value: 1,
})
return { tracked: true }
})El uso se agrega y se cobra al final del período.
export default defineEventHandler(async (event) => {
const customerId = 'user_123'
const portal = await commet.portal.getUrl({ customerId })
return sendRedirect(event, portal.portalUrl)
})¿Cómo está esta guía?