Construye un procesador de pagos en Python con Stripe aplicando principios SOLID y patrones de diseño desde un código base que concentra demasiadas responsabilidades. Aquí se explica el flujo inicial: validaciones, configuración de Stripe con variable de entorno, creación del cargo, manejo de errores con try/except, notificaciones por email o teléfono mediante mock, y registro en archivo transactions.log.
¿Cómo funciona el código inicial del procesador de pagos?
El punto de partida es una sola clase con un único método: process_transaction. Recibe dos parámetros: customer data y payment data. Primero realiza tres validaciones: nombre del consumidor, información de contacto y fuente de pago. Luego configura Stripe leyendo la API key desde variables de entorno, crea el cargo con monto, moneda por defecto en dólares, source y descripción, maneja errores con try/except, envía notificaciones por email o teléfono con una pasarela simulada y, finalmente, agrega una línea al archivo transactions.log con quién pagó, por cuánto y el estatus del cobro.
Validaciones: nombre, contacto y source de pago presentes.
Configuración de Stripe: lectura de la API key desde entorno.
Cargo: monto en centavos, moneda por defecto en dólares, source y descripción.
Errores: try/except para detectar fallos del pago.
Notificaciones: por email (servidor de SNTP comentado) o por teléfono con mock.
Log: se hace append en transactions.log con pagador, monto y estatus final.
Ejemplo de la estructura en Python:
classPaymentProcessor:defprocess_transaction(self, customer_data, payment_data):# 1) Validaciones de nombre, contacto y source.# 2) Configurar Stripe con la API key de entorno.# 3) Crear cargo: amount (centavos), currency (usd), source, description.# 4) Manejar errores con try/except.# 5) Notificar por email o teléfono (mock si no hay integración real).# 6) Registrar en transactions.log (append con pagador, monto, estatus).pass
¿Qué flujos de pago y notificación se demuestran con stripe?
Se presentan dos escenarios completos usando la pasarela de Stripe y datos de prueba.
Caso 1: pago de 100 centavos (1 dólar) con cliente que tiene email. Se imprime en consola de debugging que el pago fue exitoso y se “envía” un email de confirmación. En transactions.log queda: “John Doe pagó cien” con estatus “succeeded”.
Caso 2: pago de 500 centavos (5 dólares) con cliente que tiene teléfono y token de Mastercard. No se usa email, sino mock de SMS con el mensaje “Gracias por el pago”. En transactions.log se agrega: “Platzi Python pagó quinientos centavos” con estatus exitoso. En el panel de Stripe se ve la última transacción por 5 dólares con Mastercard.
Detalles clave del uso de Stripe mencionados:
Los montos se envían en centavos de dólar.
El source puede ser un token (por ejemplo, Visa o Mastercard) o un número de tarjeta de prueba.
La API key se lee desde variables de entorno y se asigna a stripe.api_key.
Ejemplo de configuración de entorno y API key:
from dotenv import load_dotenv
import os, stripe
load_dotenv()# Lee el archivo .env del paquete.stripe.api_key = os.getenv("STRIPE_API_KEY")
Ejemplo de notificación simulada:
contact = customer_data.get("contact_info",{})if"email"in contact:print("Email enviado: gracias por su pago.")elif"phone"in contact:print("SMS enviado: gracias por el pago.")else:print("No hay información para poder notificar.")
¿Qué habilidades y conceptos clave se practican con principios solid?
El enfoque es refactorizar un procesamiento “todo en uno” hacia un diseño mantenible aplicando principios SOLID y patrones de diseño. Se trabajan prácticas esenciales de ingeniería de software y de integración con pasarelas de pago.
Validación de datos: verificar nombre, contacto y source antes de cobrar.
Variables de entorno: centralizar secretos como la API key de Stripe usando dotenv y load_dotenv.
Manejo de errores: capturar fallos con try/except y reaccionar adecuadamente.
Servicios externos con mock: simular email (servidor de SNTP comentado) y SMS cuando no hay implementación real.
Registro de transacciones: persistir en transactions.log para auditoría simple.
Depuración: uso de break point y ejecución paso a paso para verificar el flujo.
Stripe tokens: cambiar de Visa a Mastercard según el caso y confirmar el resultado en el panel de Stripe.
Si te quedó alguna duda sobre la cuenta de desarrollador de Stripe o el uso de tokens de prueba, deja tus preguntas en los comentarios y comparte tu avance.