💳 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.1.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.1.0.tar.gz | 13.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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
|