Commet
  • Pricing
Log InTry out
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.

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
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.data["checkout_url"]}

Verificar acceso

routes/billing.py
@router.get("/subscription/{customer_id}")
def get_subscription(customer_id: str):
    sub = commet.subscriptions.get(customer_id)
    return {"status": sub.data["status"]}


@router.get("/features/{feature}/{customer_id}")
def check_feature(feature: str, customer_id: str):
    result = commet.features.check(code=feature, customer_id=customer_id)
    return {"allowed": result.data["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="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.data["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.

En esta página

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