Procesador de Pagos con Principios SOLID y Stripe
Clase 3 de 27 • Curso de Patrones de Diseño y SOLID en Python
Contenido del curso
- 2

Principio de Responsabilidad Única en Desarrollo de Software
05:59 - 3

Procesador de Pagos con Principios SOLID y Stripe
11:14 - 4

Aplicación del Principio de Responsabilidad Única en Procesador de Pagos
25:30 - 5

Principio Abierto-Cerrado en Desarrollo de Software
02:39 - 6

Implementación del Principio Abierto-Cerrado en Procesadores de Pago y Notificadores
14:46 - 7

Principio de Sustitución de Liskov en Desarrollo de Software
03:18 - 8

Aplicación del Principio de Sustitución de Liskov en Python
06:44 - 9

Principio de Segregación de Interfaces en Software
02:33 - 10

Implementación del Principio de Segregación de Interfaces en Procesadores de Pago
09:06 - 11

Principio de Inversión de Dependencias en Software
04:23 - 12

Aplicación del Principio de Inversión de Dependencias en Python
05:56
- 14

Introducción a los Patrones de Diseño de Software
03:54 - 15

Patrón Strategy en Diseño de Software con Python
01:55 - 16

Implementación del Strategy Pattern en Procesador de Pagos en Python
10:58 - 17

Patrón Factory Pattern en Python: Creación de Objetos Dinámicos
03:05 - 18

Patrón Factory en Procesadores de Pago en Python
11:06 - 19

Patrón Decorador: Añadir Responsabilidades Dinámicas a Objetos
03:06 - 20

Aplicación del Patrón Decorador en Servicios de Pago
12:57 - 21

Patrón de Diseño Builder: Construcción de Objetos Complejos
01:28 - 22

Builder Pattern para Servicio de Pagos en Python
18:55 - 23

Patrón Observer: Gestión de Eventos y Notificaciones Automáticas
01:48 - 24

Patrón Observer en Sistemas de Pago: Implementación y Notificaciones
11:12 - 25

Patrón Chain of Responsibility en Validación de Pagos
02:04 - 26

Implementación del patrón Chain of Responsibility en validaciones de pago
16:27 - 27

Principios SOLID y Patrones de Diseño en Procesadores de Pago
03:19
Construir un procesador de pagos es un desafío común en la industria del desarrollo de software, y en este curso lo haremos aplicando los principios SOLID y patrones de diseño. El código inicial será básico y lo iremos refactorizando para ajustarlo a buenas prácticas a medida que avanzamos.
¿Cómo funciona el código inicial?
El código comienza con una clase simple que tiene un único método llamado processTransaction. Este método recibe dos parámetros: customerData y paymentData. Dentro de este método, se llevan a cabo tres validaciones básicas:
- Verificación de que el cliente tiene nombre.
- Verificación de que tiene información de contacto.
- Comprobación de que tiene una fuente de pago válida.
¿Cómo se realiza el procesamiento del pago?
El procesamiento del pago se gestiona a través de la integración con Stripe. Utilizamos la clave API de Stripe, que se almacena en las variables de entorno, y creamos un cargo basado en la cantidad y los datos proporcionados. El método maneja cualquier error con un bloque try-except, enviando una notificación si el pago falla.
¿Cómo se notifican los resultados?
El código incluye mecanismos para notificar al cliente por correo electrónico o mensaje de texto. Sin embargo, dado que no hay un servidor SMTP configurado, se usan ejemplos comentados para ilustrar cómo sería el envío de correos. En el caso de mensajes de texto, se utiliza un mock que simula una pasarela de envío de SMS.
¿Cómo se registra la información de la transacción?
Finalmente, el método guarda los detalles de la transacción en un archivo transactions.log. Este archivo contiene información como el nombre del cliente, el monto cobrado y el estado final del pago. Estos registros son útiles para futuras consultas y auditorías.
¿Qué modificaciones se pueden hacer al procesador?
El código es flexible, y podemos modificar la información del cliente y del pago para probar diferentes escenarios. Por ejemplo, podemos cambiar el nombre del cliente, la cantidad a cobrar y el método de pago, incluyendo el uso de tokens de tarjetas en lugar de números de tarjeta. Stripe proporciona varios tokens y números de prueba que pueden ser utilizados para simular transacciones en diferentes condiciones.
¿Qué papel juegan las variables de entorno?
Una parte esencial del código es la configuración de las variables de entorno, que se manejan mediante el módulo .env de Python. Este módulo carga la clave API de Stripe desde el archivo .env, lo que asegura que la clave esté protegida y accesible solo durante la ejecución del programa.