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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0d3ac22c4db657078cb944d8a231eddcb94ecdbe4cfc285c3db8544b095f6e02
|
|
| MD5 |
01f3f5dc7c67693a944104e3d1f9e5d5
|
|
| BLAKE2b-256 |
499571f279f79e139908d53099ff80926cdf09e3f315c49b39e08c54cc887ee4
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
58dc6c9908d412b3dd442693eda518c395c1366cc17b7f21b44a06abbb9fe70f
|
|
| MD5 |
143f8478016da002a839b8606471983f
|
|
| BLAKE2b-256 |
445f7dfd7d05f27fa281daa030aaf11fd1d95482a28afb33c6b5010d5ad3b60c
|