Skip to main content

Unified API client for payments, subscriptions, SMS, email, and marketplace features

Project description

OneRouter Python SDK

Official Python SDK for OneRouter - Unified API for payments, subscriptions, and more.

Installation

pip install onerouter

Quick Start

from onerouter import OneRouter

# Initialize client
client = OneRouter(api_key="unf_live_xxx")

# Create payment
order = await client.payments.create(
    amount=500.00,
    currency="INR"
)

print(f"Order ID: {order['transaction_id']}")
print(f"Checkout URL: {order['checkout_url']}")

Features

  • Unified API: Single interface for Razorpay, PayPal, Stripe, etc.
  • Automatic Retries: Built-in retry logic with exponential backoff
  • Idempotency: Prevent duplicate payments automatically
  • Type Hints: Full type support for better IDE autocomplete
  • Error Handling: Comprehensive exception hierarchy
  • Async & Sync: Support for both async/await and synchronous code

Usage Examples

Async Usage (Recommended)

import asyncio
from onerouter import OneRouter

async def main():
    async with OneRouter(api_key="unf_live_xxx") as client:
        # Create payment
        order = await client.payments.create(
            amount=500.00,
            currency="INR",
            receipt="order_123"
        )

        # Get payment status
        status = await client.payments.get(order['transaction_id'])

        # Create refund
        refund = await client.payments.refund(
            payment_id=order['provider_order_id'],
            amount=100.00  # Partial refund
        )

asyncio.run(main())

Sync Usage (for non-async code)

from onerouter import OneRouterSync

client = OneRouterSync(api_key="unf_live_xxx")

try:
    # Create payment (no await needed)
    order = client.payments.create(
        amount=500.00,
        currency="INR"
    )
    print(f"Order: {order['transaction_id']}")
finally:
    client.close()

Subscriptions

# Create subscription
subscription = await client.subscriptions.create(
    plan_id="plan_monthly_99",
    customer_notify=True,
    total_count=12
)

# Get subscription
sub_details = await client.subscriptions.get(subscription['id'])

# Cancel subscription
await client.subscriptions.cancel(
    subscription_id=subscription['id'],
    cancel_at_cycle_end=True
)

Payment Links

# Create payment link
link = await client.payment_links.create(
    amount=999.00,
    description="Premium Plan",
    customer_email="user@example.com"
)

print(f"Share this link: {link['short_url']}")

Error Handling

from onerouter import (
    OneRouter,
    AuthenticationError,
    RateLimitError,
    ValidationError,
    APIError
)

async with OneRouter(api_key="unf_live_xxx") as client:
    try:
        order = await client.payments.create(amount=500.00)

    except AuthenticationError:
        print("Invalid API key")

    except RateLimitError as e:
        print(f"Rate limit exceeded. Retry after {e.retry_after} seconds")

    except ValidationError as e:
        print(f"Validation error: {e}")

    except APIError as e:
        print(f"API error ({e.status_code}): {e}")

Configuration

client = OneRouter(
    api_key="unf_live_xxx",
    base_url="https://api.onerouter.com",  # Optional: Custom API URL
    timeout=30,                             # Optional: Request timeout (seconds)
    max_retries=3                           # Optional: Max retry attempts
)

API Reference

Payments

Method Description
payments.create() Create a payment order
payments.get(transaction_id) Get payment details
payments.refund(payment_id, amount) Create refund

Subscriptions

Method Description
subscriptions.create() Create subscription
subscriptions.get(subscription_id) Get subscription details
subscriptions.cancel(subscription_id) Cancel subscription

Payment Links

Method Description
payment_links.create() Create payment link

Testing

# Install dev dependencies
pip install -e ".[dev]"

# Run tests
pytest

# Run with coverage
pytest --cov=onerouter tests/

Support

License

MIT License - see LICENSE file for details

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

onerouter-2.0.4.tar.gz (16.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

onerouter-2.0.4-py3-none-any.whl (19.8 kB view details)

Uploaded Python 3

File details

Details for the file onerouter-2.0.4.tar.gz.

File metadata

  • Download URL: onerouter-2.0.4.tar.gz
  • Upload date:
  • Size: 16.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.9

File hashes

Hashes for onerouter-2.0.4.tar.gz
Algorithm Hash digest
SHA256 91c2bb34c591b711a4be1fa18c7c3ae754c5d68ac36569b081477062fa3ec5d1
MD5 46bf0094a0a320deab49275edd5f9fe6
BLAKE2b-256 397de46bcbbacf52e17390128d11ad53d1dd97d9424e0ca48d7a62fe6a5c3d4f

See more details on using hashes here.

File details

Details for the file onerouter-2.0.4-py3-none-any.whl.

File metadata

  • Download URL: onerouter-2.0.4-py3-none-any.whl
  • Upload date:
  • Size: 19.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.9

File hashes

Hashes for onerouter-2.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 42efd9bbf3d57da409ca082341bd2d2a79931bb3a239331c1c6de69e508345df
MD5 ce37d29885de885a5e9a8532861bd871
BLAKE2b-256 e8a6a3b0bd203f3891d95dcc442daf39c00e5ff309b317c7e1e2a0b690d9969c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page