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.1.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.1.0
File Size Uploaded
pay_engine-0.1.0.tar.gz 13.7 kB Details

Built distribution (wheel)

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

Total release size: 36.1 kB

Release files / pay_engine-0.1.0.tar.gz

Download URL pay_engine-0.1.0.tar.gz
Size 13.7 kB
Tags Source
SHA-256 checksum
How to use checksums
8483553ddc38b3af92395245488685cc6512afa6d44643d4576c987c95722ec9
BLAKE2b-256 checksum
How to use checksums
89d092d2eb3a7ebed67164c2978ff7280ffb053d88ec072a99c1d624cbb9210e
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.1.0-py3-none-any.whl

Download URL pay_engine-0.1.0-py3-none-any.whl
Size 22.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0efd763fc4469e4dac6a282db15f6f0cdd8a1c95f6d158f8b1f021a12bd83456
BLAKE2b-256 checksum
How to use checksums
7d6634e37d1ef0c8f631ee8603eeb6d4c5ee3345af625a34a3f966c1fa2c4211
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

0.2.0

2 release files

This release

0.1.0 This release

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