Agrega cobros y pagos a tu aplicación de Flask.
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 commetpip install commet-sdk flaskuv add commet-sdk flaskpoetry add commet-sdk flaskCOMMET_API_KEY=ck_sandbox_xxximport os
from commet import Commet
commet = Commet(
api_key=os.environ["COMMET_API_KEY"],
)from flask import Blueprint, request, jsonify, redirect
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.checkout_url})@billing.route("/subscription/<customer_id>")
def get_subscription(customer_id):
sub = commet.subscriptions.get_active(customer_id=customer_id)
if sub is None:
return jsonify({"error": "no_active_subscription"}), 404
return jsonify({"status": sub.status})
@billing.route("/features/<feature>/<customer_id>")
def check_feature(feature, customer_id):
result = commet.feature_access.get(code=feature, customer_id=customer_id)
return jsonify({"allowed": result.allowed})@billing.route("/usage", methods=["POST"])
def track_usage():
data = request.get_json()
commet.usage.track(
customer_id=data["customer_id"],
feature_code="api_calls",
value=1,
)
return jsonify({"tracked": True})El uso se agrega y se cobra al final del período.
@billing.route("/portal")
def portal():
result = commet.portal.get_url(customer_id="user_123")
return redirect(result.portal_url)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 "", 200from 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)¿Cómo está esta guía?