Volver a la página principal
lunes 14 octubre 2024
3

Cómo implementar PayPal en Laravel

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.

Instalación del SDK de PayPal en Laravel

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

Configuración del servicio PayPal

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'
    ],
];

Procesar pagos con PayPal

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());
}

Confirmación del pago

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ó');
    }
}

Algunos ejemplos

2. Instalación de paquetes Laravel para PayPal

3. Creación de rutas para iniciar y confirmar pagos

Referencia oficial

Para más información, puedes consultar la documentación oficial de PayPal para desarrolladores.

Etiquetas:
laravel php
Compartir:
Creado por:
Author photo

Jorge García

Fullstack developer