Tesis 1.0.0
Loading...
Searching...
No Matches
models.py
Go to the documentation of this file.
1import uuid
2from django.db import models
3from django.utils import timezone
4
5class PaymentRequest(models.Model):
6 """
7 Modelo para almacenar las solicitudes de pago y seguimiento
8 """
9 id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
10 user_token = models.CharField(max_length=255, help_text="Token de autenticación del usuario")
11 preference_id = models.CharField(max_length=255, null=True, blank=True, help_text="ID de la preferencia en Mercado Pago")
12 init_point = models.URLField(null=True, blank=True, help_text="URL para redirigir al usuario para el pago")
13 status = models.CharField(max_length=50, default="pending", help_text="Estado del pago")
14 total_amount = models.DecimalField(max_digits=10, decimal_places=2, null=True, blank=True, help_text="Monto total del pago")
15 cart_data = models.JSONField(null=True, blank=True, help_text="Datos del carrito del usuario")
16 created_at = models.DateTimeField(default=timezone.now, help_text="Fecha de creación")
17 updated_at = models.DateTimeField(auto_now=True, help_text="Fecha de actualización")
18 order_confirmed = models.BooleanField(default=False, help_text="Indica si el pedido fue confirmado")
19
20 def __str__(self):
21 return f"Pago {self.id} - Estado: {self.status}"
22
23 class Meta:
24 verbose_name = "Solicitud de pago"
25 verbose_name_plural = "Solicitudes de pago"
26 ordering = ['-created_at']
27
28class PaymentNotification(models.Model):
29 """
30 Modelo para almacenar las notificaciones recibidas de Mercado Pago
31 """
32 id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
33 payment_request = models.ForeignKey(PaymentRequest, on_delete=models.CASCADE, null=True, blank=True, related_name="notifications")
34 payment_id = models.CharField(max_length=255, null=True, blank=True, help_text="ID del pago en Mercado Pago")
35 topic = models.CharField(max_length=50, help_text="Tipo de notificación")
36 raw_data = models.JSONField(help_text="Datos completos de la notificación")
37 processed = models.BooleanField(default=False, help_text="Indica si la notificación ya fue procesada")
38 created_at = models.DateTimeField(default=timezone.now, help_text="Fecha de recepción")
39
40 def __str__(self):
41 return f"Notificación {self.id} - Tema: {self.topic}"
42
43 class Meta:
44 verbose_name = "Notificación de pago"
45 verbose_name_plural = "Notificaciones de pago"
46 ordering = ['-created_at']