---
title: Avto to'lov (karta tokenizatsiya va obuna)
description: PayTechUZ Python SDK yordamida Avto to'lov integratsiyasi bo'yicha batafsil qo'llanma.
source: https://pay-tech.uz/docs/python-sdk
---

# Avto to'lov

PayTechUZ SDK avto to'lovlarni (karta tokenizatsiyasi va takroriy to'lovlar) boshqarish uchun yagona Framework integratsiyasini taqdim etadi.

## Payme

### Kartalar

Siz saqlangan kartalarni `PaymeGateway` nusxasining `cards` xususiyati yordamida boshqarishingiz mumkin.

```python
from paytechuz.gateways.payme import PaymeGateway


# Payme shlyuzini ishga tushirish
payme = PaymeGateway(
    payme_id="your_payme_id",
    payme_key="your_payme_key",
    is_test_mode=True
)

# 1. Yangi karta yaratish
# Bu tasdiqlanishi kerak bo'lgan tokenni qaytaradi
create_response = payme.cards.create(
    card_number="8600000000000000",
    expire_date="12/25",
    save=True  # Kartani kelajakda foydalanish uchun saqlash uchun True ga o'rnating
)
print(create_response)

# 2. Tasdiqlash kodini olish (agar avtomatik qabul qilinmagan bo'lsa)
payme.cards.get_verify_code(token="card_token")

# 3. Kartani foydalanuvchiga SMS orqali yuborilgan kod bilan tasdiqlash
verify_response = payme.cards.verify(
    token="card_token",
    code="123456"
)
print(verify_response)

# 4. Karta holatini tekshirish
check_response = payme.cards.check(token="card_token")
print(check_response)

# 5. Saqlangan kartani o'chirish
payme.cards.remove(token="card_token")
```

### Cheklar

Siz cheklarni `PaymeGateway` nusxasining `receipts` xususiyati yordamida boshqarishingiz mumkin.

```python
from paytechuz.gateways.payme import PaymeGateway

# Payme shlyuzini ishga tushirish
payme = PaymeGateway(
    payme_id="your_payme_id",
    payme_key="your_payme_key",
    is_test_mode=True
)

# 1. Chek yaratish
create_response = payme.receipts.create(
    amount=100000, # 1000 so'm (tiyinda)
    account={"order_id": "12345"},
    description="Buyurtma uchun to'lov #12345"
)
print(create_response)

# 2. Saqlangan karta bilan chekni to'lash
pay_response = payme.receipts.pay(
    receipt_id="receipt_id",
    token="card_token_here"
)
print(pay_response)

# 3. Chek holatini tekshirish
check_response = payme.receipts.check(receipt_id="receipt_id")
print(check_response)

# 4. Chekni telefon raqamiga yuborish (SMS)
send_response = payme.receipts.send(
    receipt_id="receipt_id",
    phone="998901234567"
)
print(send_response)

# 5. Chekni bekor qilish
cancel_response = payme.receipts.cancel(
    receipt_id="receipt_id",
    reason="To'lov qaytarish so'raldi"
)
print(cancel_response)
```

## Click

### Kartalar

Click standartlashtirilgan `cards` xususiyati orqali karta tokenizatsiyasini qo'llab-quvvatlaydi.

```python
from paytechuz.gateways.click import ClickGateway

# Click shlyuzini ishga tushirish
click = ClickGateway(
    service_id="your_service_id",
    merchant_id="your_merchant_id",
    merchant_user_id="your_merchant_user_id",
    secret_key="your_secret_key",
    is_test_mode=True
)

# 1. Karta tokenini so'rash
# Bu vaqtinchalik tokenni qaytaradi va foydalanuvchiga SMS yuboradi
token_response = click.cards.create(
    card_number="8600000000000000",
    expire_date="0330",  # OOYY formati
    save=True  # Payme bilan bir xil! (temporary=0 ga mos keladi)
)
print(token_response)

# 2. Karta tokenini tasdiqlash
verify_response = click.cards.verify(
    card_token="card_token",
    sms_code="12345"
)
print(verify_response)

# 3. Tasdiqlangan token bilan to'lovni amalga oshirish
payment_response = click.cards.pay(
    card_token=card_token,
    amount=50000,
    transaction_parameter="order_123"
)
print(payment_response)
```

### Invoyslar

Siz invoyslarni `ClickGateway` nusxasining `invoices` (yoki `receipts` taxallusi) xususiyati yordamida boshqarishingiz mumkin.

```python
# 1. Invoys yaratish
invoice_response = click.invoices.create(
    id="order_123",
    amount=150000,
    phone="998901234567",
    description="Buyurtma uchun to'lov #123"
)
print(invoice_response)

# 2. Invoys holatini tekshirish
status_response = click.invoices.check(invoice_id="invoice_id")
print(status_response)

# 3. Invoysni bekor qilish
cancel_response = click.invoices.cancel(
    invoice_id="invoice_id",
    reason="Buyurtma bekor qilindi"
)
print(cancel_response)
```
