Inicio > Desarrollo Web > Tutoriales de Laravel > Cómo integrar Paypal en Laravel 11

Cómo integrar Paypal en Laravel 11

Diego Cortés
Diego Cortés
October 11, 2024
Cómo integrar Paypal en Laravel 11

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.

¿Por qué elegir PayPal?

PayPal es una de las plataformas de pago más populares en el mundo. Su uso tiene diversas ventajas:

  • Confiabilidad: PayPal es ampliamente utilizado y confiado por millones de usuarios.
  • Seguridad: Proporciona robustas medidas de seguridad para proteger a los clientes y a los comerciantes.
  • Facilidad de uso: Los usuarios pueden realizar pagos con facilidad, lo que puede aumentar tus tasas de conversión.

Requisitos previos

Antes de comenzar, asegúrate de tener lo siguiente:

  • PHP: Laravel 11 requiere PHP 8.1 o superior.
  • Composer: Para manejar dependencias.
  • Cuenta de PayPal: Necesitas una cuenta de PayPal Business para obtener tus credenciales.
  • Laravel 11: Tener un proyecto de Laravel 11 instalado.

Paso 1: Crear un proyecto de Laravel

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

Paso 2: Instalar la biblioteca de PayPal

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

Paso 3: Configurar las credenciales de PayPal

Para integrar PayPal, necesitas tus credenciales, que incluyen el Client ID y el Client Secret. Sigue estos pasos para obtener estas credenciales:

  1. Ve al Portal de desarrolladores de PayPal.
  2. Crea una nueva aplicación en el panel de control.
  3. Copia el Client ID y el Client Secret que se muestran.

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.

Paso 4: Configurar el servicio de PayPal

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

Paso 5: Crear un controlador de PayPal

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.';
    }
}

Paso 6: Configurar rutas

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

Paso 7: Ejecutar el pago

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

Paso 8: Probar la integración

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.

Conclusió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!

Diego Cortés
Diego Cortés
Full Stack Developer, SEO Specialist with Expertise in Laravel & Vue.js and 3D Generalist

Categorías

Page loaded in 42.25 ms