Integrar PayPal en una aplicación Laravel es una excelente manera de aceptar pagos en línea de manera sencilla y segura. A través de la API de PayPal, puedes manejar tanto pagos recurrentes como transacciones únicas, permitiendo una experiencia fluida para el usuario y el administrador del sistema.
Para comenzar con la integración de PayPal en Laravel, necesitas instalar el SDK de PayPal, que te permitirá conectarte y realizar transacciones de manera segura.
1. Instala el paquete PayPal/REST-API-SDK a través de Composer:
composer require paypal/rest-api-sdk-php
2. Configura las credenciales de PayPal en el archivo .env
de tu proyecto Laravel. Las credenciales se pueden obtener desde la consola de desarrolladores de PayPal:
PAYPAL_CLIENT_ID=tu_cliente_id
PAYPAL_SECRET=tu_secreto
PAYPAL_MODE=sandbox # o live para producción
Crea un archivo de configuración para PayPal en config/paypal.php
y define las credenciales necesarias:
return [
'client_id' => env('PAYPAL_CLIENT_ID'),
'secret' => env('PAYPAL_SECRET'),
'settings' => [
'mode' => env('PAYPAL_MODE', 'sandbox'),
'http.ConnectionTimeOut' => 30,
'log.LogEnabled' => true,
'log.FileName' => storage_path('/logs/paypal.log'),
'log.LogLevel' => 'ERROR'
],
];
Para procesar un pago con PayPal, necesitas crear un controlador que maneje la lógica del pago. Aquí un ejemplo básico de cómo iniciar un pago:
use PayPal\Api\Payer;
use PayPal\Api\Amount;
use PayPal\Api\Transaction;
use PayPal\Api\RedirectUrls;
use PayPal\Api\Payment;
public function createPayment()
{
$payer = new Payer();
$payer->setPaymentMethod('paypal');
$amount = new Amount();
$amount->setTotal('10.00');
$amount->setCurrency('USD');
$transaction = new Transaction();
$transaction->setAmount($amount);
$transaction->setDescription('Descripción del pago');
$redirectUrls = new RedirectUrls();
$redirectUrls->setReturnUrl(route('payment.success'))
->setCancelUrl(route('payment.cancel'));
$payment = new Payment();
$payment->setIntent('sale')
->setPayer($payer)
->setTransactions([$transaction])
->setRedirectUrls($redirectUrls);
try {
$payment->create($this->paypal);
} catch (Exception $e) {
return redirect()->back()->with('error', 'Ocurrió un error');
}
return redirect($payment->getApprovalLink());
}
Cuando el usuario completa el pago, PayPal redirige a la URL de retorno configurada. Aquí es donde puedes verificar el estado del pago:
use PayPal\Api\Payment;
use PayPal\Api\PaymentExecution;
public function executePayment(Request $request)
{
$paymentId = $request->paymentId;
$payment = Payment::get($paymentId, $this->paypal);
$execution = new PaymentExecution();
$execution->setPayerId($request->PayerID);
try {
$result = $payment->execute($execution, $this->paypal);
return redirect()->route('home')->with('success', 'Pago realizado correctamente');
} catch (Exception $e) {
return redirect()->route('home')->with('error', 'El pago falló');
}
}
2. Instalación de paquetes Laravel para PayPal
3. Creación de rutas para iniciar y confirmar pagos
Para más información, puedes consultar la documentación oficial de PayPal para desarrolladores.
Jorge García
Fullstack developer