Skip to main content

Official Python SDK for the PayBridgeNP payment gateway - accept eSewa, Khalti, and ConnectIPS through a single API

Project description

paybridge-np

Official Python SDK for the PayBridgeNP payment gateway. Accept eSewa, Khalti, and ConnectIPS through a single API.

Installation

pip install paybridge-np

Quick start

from paybridge_np import PayBridge

client = PayBridge(api_key="sk_live_...")  # from dashboard.paybridgenp.com

# Create a checkout session
session = client.checkout.create({
    "amount": 250000,        # NPR 2,500 in paisa
    "currency": "NPR",
    "returnUrl": "https://mystore.com/success",
    "cancelUrl": "https://mystore.com/cart",
    "metadata": {"orderId": "ORD-7842"},
    "customer": {
        "name": "Ram Shrestha",
        "email": "ram@example.com",
        "phone": "9841000000",
    },
})

# Redirect customer to hosted checkout
# session["checkout_url"] => https://paybridgenp.com/checkout/cs_xxx

Payments

# List payments
result = client.payments.list(limit=20)
payments = result["data"]

# Get a single payment
payment = client.payments.retrieve("pay_xxx")

Refunds

refund = client.refunds.create({
    "paymentId": "pay_xxx",
    "amount": 100000,  # NPR 1,000 in paisa
    "reason": "customer_request",
})

Webhooks

# Register an endpoint
endpoint = client.webhooks.create(
    url="https://mystore.com/webhooks/paybridge",
    events=["payment.succeeded", "payment.failed"],
)

# Verify a webhook signature (no client instance needed)
from paybridge_np.resources.webhooks import WebhooksResource

event = WebhooksResource.construct_event(
    body=raw_body,
    signature=request.headers["X-PayBridge-Signature"],
    secret="whsec_...",
)

Billing (Subscriptions)

# Create a plan
plan = client.plans.create({
    "name": "Pro Monthly",
    "amount": 99900,
    "intervalUnit": "month",
})

# Create a customer
customer = client.customers.create({
    "name": "Sita Gurung",
    "email": "sita@example.com",
})

# Subscribe
subscription = client.subscriptions.create({
    "customerId": customer["id"],
    "planId": plan["id"],
})

# List invoices
invoices = client.invoices.list(customer_id=customer["id"])

Sandbox mode

Use a sandbox API key (sk_sandbox_...) to test without real money. The SDK automatically routes to sandbox endpoints.

Error handling

from paybridge_np import PayBridgeError, AuthenticationError

try:
    session = client.checkout.create({...})
except AuthenticationError:
    print("Invalid API key")
except PayBridgeError as e:
    print(e, e.status_code)

Context manager

with PayBridge(api_key="sk_live_...") as client:
    session = client.checkout.create({...})
# HTTP client is closed automatically

Documentation

License

MIT

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

paybridge_np-0.1.0.tar.gz (10.0 kB view details)

Uploaded Source

Built Distribution

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

paybridge_np-0.1.0-py3-none-any.whl (14.9 kB view details)

Uploaded Python 3

File details

Details for the file paybridge_np-0.1.0.tar.gz.

File metadata

  • Download URL: paybridge_np-0.1.0.tar.gz
  • Upload date:
  • Size: 10.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.5

File hashes

Hashes for paybridge_np-0.1.0.tar.gz
Algorithm Hash digest
SHA256 0d3ac22c4db657078cb944d8a231eddcb94ecdbe4cfc285c3db8544b095f6e02
MD5 01f3f5dc7c67693a944104e3d1f9e5d5
BLAKE2b-256 499571f279f79e139908d53099ff80926cdf09e3f315c49b39e08c54cc887ee4

See more details on using hashes here.

File details

Details for the file paybridge_np-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: paybridge_np-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 14.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.5

File hashes

Hashes for paybridge_np-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 58dc6c9908d412b3dd442693eda518c395c1366cc17b7f21b44a06abbb9fe70f
MD5 143f8478016da002a839b8606471983f
BLAKE2b-256 445f7dfd7d05f27fa281daa030aaf11fd1d95482a28afb33c6b5010d5ad3b60c

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