Tienda Online con Stripe, Filament 3 y Carrito de Compras
Este proyecto incluye una tienda en línea desarrollada con Laravel Framework. Además, incluye una administración completa con Filament 3 para gestionar usuarios, productos, pedidos y líneas de pedido.
Cursos recomendados para entender este proyecto
Curso de Laravel 11: En este curso desarrollamos una pequeña tienda sin pagos, aquí la utilizamos, pero le añadimos el sistema de pagos con Stripe.
WSL 2 en Windows con Laravel Sail: Si te encuentras trabajando en Windows y no sabes nada acerca de Laravel Sail, no te lo puedes perder.
Ruta de Filament 3: Todo lo desarrollado en este proyecto sale de esa ruta, no tiene desperdicio.
Laravel Cashier: En este curso aprenderás a configurar de forma completa tu cuenta de Stripe, el portal, los Webhooks, y todo lo que necesites relacionado con el proceso de pagos.
Formas de utilizar este proyecto
Como estudio, si te interesa aprender a desarrollar una tienda online, aquí tienes un ejemplo completo para que puedas ver como llevar a cabo este desarrollo.
Como punto de partida, si te gusta la idea, y quieres llevarla al siguiente nivel, tienes un punto de partida perfecto. Si en este punto necesitas mis servicios, puedes contactar conmigo a través del formulario de contacto y decirme qué necesitas.
Funcionalidades del Panel de Administración
Gestión de Usuarios: Crea y administra usuarios desde el panel de administración. Se enviará automáticamente un correo electrónico de bienvenida a los usuarios recién creados.
Integración con Stripe: Los usuarios creados se registrarán automáticamente en Stripe para futuras transacciones, lo que facilita el procesamiento de pagos de forma segura.
Gestión de Productos: Sube imágenes, define precios y otros detalles para tus productos. Mantén tu catálogo siempre actualizado y atractivo para tus clientes.
Gestión de Pedidos: Realiza un seguimiento de los pedidos y las líneas de pedidos de manera eficiente desde el panel de administración.
Funcionalidades de la tienda
Portal de Stripe: Conecta a tus clientes con Stripe a través de su portal, si tienes dudas, revisa este curso, cubrimos ese proceso de forma completa. El proyecto aplica la configuración para añadir métodos de pago en formato tarjeta, si deseas añadir métodos adicionales como PayPal a través de Stripe, deberás ajustar los Webhooks y la base de datos.
Carrito de compras: Hacemos uso del carrito de compras desarrollado en el curso de Laravel 11, pero con algunas modificaciones y mejoras.
Notificaciones por correo electrónico: Al añadir o eliminar un método de pago o al realizar un pedido, informamos al cliente del proceso realizado.
Webhooks: Integramos los Webhooks de Stripe de forma segura haciendo uso de la firma para realizar el proceso de pago de la mejor forma.
Dependencias utilizadas
Archivo .env
Crea el archivo .env a partir del archivo .env.example y ajusta tus variables de entorno.
Recuerda que el host de la conexión con MySQL es el servicio de docker-compose, así que las credenciales de base de datos deberían ser algo similar a lo siguiente:
DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=sail
DB_PASSWORD=password
Importante, para que el envío de correos funcione sin procesos en background, define lo siguiente:
QUEUE_CONNECTION=sync
En entornos de producción, ajusta la siguiente variable del .env para decir qué dominios utilizados en los correos electrónicos podrán acceder al panel admin, más información.
[email protected]
Cambia yourdomain.com por el dominio que deba tener acceso al panel.
Añade tus credenciales de Stripe para contectar tu tienda con Stripe:
STRIPE_KEY=
STRIPE_SECRET=
CASHIER_CURRENCY=eur
CASHIER_CURRENCY_LOCALE=es_ES
STRIPE_WEBHOOK_SECRET=
Lanzar proyecto con Sail
docker run --rm \
-u "$(id -u):$(id -g)" \
-v $(pwd):/var/www/html \
-w /var/www/html \
laravelsail/php83-composer:latest \
composer install --ignore-platform-reqs
sail build
sail up -d
sail artisan key:generate
sail artisan storage:link
sail artisan migrate:fresh --seed
sail npm install && sail npm run dev
Comparte tu entorno Laravel Sail con Stripe para que se pueda comunicar en tiempo de desarrollo:
sail share
Define tu Webhook con la URL que el comando sail share
te haya proporcionado, te recomiendo la URL sin HTTPS y con el puerto 8080:
sail artisan cashier:webhook --url="{url}/stripe/webhook"
Añade los siguientes eventos a tu Webhook para que Stripe se pueda comunicar correctamente con tu proyecto:
charge.succeeded
payment_method.attached
payment_method.detached
Ya puedes visitar el panel /admin y empezar a gestionar tu tienda.
¡Gracias por tu interés en nuestro proyecto! 😊