Интеграция с Django
Полное руководство по интеграции PayTechUZ с приложениями Django.
Установка
Установите PayTechUZ с поддержкой Django:
pip install paytechuz[django]
Настройки Django
Добавьте конфигурацию PayTechUZ в настройки Django:
# settings.py
INSTALLED_APPS = [
# ...
'paytechuz.integrations.django',
]
PAYTECHUZ = {
'PAYME': {
'PAYME_ID': 'your_payme_id',
'PAYME_KEY': 'your_payme_key',
'IS_TEST_MODE': True, # Установите False в продакшене
},
'CLICK': {
'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, # Установите False в продакшене
}
}
Создайте модели для обработки заказов и платежей:
# models.py
from django.db import models
from django.utils import timezone
class Order(models.Model):
STATUS_CHOICES = (
('pending', 'Ожидает'),
('paid', 'Оплачен'),
('cancelled', 'Отменён'),
('delivered', 'Доставлен'),
)
product_name = models.CharField(max_length=255)
amount = models.DecimalField(max_digits=12, decimal_places=2)
status = models.CharField(max_length=20, choices=STATUS_CHOICES, default='pending')
created_at = models.DateTimeField(default=timezone.now)
def __str__(self):
return f"{self.id} - {self.product_name} ({self.amount})"
Представления
Создайте представления для обработки платежей:
# views.py
from paytechuz.integrations.django.views import BasePaymeWebhookView, BaseClickWebhookView
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()
class ClickWebhookView(BaseClickWebhookView):
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()
URL-адреса
Настройте URL-шаблоны:
# urls.py
from django.urls import path
from django.views.decorators.csrf import csrf_exempt
from .views import PaymeWebhookView, ClickWebhookView
urlpatterns = [
# ...
path('payments/webhook/payme/', csrf_exempt(PaymeWebhookView.as_view()), name='payme_webhook'),
path('payments/webhook/click/', csrf_exempt(ClickWebhookView.as_view()), name='click_webhook'),
]
Создание ссылки для оплаты
from paytechuz.gateways.payme import PaymeGateway
from paytechuz.gateways.click import ClickGateway
# Получение заказа
order = Order.objects.get(id=1)
# Создание ссылки для оплаты Payme
payme = PaymeGateway(
payme_id='your_payme_id',
payme_key='your_payme_key',
is_test_mode=True # Установите False в продакшене
)
payme_link = payme.create_payment(
id=order.id,
amount=order.amount,
return_url="https://example.com/return"
)
# Создание ссылки для оплаты Click
click = ClickGateway(
service_id='your_click_service_id',
merchant_id='your_click_merchant_id',
merchant_user_id='your_click_merchant_user_id',
secret_key='your_click_secret_key',
is_test_mode=True # Установите False в продакшене
)
click_link = click.create_payment(
id=order.id,
amount=order.amount,
return_url="https://example.com/return",
)