• Precios
  • Blog
Iniciar sesiónAgendá una demo
Introducción

Inicio rápido

Integrar con PythonIntegrar con FlaskIntegrar con FastAPIIntegrar con Django

Aprender

Recursos

Referencia del SDKVersionado de APIManejo de erroresTestingCLI

Plugins

Better Auth
DocumentaciónRecursosConstruir con AIAPI ReferenceWebhooks

Integrar con FastAPI

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

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 commet

Instalar

pip install commet-sdk fastapi uvicorn
uv add commet-sdk fastapi uvicorn
poetry add commet-sdk fastapi uvicorn

Configurar

.env
COMMET_API_KEY=ck_sandbox_xxx
commet_client.py
import os
from commet import Commet

commet = Commet(
    api_key=os.environ["COMMET_API_KEY"],
)

Suscribir

routes/billing.py
from fastapi import APIRouter, HTTPException
from pydantic import BaseModel
from commet_client import commet

router = APIRouter(prefix="/billing")


class SubscribeRequest(BaseModel):
    customer_id: str
    email: str


@router.post("/subscribe")
def subscribe(body: SubscribeRequest):
    commet.customers.create(
        email=body.email,
        id=body.customer_id,
    )

    subscription = commet.subscriptions.create(
        customer_id=body.customer_id,
        plan_code="pro",
    )

    return {"checkout_url": subscription.checkout_url}

Verificar acceso

routes/billing.py
@router.get("/subscription/{customer_id}")
def get_subscription(customer_id: str):
    sub = commet.subscriptions.get_active(customer_id=customer_id)
    if sub is None:
        raise HTTPException(status_code=404, detail="No active subscription")
    return {"status": sub.status}


@router.get("/features/{feature}/{customer_id}")
def check_feature(feature: str, customer_id: str):
    result = commet.feature_access.get(code=feature, customer_id=customer_id)
    return {"allowed": result.allowed}

Trackear uso

routes/billing.py
class UsageRequest(BaseModel):
    customer_id: str


@router.post("/usage")
def track_usage(body: UsageRequest):
    commet.usage.track(
        customer_id=body.customer_id,
        feature_code="api_calls",
        value=1,
    )

    return {"tracked": True}

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

Portal del Cliente

routes/billing.py
from fastapi.responses import RedirectResponse


@router.get("/portal")
def portal():
    result = commet.portal.get_url(customer_id="user_123")
    return RedirectResponse(result.portal_url)

Webhooks

routes/webhooks.py
import os

from fastapi import APIRouter, Request, Response
from commet import Webhooks

router = APIRouter()
webhooks = Webhooks()


@router.post("/webhooks/commet")
async def handle_webhook(request: Request):
    raw_body = await request.body()

    payload = webhooks.verify_and_parse(
        raw_body=raw_body.decode(),
        signature=request.headers.get("x-commet-signature"),
        secret=os.environ["COMMET_WEBHOOK_SECRET"],
    )

    if payload is None:
        return Response(status_code=401)

    if payload["event"] == "subscription.activated":
        # manejar activación
        pass

    return Response(status_code=200)

Iniciar el servidor

main.py
from fastapi import FastAPI
from routes.billing import router as billing_router
from routes.webhooks import router as webhooks_router

app = FastAPI()
app.include_router(billing_router)
app.include_router(webhooks_router)
uvicorn main:app --port 3000

Relacionado

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

¿Cómo está esta guía?

Integrar con Flask

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

Integrar con Django

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

On this page

Instalar
Configurar
Suscribir
Verificar acceso
Trackear uso
Portal del Cliente
Webhooks
Iniciar el servidor
Relacionado