from fastapi import FastAPI, HTTPException from fastapi.middleware.cors import CORSMiddleware from fastapi.staticfiles import StaticFiles from pydantic import BaseModel import stripe # Initialize the FastAPI app app = FastAPI() # Add CORS middleware app.add_middleware( CORSMiddleware, allow_origins=["*"], allow_methods=["*"], allow_headers=["*"], ) # Serve static files app.mount("/static", StaticFiles(directory="static"), name="static") # Set your Stripe secret key stripe.api_key = "sk_test_51P2EfNIS4MdDIAjNEABa0PlwvzI7GgHdEGtCzCNPG0hDODhI8qz46TqRbUvFYSTvAsnneCnW0UNlWLubpZ0TQqxo00VUTUTc3n" # Define a request model for the checkout session creation class CheckoutRequest(BaseModel): product_name: str amount: float email: str @app.post("/create-checkout-session") async def create_checkout_session(checkout: CheckoutRequest): try: # Create a checkout session session = stripe.checkout.Session.create( payment_method_types=['card'], line_items=[{ 'price_data': { 'currency': 'usd', 'product_data': { 'name': checkout.product_name, }, 'unit_amount': int(checkout.amount * 100), # Convert amount to cents }, 'quantity': 1, }], mode='payment', customer_email=checkout.email, success_url="http://127.0.0.1:8000/static/success.html", # Replace with your success URL cancel_url="http://127.0.0.1:8000/static/failure.html", # Replace with your failure URL ) return {"url": session.url} except Exception as e: raise HTTPException(status_code=500, detail=str(e))