Laravel: Cómo integrar pagos con PayPal

Veamos brevemente cómo integrar PayPal en un proyecto Laravel.

Introducción

Esta guía muestra cómo integrar pagos con PayPal sobre un proyecto Laravel de propósito general.

Siguiendo la misma idea, podrás empezar a usar PayPal sobre proyectos de distintos tipos.

Tales como:

Paso 1:

Añadir el PHP SDK de PayPal a nuestro proyecto Laravel:

composer require paypal/rest-api-sdk-php

Paso 2: Obtener credenciales

Lo primero que debes hacer es obtener tus credenciales para usar la API de PayPal.

Eso lo puedes hacer desde la página para desarrolladores de PayPal.

Tras entrar a la página e iniciar sesión, debes:

  • Crear cuentas de prueba (Sandbox Accounts)
  • Crear una aplicación en modo Sandbox
  • Obtener tu Client ID y clave Secret

Paso 3: Definir tus rutas y controladores

Como mínimo vamos a necesitar 2 rutas: una para iniciar el proceso de pago, y la otra para confirmar y ejecutar el pago.

Respectivamente, las puedes definir del siguiente modo:

Route::get('/paypal/pay', 'PaymentController@payWithPayPal');
Route::get('/paypal/status', 'PaymentController@payPalStatus');

Puedes crear el controlador usando:

php artisan make:controler PaymentController

Y luego definir su contenido del siguiente modo:

class PaymentController extends Controller
{
    private $apiContext;

    public function __construct()
    {
        $payPalConfig = Config::get('paypal');

        $this->apiContext = new ApiContext(
            new OAuthTokenCredential(
                $payPalConfig['client_id'],
                $payPalConfig['secret']
            )
        );

        $this->apiContext->setConfig($payPalConfig['settings']);
    }

    // ...

    public function payWithPayPal()
    {
        $payer = new Payer();
        $payer->setPaymentMethod('paypal');

        $amount = new Amount();
        $amount->setTotal('3.99');
        $amount->setCurrency('USD');

        $transaction = new Transaction();
        $transaction->setAmount($amount);
        // $transaction->setDescription('See your IQ results');

        $callbackUrl = url('/paypal/status');

        $redirectUrls = new RedirectUrls();
        $redirectUrls->setReturnUrl($callbackUrl)
            ->setCancelUrl($callbackUrl);

        $payment = new Payment();
        $payment->setIntent('sale')
            ->setPayer($payer)
            ->setTransactions(array($transaction))
            ->setRedirectUrls($redirectUrls);

        try {
            $payment->create($this->apiContext);
            return redirect()->away($payment->getApprovalLink());
        } catch (PayPalConnectionException $ex) {
            echo $ex->getData();
        }
    }

    public function payPalStatus(Request $request)
    {
        $paymentId = $request->input('paymentId');
        $payerId = $request->input('PayerID');
        $token = $request->input('token');

        if (!$paymentId || !$payerId || !$token) {
            $status = 'Lo sentimos! El pago a través de PayPal no se pudo realizar.';
            return redirect('/paypal/failed')->with(compact('status'));
        }

        $payment = Payment::get($paymentId, $this->apiContext);

        $execution = new PaymentExecution();
        $execution->setPayerId($payerId);

        /** Execute the payment **/
        $result = $payment->execute($execution, $this->apiContext);

        if ($result->getState() === 'approved') {
            $status = 'Gracias! El pago a través de PayPal se ha ralizado correctamente.';
            return redirect('/results')->with(compact('status'));
        }

        $status = 'Lo sentimos! El pago a través de PayPal no se pudo realizar.';
        return redirect('/results')->with(compact('status'));
    }
}

Paso 4: Verificar que el pago funciona

Para esto puedes iniciar sesión en PayPal (modo Sandbox) con tus cuentas de prueba, y verificar que el balance se haya actualizado correctamente, tanto para el cliente como para el negocio que recibe los pagos.

¿Buscas una explicación más detallada?

De ser así, te invito a ver el siguiente video:

# php # laravel

Logo de Programación y más

Comparte este post si te fue de ayuda 🙂.

Regístrate

Accede a todos los cursos, y resuelve todas tus dudas.

Cursos Recomendados

Imagen para el curso Aprende Laravel

Aprende Laravel

Aprende Laravel desde cero y desarrolla aplicaciones web reales, en tiempo récord, de la mano de Laravel.

Iniciar curso
Imagen para el curso Laravel Upgrade

Laravel Upgrade

Actualiza tus proyectos desde cualquier versión hasta la última versión estable de Laravel.

Iniciar curso
Imagen para el curso Laravel y Vue

Laravel y Vue

Desarrollemos un Messenger! Aprende sobre Channels, Queues, Vuex, JWT, Sesiones, BootstrapVue y mucho más.

Iniciar curso

Espera un momento ...

¿Te gustaría llevar mi curso de Laravel, gratis?

Sólo debes ingresar tus datos: