| import stripe | |
| import os | |
| from datetime import datetime | |
| stripe.api_key = os.getenv("STRIPE_KEY") | |
| class BillingEngine: | |
| def __init__(self): | |
| self.plans = { | |
| "basic": "price_1P...", | |
| "pro": "price_1P...", | |
| "enterprise": "price_1P..." | |
| } | |
| def create_subscription(self, email, tier, metadata={}): | |
| customer = stripe.Customer.create(email=email) | |
| sub = stripe.Subscription.create( | |
| customer=customer.id, | |
| items=[{"price": self.plans[tier]}], | |
| metadata={ | |
| **metadata, | |
| "deployment_id": "agentic_v5", | |
| "start_date": datetime.now().isoformat() | |
| } | |
| ) | |
| return sub.id | |
| def usage_webhook(self, event): | |
| if event["type"] == "agent.runtime_minutes": | |
| stripe.SubscriptionItem.create_usage_record( | |
| event["subscription_item"], | |
| quantity=event["minutes"], | |
| timestamp=int(datetime.now().timestamp()) | |
| ) | |