Integrar un sistema de pagos en tu aplicación web es fundamental para facilitar transacciones y mejorar la experiencia del usuario. En este artículo, aprenderás cómo integrar Stripe, una de las plataformas de pago más populares, en una aplicación desarrollada con Laravel 11. Este tutorial es útil tanto para desarrolladores principiantes como para los más experimentados que busquen optimizar la gestión de pagos en sus proyectos.
Stripe es una plataforma de pago en línea que permite a las empresas aceptar pagos, enviar pagos y gestionar su negocio en línea. Proporciona APIs y herramientas que hacen que la integración sea sencilla y rápida. Con soporte para múltiples monedas, métodos de pago y seguridad avanzada, es una elección popular entre los desarrolladores.
Antes de comenzar con la integración de Stripe en Laravel 11, asegúrate de tener lo siguiente:
Si aún no tienes una aplicación Laravel, sigue estos pasos:
composer create-project --prefer-dist laravel/laravel nombre-del-proyecto cd nombre-del-proyecto
Para integrar Stripe, primero debes instalar el SDK de Stripe. Ejecuta el siguiente comando en tu terminal dentro del directorio de tu proyecto:
composer require stripe/stripe-php
Una vez instalado el SDK, agrega tus claves de API en el archivo .env. Encuentra tus claves en el panel de control de Stripe.
STRIPE_KEY=tu_clave_publica STRIPE_SECRET=tu_clave_secreta
Además, asegúrate de configurar la clave de Stripe en config/services.php:
'stripe' => [ 'key' => env('STRIPE_KEY'), 'secret' => env('STRIPE_SECRET'), ],
Ahora que tienes todo configurado, crea un formulario en tu vista. Dirígete a resources/views y crea un archivo llamado payment.blade.php:
<!DOCTYPE html> <html lang="es"> <head> <meta charset="UTF-8"> <title>Pago con Stripe</title> <script src="https://js.stripe.com/v3/"></script> </head> <body> <form action="{{ route('charge') }}" method="POST" id="payment-form"> @csrf <div> <label for="card-element">Tarjeta de crédito o débito</label> <div id="card-element"></div> <div id="card-errors" role="alert"></div> </div> <button type="submit">Pagar</button> </form> <script> var stripe = Stripe('{{ config('services.stripe.key') }}'); var elements = stripe.elements(); var cardElement = elements.create('card'); cardElement.mount('#card-element'); var form = document.getElementById('payment-form'); form.addEventListener('submit', function(event) { event.preventDefault(); stripe.createToken(cardElement).then(function(result) { if (result.error) { // Muestra el error en el formulario document.getElementById('card-errors').textContent = result.error.message; } else { // Inserta el token en el formulario var hiddenInput = document.createElement('input'); hiddenInput.setAttribute('type', 'hidden'); hiddenInput.setAttribute('name', 'stripeToken'); hiddenInput.setAttribute('value', result.token.id); form.appendChild(hiddenInput); // Envia el formulario form.submit(); } }); }); </script> </body> </html>
Crea una ruta y un controlador para manejar la lógica del pago. Primero, añade la ruta en routes/web.php:
use App\Http\Controllers\PaymentController; Route::get('/payment', function () { return view('payment'); }); Route::post('/charge', [PaymentController::class, 'charge'])->name('charge');
Luego, genera el controlador con el siguiente comando:
php artisan make:controller PaymentController
Abre app/Http/Controllers/PaymentController.php y agrega el siguiente código:
namespace App\Http\Controllers; use Illuminate\Http\Request; use Stripe\Stripe; use Stripe\Charge; class PaymentController extends Controller { public function charge(Request $request) { Stripe::setApiKey(config('services.stripe.secret')); $charge = Charge::create([ 'amount' => 1000, // Monto en centavos: $10.00 'currency' => 'usd', 'description' => 'Pago de prueba', 'source' => $request->stripeToken, ]); // Maneja la respuesta exitosa return back()->with('success', 'Pago realizado con éxito!'); } }
Para manejar errores y mostrar mensajes de éxito, puedes agregar un bloque para mostrar mensajes en tu vista de pago. En payment.blade.php, añade lo siguiente justo antes del formulario:
@if(session('success')) <div>{{ session('success') }}</div> @endif @if(session('error')) <div>{{ session('error') }}</div> @endif
Esto te permitirá mostrar mensajes al usuario según si el pago fue exitoso o no.
Integrar Stripe en Laravel 11 es un proceso relativamente sencillo que puede expandir significativamente las capacidades de tu aplicación. Al seguir este tutorial, habrás implementado un sistema de pago seguro y confiable, permitiendo a tus usuarios realizar transacciones con facilidad.
Recuerda siempre probar tu integración en el entorno de pruebas de Stripe antes de ir a producción. Adicionalmente, considera implementar medidas de seguridad más avanzadas dependiendo de las necesidades de tu aplicación. Si bien este artículo cubrió lo básico, hay muchas más características de Stripe que puedes explorar y aprovechar.
Para más información, revisa la documentación oficial de Stripe y mantente al día con las actualizaciones de Laravel. ¡Feliz codificación!
Page loaded in 26.12 ms