Laravel Cashier: facturación por suscripción para Laravel
Laravel Cashier proporciona una interfaz fluida y expresiva para manejar facturación de suscripciones (Stripe, Paddle y otras integraciones), reduciendo el trabajo repetitivo al implementar pagos recurrentes.
¿Qué es Laravel Cashier?
Laravel Cashier es un conjunto de paquetes oficiales y de la comunidad que facilitan la integración de sistemas de facturación por suscripción en aplicaciones Laravel. Cashier encapsula la mayor parte del trabajo repetitivo necesario para crear, modificar y cancelar suscripciones, manejar cupones, generar facturas y más.
Características principales
- Gestión de suscripciones: crear, actualizar, cancelar y pausar suscripciones.
- Cobros recurrentes y pruebas de tarjeta: maneja tokens, métodos de pago y cobros periódicos.
- Cupones y cambios de plan: soporta descuentos, swapping de planes y cantidades de suscripción.
- Facturas: generación de facturas (PDF) e historial de cobros para el cliente.
- Integraciones: existen variantes oficiales para Stripe y Paddle, y paquetes de la comunidad para otros proveedores.
Instalación rápida (ejemplo con Stripe)
En términos generales, para instalar Cashier (Stripe) en una app Laravel moderna:
# desde la raíz del proyecto
composer require laravel/cashier
# publicar migraciones/configuración (según versión)
php artisan vendor:publish --tag="cashier-migrations"
php artisan migrate
# en .env
STRIPE_KEY=pk_live_xxx
STRIPE_SECRET=sk_live_xxx
Ejemplo básico (crear suscripción)
Un ejemplo simplificado de cómo podría verse la creación de una suscripción en un controller:
public function subscribe(Request $request)
{
$user = $request->user();
// usar un método preparado por Cashier para crear la suscripción
$user->newSubscription('default', 'price_abc123')->create($request->paymentMethod);
return redirect()->route('dashboard')->with('success', 'Suscripción activada');
}
Ventajas y desventajas
Ventajas
- Reduce mucho boilerplate al integrar pagos recurrentes y suscripciones.
- Mantiene coherencia con las convenciones de Laravel (Eloquent, facades, etc.).
- Ofrece soporte oficial y ejemplos comunitarios para casos comunes.
Desventajas / Consideraciones
- Aprender la API de Stripe/Paddle y los flujos (tokens, webhooks) tiene curva de aprendizaje.
- Dependes parcialmente del proveedor de pagos para ciertas operaciones y disponibilidad.
- Cuidado con versiones: asegúrate de usar la versión de Cashier compatible con tu versión de Laravel.
Recursos útiles
- Documentación oficial — Cashier (Stripe): ver la guía de billing en la documentación de Laravel.
- Documentación oficial — Cashier (Paddle): para proyectos que prefieran Paddle.
- Repositorio GitHub de laravel/cashier (código fuente, issues y contribuciones).
- Ejemplos y tutoriales comunitarios (repositorios y cursos prácticos).