7 Modelo para almacenar las solicitudes de pago y seguimiento
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")
21 return f
"Pago {self.id} - Estado: {self.status}"
24 verbose_name =
"Solicitud de pago"
25 verbose_name_plural =
"Solicitudes de pago"
26 ordering = [
'-created_at']
30 Modelo para almacenar las notificaciones recibidas de Mercado Pago
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")
41 return f
"Notificación {self.id} - Tema: {self.topic}"
44 verbose_name =
"Notificación de pago"
45 verbose_name_plural =
"Notificaciones de pago"
46 ordering = [
'-created_at']