diff --git a/examples/python/servers/fastapi/main.py b/examples/python/servers/fastapi/main.py index da3c3280bc..e4e9251477 100644 --- a/examples/python/servers/fastapi/main.py +++ b/examples/python/servers/fastapi/main.py @@ -20,18 +20,19 @@ load_dotenv() # Get configuration from environment -ADDRESS = os.getenv("ADDRESS") +ACP_V1_RECEIVER_ADDRESS = os.getenv("ACP_V1_RECEIVER_ADDRESS") +ACP_V2_RECEIVER_ADDRESS = os.getenv("ACP_V2_RECEIVER_ADDRESS") CDP_API_KEY_ID = os.getenv("CDP_API_KEY_ID") CDP_API_KEY_SECRET = os.getenv("CDP_API_KEY_SECRET") NETWORK = os.getenv("NETWORK") print(f"🔍 Loading environment variables:") -print(f" ADDRESS: {ADDRESS}") +print(f" ADDRESS: {ACP_V1_RECEIVER_ADDRESS}" + f" {ACP_V2_RECEIVER_ADDRESS}") print(f" CDP_API_KEY_ID: {CDP_API_KEY_ID[:20] if CDP_API_KEY_ID else 'NOT SET'}...") print(f" CDP_API_KEY_SECRET: {'SET' if CDP_API_KEY_SECRET else 'NOT SET'} ({len(CDP_API_KEY_SECRET) if CDP_API_KEY_SECRET else 0} chars)") -if not ADDRESS: - raise ValueError("Missing required environment variable: ADDRESS") +if not ACP_V1_RECEIVER_ADDRESS or not ACP_V2_RECEIVER_ADDRESS: + raise ValueError("Missing required environment variable: ACP_V1_RECEIVER_ADDRESS or ACP_V2_RECEIVER_ADDRESS") if not NETWORK or NETWORK not in ["base", "base-sepolia"]: raise ValueError(f"Invalid network: {NETWORK}") @@ -111,12 +112,24 @@ async def dynamic_price_middleware(request: Request, call_next): # Read dynamic price from X-Budget header budget = request.headers.get("X-Budget", "$0.001") print(f"📋 Dynamic budget from header: {budget}") + + # Receiver depends on ACP version + acp_version_str = request.headers.get("X-ACP-VERSION", "1") + try: + acp_version = int(acp_version_str) + except ValueError: + acp_version = 1 + + if acp_version == 2: + pay_to_address = ACP_V2_RECEIVER_ADDRESS + else: + pay_to_address = ACP_V1_RECEIVER_ADDRESS # Use the standard require_payment middleware with dynamic price payment_middleware = require_payment( path="/acp-budget", price=budget, # ⭐ dynamic price - pay_to_address=ADDRESS, + pay_to_address=pay_to_address, network=NETWORK, facilitator_config=facilitator_config, description=f"acp job budget ({budget})",