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 Flask

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

Instalar

pip install commet-sdk flask
uv add commet-sdk flask
poetry add commet-sdk flask

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 flask import Blueprint, request, jsonify
from commet_client import commet

billing = Blueprint("billing", __name__)


@billing.route("/subscribe", methods=["POST"])
def subscribe():
    data = request.get_json()

    commet.customers.create(
        email=data["email"],
        id=data["customer_id"],
    )

    subscription = commet.subscriptions.create(
        customer_id=data["customer_id"],
        plan_code="pro",
    )

    return jsonify({"checkout_url": subscription.data["checkout_url"]})

Verificar acceso

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


@billing.route("/features/<feature>/<customer_id>")
def check_feature(feature, customer_id):
    result = commet.features.check(code=feature, customer_id=customer_id)
    return jsonify({"allowed": result.data["allowed"]})

Trackear uso

routes/billing.py
@billing.route("/usage", methods=["POST"])
def track_usage():
    data = request.get_json()

    commet.usage.track(
        customer_id=data["customer_id"],
        feature="api_calls",
        value=1,
    )

    return jsonify({"tracked": True})

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

Portal del Cliente

routes/billing.py
@billing.route("/portal")
def portal():
    result = commet.portal.get_url(customer_id="user_123")
    return redirect(result.data["portal_url"])

Webhooks

routes/webhooks.py
import os
from flask import Blueprint, request
from commet import Webhooks

webhooks_bp = Blueprint("webhooks", __name__)
webhooks = Webhooks()


@webhooks_bp.route("/webhooks/commet", methods=["POST"])
def handle_webhook():
    payload = webhooks.verify_and_parse(
        raw_body=request.get_data(as_text=True),
        signature=request.headers.get("x-commet-signature"),
        secret=os.environ["COMMET_WEBHOOK_SECRET"],
    )

    if payload is None:
        return "Invalid signature", 401

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

    return "", 200

Iniciar el servidor

app.py
from flask import Flask
from routes.billing import billing
from routes.webhooks import webhooks_bp

app = Flask(__name__)
app.register_blueprint(billing, url_prefix="/billing")
app.register_blueprint(webhooks_bp)

if __name__ == "__main__":
    app.run(port=3000)

Relacionado

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

¿Cómo está esta guía?

Integrar con Python

Instala y configura el SDK de Commet para Python.

Integrar con FastAPI

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

En esta página

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