Integrar PayPal en tu aplicación web desarrollada con Laravel 11 puede parecer un desafío, pero con los pasos adecuados, puedes hacerlo sin problemas. Este artículo te guiará a través de todo el proceso, desde la configuración inicial hasta la implementación completa.
PayPal es una de las plataformas de pago más populares en el mundo. Su uso tiene diversas ventajas:
Antes de comenzar, asegúrate de tener lo siguiente:
Si aún no has creado tu proyecto de Laravel, puedes hacerlo utilizando Composer. Ejecuta el siguiente comando en tu terminal:
composer create-project --prefer-dist laravel/laravel nombre-del-proyecto
Para integrar PayPal, se recomienda usar la biblioteca de PayPal REST SDK. Puedes instalarla con el siguiente comando:
composer require paypal/rest-api-sdk-php
Para integrar PayPal, necesitas tus credenciales, que incluyen el Client ID y el Client Secret. Sigue estos pasos para obtener estas credenciales:
A continuación, agrega estas credenciales a tu archivo .env:
PAYPAL_CLIENT_ID=tu_client_id PAYPAL_CLIENT_SECRET=tu_client_secret PAYPAL_MODE=sandbox
Nota: Cambia sandbox por live cuando estés listo para producción.
Crea un nuevo archivo de configuración para PayPal. En config, crea un nuevo archivo llamado paypal.php y añade el siguiente código:
<?php return [ 'client_id' => env('PAYPAL_CLIENT_ID'), 'client_secret' => env('PAYPAL_CLIENT_SECRET'), 'settings' => [ 'mode' => env('PAYPAL_MODE', 'sandbox'), 'http.ConnectionTimeOut' => 30, 'log.LogEnabled' => true, 'log.FileName' => storage_path('logs/paypal.log'), 'log.LogLevel' => 'DEBUG', // PLEASE USE `INFO` LEVEL FOR LOGGING IN LIVE ENVIRONMENTS ], ];
Ahora vamos a crear un controlador para manejar los pagos. Usa el siguiente comando para crear un controlador:
php artisan make:controller PayPalController
Abre el archivo PayPalController.php y agrega el siguiente código:
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use PayPal\Api\Payment; use PayPal\Api\PaymentExecution; class PayPalController extends Controller { public function createPayment(Request $request) { $apiContext = new \PayPal\Rest\ApiContext( new \PayPal\Auth\OAuthTokenCredential( config('paypal.client_id'), config('paypal.client_secret') ) ); $payer = new \PayPal\Api\Payer(); $payer->setPaymentMethod('paypal'); // Configura los detalles del pago $amount = new \PayPal\Api\Amount(); $amount->setTotal(100); // Cambia el total según tu lógica $amount->setCurrency('USD'); $transaction = new \PayPal\Api\Transaction(); $transaction->setAmount($amount); $transaction->setDescription('Descripción del pago'); $redirectUrls = new \PayPal\Api\RedirectUrls(); $redirectUrls->setReturnUrl(route('paypal.success')) ->setCancelUrl(route('paypal.cancel')); $payment = new Payment(); $payment->setIntent('sale') ->setPayer($payer) ->setTransactions([$transaction]) ->setRedirectUrls($redirectUrls); try { $payment->create($apiContext); return redirect($payment->getApprovalLink()); } catch (\Exception $ex) { // Manejo de errores return back()->with('error', 'Error al crear el pago: ' . $ex->getMessage()); } } public function executePayment(Request $request) { // Implementación de la ejecución del pago } public function cancelPayment() { // Manejo de cancelación return 'El pago ha sido cancelado.'; } }
Ahora deberás definir las rutas para tu sistema de pagos en routes/web.php:
use App\Http\Controllers\PayPalController; Route::get('/paypal/create', [PayPalController::class, 'createPayment'])->name('paypal.create'); Route::get('/paypal/success', [PayPalController::class, 'executePayment'])->name('paypal.success'); Route::get('/paypal/cancel', [PayPalController::class, 'cancelPayment'])->name('paypal.cancel');
En el método executePayment, implementa la lógica para ejecutar el pago:
public function executePayment(Request $request) { $apiContext = new \PayPal\Rest\ApiContext( new \PayPal\Auth\OAuthTokenCredential( config('paypal.client_id'), config('paypal.client_secret') ) ); $paymentId = $request->input('paymentId'); $payerId = $request->input('PayerID'); $payment = Payment::get($paymentId, $apiContext); $execution = new PaymentExecution(); $execution->setPayerId($payerId); try { $result = $payment->execute($execution, $apiContext); return 'Pago realizado con éxito.'; } catch (\Exception $ex) { return back()->with('error', 'Error al ejecutar el pago: ' . $ex->getMessage()); } }
Antes de lanzar tu aplicación, asegúrate de realizar pruebas exhaustivas. Utiliza el entorno de sandbox de PayPal para hacer transacciones de prueba antes de ir a producción.
Integrar PayPal en Laravel 11 puede ser una tarea sencilla si sigues los pasos descritos en este artículo. Asegúrate de manejar adecuadamente tanto la creación como la ejecución de pagos para asegurar una buena experiencia de usuario.
Con estos pasos, estarás listo para procesar pagos en tu aplicación Laravel con PayPal de manera efectiva. ¡Buena suerte con tu implementación!
Page loaded in 28.25 ms