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 Django

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

Instalar

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

Configurar

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

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

Suscribir

billing/views.py
import json
from django.http import JsonResponse
from django.views.decorators.http import require_POST
from .commet_client import commet


@require_POST
def subscribe(request):
    data = json.loads(request.body)

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

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

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

Verificar acceso

billing/views.py
def get_subscription(request, customer_id):
    sub = commet.subscriptions.get(customer_id)
    return JsonResponse({"status": sub.data["status"]})


def check_feature(request, feature, customer_id):
    result = commet.features.check(code=feature, customer_id=customer_id)
    return JsonResponse({"allowed": result.data["allowed"]})

Trackear uso

billing/views.py
@require_POST
def track_usage(request):
    data = json.loads(request.body)

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

    return JsonResponse({"tracked": True})

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

Portal del Cliente

billing/views.py
from django.shortcuts import redirect


def portal(request):
    result = commet.portal.get_url(customer_id="user_123")
    return redirect(result.data["portal_url"])

Webhooks

billing/views.py
import os
from django.views.decorators.csrf import csrf_exempt
from commet import Webhooks

webhooks = Webhooks()


@csrf_exempt
@require_POST
def handle_webhook(request):
    payload = webhooks.verify_and_parse(
        raw_body=request.body.decode(),
        signature=request.headers.get("x-commet-signature"),
        secret=os.environ["COMMET_WEBHOOK_SECRET"],
    )

    if payload is None:
        return JsonResponse({"error": "Invalid signature"}, status=401)

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

    return JsonResponse({"ok": True})

URLs

billing/urls.py
from django.urls import path
from . import views

urlpatterns = [
    path("subscribe", views.subscribe),
    path("subscription/<str:customer_id>", views.get_subscription),
    path("features/<str:feature>/<str:customer_id>", views.check_feature),
    path("usage", views.track_usage),
    path("portal", views.portal),
    path("webhooks/commet", views.handle_webhook),
]
project/urls.py
from django.urls import path, include

urlpatterns = [
    path("billing/", include("billing.urls")),
]

Relacionado

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

¿Cómo está esta guía?

Integrar con FastAPI

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

Integrar con Java

Instala y configura el SDK de Commet para Java.

En esta página

Instalar
Configurar
Suscribir
Verificar acceso
Trackear uso
Portal del Cliente
Webhooks
URLs
Relacionado