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.5.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.5-py3-none-any.whl (19.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: onerouter-2.0.5.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.5.tar.gz
Algorithm Hash digest
SHA256 2a98877691f232066d14c6fb6071a916f12ba60d3552ef18e9bee4327a03b5dd
MD5 46b3023dbf8d13cd27ec3b5c83f37c1e
BLAKE2b-256 591495c9dcd83e1489a293b399ac791753fdcfb8fcedf13efeed033ee9a44cfb

See more details on using hashes here.

File details

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

File metadata

  • Download URL: onerouter-2.0.5-py3-none-any.whl
  • Upload date:
  • Size: 19.9 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.5-py3-none-any.whl
Algorithm Hash digest
SHA256 e8995771c29e25dd7b3a6dc1801b5e75e36888797859892bdc4d394afbe17ae3
MD5 9a0db54477a37d3578b3242d4b41bf5e
BLAKE2b-256 4c974a105c1f07c51f3685ed0f3d51a013db6224c2594403a767642418389169

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