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-python

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_python-1.0.1.tar.gz (11.3 kB view details)

Uploaded Source

Built Distribution

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

inpay_python-1.0.1-py3-none-any.whl (10.1 kB view details)

Uploaded Python 3

File details

Details for the file inpay_python-1.0.1.tar.gz.

File metadata

  • Download URL: inpay_python-1.0.1.tar.gz
  • Upload date:
  • Size: 11.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.2

File hashes

Hashes for inpay_python-1.0.1.tar.gz
Algorithm Hash digest
SHA256 be7222b9aaa87ac428106bbb2b740941c3120c6f3fc34cc2dc701b229dcd5897
MD5 b521977beb0195fa44790166b6fb21c6
BLAKE2b-256 e9572500fa291496f222647051779ae3b388d095910d3a8fed78b54366c58cb6

See more details on using hashes here.

File details

Details for the file inpay_python-1.0.1-py3-none-any.whl.

File metadata

  • Download URL: inpay_python-1.0.1-py3-none-any.whl
  • Upload date:
  • Size: 10.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.2

File hashes

Hashes for inpay_python-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 52de8289a179243ec6eeff360605338676d177a980b581790a1e05e557fc2fac
MD5 054b05b2efb48bb97d4760b6f5f20259
BLAKE2b-256 a426cf88e8862851aff61d00435745c3c6f99e1db8d015649189a2eff949ab8f

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