Visión general
Laravel Cashier (Stripe) es el paquete oficial para gestionar las funciones de facturación de Stripe desde Laravel. Puedes implementar con una API unificada la creación, consulta de estado y cancelación de suscripciones, los pagos únicos, la descarga de facturas y el procesamiento de webhooks.Instalación y configuración
Primero, instala Cashier y crea las tablas necesarias.Billable al modelo facturable, como App\Models\User.
.env.
Gestión de clientes
Cuando no puedes asegurar si el cliente de Stripe ya existe, usacreateOrGetStripeCustomer().
createAsStripeCustomer().
Suscripciones
Nueva creación
Comienza una suscripción connewSubscription() y create().
En $paymentMethodId pasa el Payment Method ID obtenido con Stripe.js o similar.
price_monthly es un ejemplo. Al implementarlo indica el Price ID real que hayas creado en el dashboard de Stripe.
Comprobación de estado
Consubscribed() puedes comprobar si la suscripción está activa.
Cancelación y reanudación
Pago único (Charge)
Concharge() puedes cobrar una única vez. Pasa el importe en la unidad mínima de la moneda (por ejemplo, en USD 100 es $1.00).
Aquí también en $paymentMethodId se usa el Payment Method ID creado en Stripe.
charge() lanza una excepción.
Payment Element
Con el Payment Element de Stripe puedes manejar de forma unificada varios métodos de pago: tarjeta, Apple Pay, Google Pay, iDEAL, etc.Uso en suscripciones
Crea un Setup Intent y pásaselo a la vista.client_secret del Setup Intent.
setup_intent. Úsalo para obtener el Payment Method ID y crear la suscripción.
Uso en pago único
Para un pago único crea un Payment Intent conpay(). El modelo Order debe tener las columnas user_id, amount, status y stripe_payment_intent_id.
payment_intent, comprueba que el Payment Intent pertenece al usuario autenticado y está en estado succeeded, y confirma el pedido.
Facturas
Obtén la lista de facturas coninvoices().
dompdf/dompdf y usa downloadInvoice(). En $invoiceId pasa el ID de una factura obtenido con invoices().
Configuración de webhooks
Cashier registra automáticamente la ruta del webhook de Stripe, que por defecto usa/stripe/webhook. Configura esta URL en el dashboard de Stripe.
Puedes crear el webhook con cashier:webhook.
stripe/* de la protección CSRF.
STRIPE_WEBHOOK_SECRET en .env, el middleware de verificación de firmas de Cashier validará las solicitudes de webhook.