Skip to main content

💳 pay-engine

PyPI version Python License: MIT

pay-engine — O'zbekistonning barcha asosiy to'lov tizimlarini (Payme, Click, Uzum Bank) birlashtiruvchi, bir qator kod bilan to'lov havolalari yaratish, Telegram bot tugmalari hosil qilish va avtomatik pul yechish (auto-charge) imkonini beruvchi zamonaviy Python kutubxonasi.


🚀 Imkoniyatlar (Features)

  • ⚡ 1 qatorlik to'lov havolalari: Payme, Click va Uzum Bank uchun bir lahzada to'lov linklarini olish.
  • 🤖 Telegram Botlar uchun tayyor klaviaturalar: aiogram va boshqa botlar uchun tayyor InlineKeyboardMarkup tugmalari.
  • 🛡️ Avtomatlashtirilgan Webhooklar: FastAPI va boshqa freymvorklarda imzolarni tekshirish va JSON-RPC protokoli bilan bosh qotirmasdan, faqat on_success(order_id, amount) orqali pul tushganini qabul qilish.
  • 🔄 Avtomatik yechish (Card Token / Auto-charge): Karta tokeni orqali qayta SMS-kodsiz to'lov yechish (obunalar va Yandex Go kabi xizmatlar uchun).
  • 🧩 Zero-boilerplate: .env faylidan kalitlarni avtomatik o'qib olish.

📦 O'rnatish (Installation)

pip install pay-engine

FastAPI yoki Telegram bot integratsiyasi bilan birga o'rnatish uchun:

pip install "pay-engine[fastapi,telegram]"

⚙️ Sozlash (.env)

Loyihangizning .env fayliga kerakli to'lov tizimlari kalitlarini kiriting:

# Payme
PAYME_MERCHANT_ID=your_payme_merchant_id
PAYME_SECRET_KEY=your_payme_secret_key
PAYME_TEST_MODE=false

# Click
CLICK_SERVICE_ID=your_click_service_id
CLICK_MERCHANT_ID=your_click_merchant_id
CLICK_SECRET_KEY=your_click_secret_key
CLICK_MERCHANT_USER_ID=your_click_user_id

# Uzum Bank
UZUM_SHOP_ID=your_uzum_shop_id
UZUM_SECRET_KEY=your_uzum_secret_key

📖 Foydalanish (Quickstart)

1. To'lov havolasini olish (1 qatorda)

from pay_engine import payme, click, uzum

# Payme havolasi:
payme_url = payme.link(amount=100_000, order_id="ORDER_123")

# Click havolasi:
click_url = click.link(amount=100_000, order_id="ORDER_123")

# Uzum Bank havolasi:
uzum_url = uzum.link(amount=100_000, order_id="ORDER_123")

2. Telegram Botda to'lov tugmalarini chiqarish (aiogram)

from aiogram import Bot, Dispatcher, types
from pay_engine.integrations.telegram import payment_buttons

bot = Bot(token="BOT_TOKEN")
dp = Dispatcher()

@dp.message(lambda msg: msg.text == "/tolov")
async def pay_command(message: types.Message):
    # Bir qatorda Payme, Click va Uzum tugmalarini yasaymiz:
    keyboard = payment_buttons(
        amount=75_000, 
        order_id=message.from_user.id
    )
    
    await message.answer(
        "To'lov qilish uchun qulay tizimni tanlang:",
        reply_markup=keyboard
    )

3. FastAPI da pul tushganini ushlash (Webhook)

from fastapi import FastAPI
from pay_engine.integrations.fastapi import pay_router

app = FastAPI()

# Pul muvaffaqiyatli tushganda bajariladigan funksiya:
async def tolov_tasdiqlandi(order_id: str, amount: float):
    print(f"✅ Pul to'landi: Buyurtma #{order_id}, Summa: {amount:,.0f} so'm")
    # Bazangizda buyurtma statusini o'zgartiring

# Bitta qatorda /payments/payme, /payments/click, /payments/uzum ulanadi:
app.include_router(pay_router(on_success=tolov_tasdiqlandi))

4. Avtomatik yechish (Card Token Auto-charge)

Mijozning saqlangan karta tokeni orqali hisobidan avtomatik pul yechib olish:

from pay_engine import payme

result = payme.charge(
    card_token="saved_card_token_abc123",
    amount=50_000,
    order_id="SUB_999",
    description="Oylik obuna to'lovi"
)

if result.success:
    print(f"Pul yechildi! Tranzaksiya ID: {result.transaction_id}")
else:
    print(f"Xatolik yuz berdi: {result.message}")

🧪 Testlarni ishga tushirish

python -m unittest discover -s tests -p "test_*.py"

📄 Litsenziya

MIT License. Ochiq va bepul foydalanish mumkin!

Release files for pay-engine 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pay-engine 0.2.0
File Size Uploaded
pay_engine-0.2.0.tar.gz 23.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pay-engine 0.2.0
File Interpreter ABI Platform
pay_engine-0.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 53.3 kB

Release files / pay_engine-0.2.0.tar.gz

Download URL pay_engine-0.2.0.tar.gz
Size 23.8 kB
Tags Source
SHA-256 checksum
How to use checksums
91d5def1bf85a4a605c29a6bb79c6e741358cee52daf37433cd7f037fff9a498
BLAKE2b-256 checksum
How to use checksums
50f5d24f513c1deca9d15bc60103ff5f7113c6e8fd91b88616500797491d4edd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / pay_engine-0.2.0-py3-none-any.whl

Download URL pay_engine-0.2.0-py3-none-any.whl
Size 29.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
63cc5a776709fe147ddb22a4147a9dbc6070f73a6e5c558b59bc9552d04d13e6
BLAKE2b-256 checksum
How to use checksums
6bb036dbb9b7e27370801aa9404f15280ca35c2302d2a4354c9d94a00cc8262b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release history Release notifications | RSS feed

0.3.0

2 release files

This release

0.2.0 This release

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page