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.1.tar.gz (15.9 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.1-py3-none-any.whl (17.3 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: onerouter-2.0.1.tar.gz
  • Upload date:
  • Size: 15.9 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.1.tar.gz
Algorithm Hash digest
SHA256 296ba6b0bcd3d0627448252d4427345a57cb8e1e596e0f3e73a3ba6fae33edbf
MD5 21376b2589a9b55466a42df686ea2de2
BLAKE2b-256 84b5f284e396950dd024f2ce8f644048c007c67a4a2ffd302e6fca5ce5d5a11c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: onerouter-2.0.1-py3-none-any.whl
  • Upload date:
  • Size: 17.3 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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 ad45169f65f1bf8576d8d9baedb352bc2b4fbcbc862e7e7a1d4bd9cde1a9739e
MD5 42941653eaa97d88a9220e94eb0d5aab
BLAKE2b-256 cd6e016e914a56fc74e974d4cea05247ef3a5aea24bec448b9338cdc83a60e1f

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