Examples

This section contains example applications demonstrating SubscriptionKore usage.

FastAPI Integration

See examples/fastapi_app.py for a complete FastAPI application.

Multi-Provider Setup

See examples/multi_provider_app.py for an example with multiple payment providers.

Running Examples

To run the examples:

# Install with all dependencies
pip install -e .[all]

# Run FastAPI example
make run-fastapi-example

# Run multi-provider example
make run-multi-provider-example

Basic Example

"""Example FastAPI application using SubscriptionKore."""

from fastapi import Depends, FastAPI, HTTPException
from pydantic import BaseModel

from subscriptionkore import (
    SubscriptionKoreConfig,
    SubscriptionActivated,
    SubscriptionCanceled,
    PaymentFailed,
)
from subscriptionkore.config import StripeConfig
from subscriptionkore.core.exceptions import EntityNotFoundError
from subscriptionkore.integrations. fastapi import (
    create_webhook_router,
    get_customer_manager,
    get_entitlement_service,
    get_subscription_manager,
    setup_subscriptionkore,
)
from subscriptionkore.services import CustomerManager, EntitlementService, SubscriptionManager
from subscriptionkore. services.webhook_processor import WebhookResult


# Configuration - load from environment in production
config = SubscriptionKoreConfig(
    database_url="postgresql+asyncpg://user:password@localhost: 5432/subscriptionkore",
    redis_url="redis://localhost:6379/0",
    stripe=StripeConfig(
        api_key="sk_test_your_stripe_key",
        webhook_secret="whsec_your_webhook_secret",
    ),
)

# Create FastAPI app
app = FastAPI(title="My SaaS App")

# Setup SubscriptionKore
subscriptionkore = setup_subscriptionkore(app, config)


# Event handlers - register before app starts
async def on_subscription_activated(event: SubscriptionActivated) -> None:
    """Handle subscription activation."""
    print(f"Subscription activated: {event.subscription.id}")
    # Send welcome email, provision resources, etc.


async def on_subscription_canceled(event: SubscriptionCanceled) -> None:
    """Handle subscription cancellation."""

Multi-Provider Example

"""Example showing multi-provider usage."""

from fastapi import Depends, FastAPI, HTTPException
from pydantic import BaseModel

from subscriptionkore import SubscriptionKoreConfig, ProviderType
from subscriptionkore. config import (
    StripeConfig,
    PaddleConfig,
    LemonSqueezyConfig,
    ChargebeeConfig,
)
from subscriptionkore.integrations.fastapi import (
    create_webhook_router,
    get_customer_manager,
    get_subscription_manager,
    setup_subscriptionkore,
)
from subscriptionkore. services import CustomerManager, SubscriptionManager


# Multi-provider configuration
config = SubscriptionKoreConfig(
    database_url="postgresql+asyncpg://user:password@localhost: 5432/subscriptionkore",
    redis_url="redis://localhost:6379/0",
    
    # Configure multiple providers
    stripe=StripeConfig(
        api_key="sk_test_stripe_key",
        webhook_secret="whsec_stripe_secret",
    ),
    paddle=PaddleConfig(
        api_key="paddle_api_key",
        webhook_secret="paddle_webhook_secret",
        environment="sandbox",
    ),
    lemonsqueezy=LemonSqueezyConfig(
        api_key="lemonsqueezy_api_key",
        webhook_secret="lemonsqueezy_webhook_secret",
        store_id="12345",
    ),
    chargebee=ChargebeeConfig(
        site="your-site",
        api_key="chargebee_api_key",
        webhook_username="webhook_user",
        webhook_password="webhook_pass",
    ),
    
    # Set default provider
    default_provider=ProviderType. STRIPE,