Agrega cobros y pagos a tu aplicación de Hono.
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/node hononpm install @commet/node honobun add @commet/node honoCOMMET_API_KEY=ck_sandbox_xxximport { Commet } from '@commet/node'
export const commet = new Commet({
apiKey: process.env.COMMET_API_KEY!,
})import { Hono } from 'hono'
import { commet } from '../commet'
const billing = new Hono()
billing.post('/subscribe', async (c) => {
const { customerId, email } = await c.req.json()
await commet.customers.create({ email, id: customerId })
const subscription = await commet.subscriptions.create({
customerId,
planCode: 'pro',
})
return c.json({ checkoutUrl: subscription.checkoutUrl ?? null })
})
export default billingbilling.get('/subscription/:customerId', async (c) => {
const subscription = await commet.subscriptions.getActive({ customerId: c.req.param('customerId') })
if (!subscription) {
return c.json({ error: 'no_active_subscription' }, 404)
}
return c.json({ status: subscription.status })
})
billing.get('/features/:feature/:customerId', async (c) => {
const access = await commet.featureAccess.get({
code: c.req.param('feature'),
customerId: c.req.param('customerId'),
})
return c.json({ allowed: access.allowed })
})billing.post('/usage', async (c) => {
const { customerId } = await c.req.json()
await commet.usage.track({
customerId,
featureCode: 'api_calls',
value: 1,
})
return c.json({ tracked: true })
})El uso se agrega y se cobra al final del período.
billing.get('/portal', async (c) => {
const customerId = c.get('customerId')
const portal = await commet.portal.getUrl({ customerId })
return c.redirect(portal.portalUrl)
})import { serve } from '@hono/node-server'
import { Hono } from 'hono'
import billing from './routes/billing'
const app = new Hono()
app.route('/billing', billing)
serve({ fetch: app.fetch, port: 3000 })import { Hono } from 'hono'
import billing from './routes/billing'
const app = new Hono()
app.route('/billing', billing)
export default app¿Cómo está esta guía?