Payme Integratsiyasi
Payme O'zbekistondagi eng mashhur to'lov tizimlaridan biri. Bu qo'llanma Payme ni PayTechUZ bilan qanday integratsiya qilishni ko'rsatadi.
O'rnatish
pip install paytechuz
Asosiy foydalanish
Shlyuz yaratish
import os
from paytechuz.gateways.payme import PaymeGateway
gateway = PaymeGateway(
payme_id="your_payme_id",
payme_key="your_payme_key",
is_test_mode=True, # True test uchun, False production uchun
)
To'lov yaratish
payment = gateway.create_payment(
id="12345", # Hisob-faktura ID
amount=50000, # 500.00 UZS (tiyinda)
return_url="https://example.com/return"
)
print(f"Payment URL: {payment}")
# Foydalanuvchini to'lov URL ga yo'naltiring
To'lov holatini tekshirish
status = gateway.check_payment("transaction_id")
print(f"Status: {status['status']}")
Webhook
from paytechuz.gateways.payme.webhook import PaymeWebhookHandler
webhook_handler = PaymeWebhookHandler(
payme_id="your_payme_id",
payme_key="your_payme_key"
)
def process_webhook(request_data):
response = webhook_handler.handle_webhook(request_data)
if response['result']:
# To'lov muvaffaqiyatli
print("To'lov muvaffaqiyatli!")
return response
Django Integratsiyasi
Settings.py
INSTALLED_APPS = [
# ...
'paytechuz.integrations.django',
]
PAYTECHUZ = {
'PAYME': {
'PAYME_ID': 'your_payme_id',
'PAYME_KEY': 'your_payme_key',
'ACCOUNT_MODEL': 'shop.models.Order',
'ACCOUNT_FIELD': 'id',
'AMOUNT_FIELD': 'amount',
'IS_TEST_MODE': True,
}
}
Views.py
from paytechuz.integrations.django.views import BasePaymeWebhookView
from .models import Order
class PaymeWebhookView(BasePaymeWebhookView):
def successfully_payment(self, params, transaction):
order = Order.objects.get(id=transaction.account_id)
order.status = 'paid'
order.save()
def cancelled_payment(self, params, transaction):
order = Order.objects.get(id=transaction.account_id)
order.status = 'cancelled'
order.save()
URLs.py
from django.urls import path
from .views import PaymeWebhookView
urlpatterns = [
path('webhooks/payme/', PaymeWebhookView.as_view(), name='payme_webhook'),
]
FastAPI Integratsiyasi
from fastapi import FastAPI, Request
from paytechuz.gateways.payme import PaymeGateway
from paytechuz.integrations.fastapi import PaymeWebhookHandler
import os
app = FastAPI()
# Shlyuz yaratish
payme = PaymeGateway(
payme_id=os.getenv('PAYME_ID'),
payme_key=os.getenv('PAYME_KEY'),
is_test_mode=True
)
@app.post("/payment/create")
async def create_payment():
payment_url = payme.create_payment(
id="12345",
amount=50000,
return_url="https://example.com/return"
)
return {"payment_url": payment_url}
@app.post("/webhooks/payme")
async def webhook(request: Request):
handler = PaymeWebhookHandler(
payme_id=os.getenv('PAYME_ID'),
payme_key=os.getenv('PAYME_KEY'),
account_model=Order,
account_field='id',
amount_field='amount'
)
return await handler.handle_webhook(request)
Konfiguratsiya
Test rejimi
Test uchun quyidagi ma'lumotlardan foydalaning:
- Payme ID:
test_payme_id - Payme Key:
test_payme_key - Test karta:
8600 0691 9540 6311
Production rejimi
- Payme Business da ro'yxatdan o'ting
- Production ma'lumotlaringizni oling
is_test_mode=Falseqilib o'rnating
Xatolarni qayta ishlash
from paytechuz.exceptions import PaymeException
try:
payment = gateway.create_payment(
id="12345",
amount=50000,
return_url="https://example.com/return"
)
except PaymeException as e:
print(f"Payme xatosi: {e}")