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', '[email protected]');
Route::get('/paypal/status', '[email protected]');

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

Cursos recomendados

Curso de Laravel desde Cero

Aprende Laravel

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

Ingresar al curso
Curso de Laravel y OAuth 2 (Login con redes sociales)

Laravel y OAuth2

Veamos cómo implementar un login mediante redes sociales! Aprende y aplica esto sobre cualquier proyecto Laravel.

Ingresar al curso
Curso de Laravel, Vue.js y Pusher

Aprende Vue.js

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

Ingresar al curso
Logo de Programación y más

¿Tienes alguna duda?

Si algo no te quedó claro o tienes alguna sugerencia, escribe un comentario aquí debajo.

Además recuerda compartir el post si te resultó de ayuda! 🙂

Cargando comentarios ...

Antes que te vayas

Inscríbete en nuestro curso gratuito de Laravel