Official inPAY Python SDK — create invoices, check status, and verify webhooks for the inPAY payment platform (Uzbekistan).
Project description
inPAY Python SDK
Official Python SDK for the inPAY payment platform (Uzbekistan). One inPAY contract → accept Click, Payme, UzCard/HUMO with a few lines of code.
Bitta inPAY shartnomasi bilan barcha to'lov usullarini qabul qiling.
O'rnatish / Installation
pip install inpay-sdk
Talab: Python ≥ 3.8. Tashqi bog'liqliksiz (faqat standart kutubxona).
Tez boshlash / Quick start
from inpay import InPay
inpay = InPay(
merchant_id=12345, # kassa merchant_id
bearer_token="xxxxxxxx", # kassa bearer token
webhook_secret="yyyyyyyy", # webhook imzosi uchun
)
# 1) To'lov yaratish
invoice = inpay.create(
amount=50000, # so'm (min 1000)
callback_url="https://shop.uz/inpay/webhook",
order_id="A-123", # sizning ichki reference
)
print(invoice.pay_url) # foydalanuvchini shu manzilga yo'naltiring
invoice:
| Atribut | Izoh |
|---|---|
invoice.order_id |
inPAY buyurtma ID (16 hex) |
invoice.pay_url |
Universal checkout sahifasi |
invoice.pay_url_link |
So'ralgan usulga mos to'g'ridan havola |
invoice.pay_links |
{"click": ..., "payme": ...} to'g'ridan havolalar |
To'g'ridan-to'g'ri bitta usul
invoice = inpay.create(amount=50000, payment_method="click") # "click"|"payme"|"myuzcard"
2) Holatni tekshirish / Status
tx = inpay.status("a1b2c3d4e5f6a7b8")
if tx.is_paid:
...
# tx.status: "pending" | "success" | "failed"
3) Webhook (payment.success)
inPAY to'lov muvaffaqiyatli bo'lganda callback_url'ingizga POST yuboradi va uni
X-InPAY-Signature (HMAC-SHA256) bilan imzolaydi. SDK imzoni constant-time tekshiradi.
Flask misoli:
from flask import Flask, request
from inpay import InPay
from inpay.exceptions import SignatureError
app = Flask(__name__)
inpay = InPay(merchant_id=12345, bearer_token="xxxxxxxx", webhook_secret="yyyyyyyy")
@app.post("/inpay/webhook")
def inpay_webhook():
sig = request.headers.get("X-InPAY-Signature", "")
try:
tx = inpay.webhook().verify(request.get_data(as_text=True), sig)
except SignatureError:
return {"ok": False}, 401
if tx.is_paid:
# ⚠️ IDEMPOTENT bo'ling — takror kelishi mumkin
# if already_paid(tx.order_id): return {"ok": True}
# mark_paid(tx.order_id, tx.amount)
...
return {"ok": True}
Xavfsizlik: imzo tekshiruvidan o'tmagan webhook'ni HECH QACHON to'lov deb qabul qilmang.
Xatolar / Errors
from inpay.exceptions import ApiError, SignatureError, InPayError
try:
inpay.create(amount=50000)
except ApiError as e:
print(e.error_code) # masalan "MERCHANT_INACTIVE", "AMOUNT_TOO_LOW"
Litsenziya
MIT © inPAY
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 inpay_sdk-1.0.0.tar.gz.
File metadata
- Download URL: inpay_sdk-1.0.0.tar.gz
- Upload date:
- Size: 11.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4003445fb9fb3bd7b44898fa8c8e25de816fdbf3db053373a08f00206405b7f6
|
|
| MD5 |
ace973483e0e9e3387ca2e80b8adc4a7
|
|
| BLAKE2b-256 |
89d756f1cd39c8c24477c9b093c59af8f1bf58a27784b52946dec0ea4c9620db
|
File details
Details for the file inpay_sdk-1.0.0-py3-none-any.whl.
File metadata
- Download URL: inpay_sdk-1.0.0-py3-none-any.whl
- Upload date:
- Size: 10.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
af47d203acc5cee783e5f68a3b784c941a239d0052f4b41481e70dbcf84a017d
|
|
| MD5 |
df6c6e2585c2fc0bab69677313a4c09a
|
|
| BLAKE2b-256 |
154656a160a16926d854134f7d8bf63542e37bcbb1022ec5edb39a53b49f662d
|