Skip to main content

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

inpay_sdk-1.0.0.tar.gz (11.2 kB view details)

Uploaded Source

Built Distribution

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

inpay_sdk-1.0.0-py3-none-any.whl (10.0 kB view details)

Uploaded Python 3

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

Hashes for inpay_sdk-1.0.0.tar.gz
Algorithm Hash digest
SHA256 4003445fb9fb3bd7b44898fa8c8e25de816fdbf3db053373a08f00206405b7f6
MD5 ace973483e0e9e3387ca2e80b8adc4a7
BLAKE2b-256 89d756f1cd39c8c24477c9b093c59af8f1bf58a27784b52946dec0ea4c9620db

See more details on using hashes here.

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

Hashes for inpay_sdk-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 af47d203acc5cee783e5f68a3b784c941a239d0052f4b41481e70dbcf84a017d
MD5 df6c6e2585c2fc0bab69677313a4c09a
BLAKE2b-256 154656a160a16926d854134f7d8bf63542e37bcbb1022ec5edb39a53b49f662d

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