💳 pay-engine
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:
aiogramva boshqa botlar uchun tayyorInlineKeyboardMarkuptugmalari. - 🛡️ 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:
.envfaylidan 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)
| File | Size | Uploaded | |
|---|---|---|---|
| pay_engine-0.2.0.tar.gz | 23.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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
|