Volver a la página principal
jueves 19 septiembre 2024
57

Cómo integrar pagos en línea con PayPal y Node.js

En la era digital, aceptar pagos en línea es una necesidad crucial para cualquier negocio o aplicación. PayPal es uno de los métodos de pago más populares y confiables del mundo. Si estás desarrollando una aplicación en Node.js, integrar PayPal te permitirá recibir pagos de manera sencilla y eficiente. En este artículo, aprenderás paso a paso cómo realizar esta integración utilizando la API de PayPal.

¿Por qué elegir PayPal?

Antes de entrar en los detalles técnicos, es importante entender por qué deberías considerar PayPal como tu plataforma de pagos. Algunas de las ventajas incluyen:

  • Confianza del cliente: PayPal es reconocido a nivel mundial y los clientes suelen confiar en esta plataforma para hacer pagos seguros.
  • Soporte global: Permite realizar transacciones en varias monedas y tiene soporte en más de 200 países.
  • Fácil integración: PayPal ofrece varias API que facilitan la integración en diferentes plataformas, incluyendo Node.js.
  • Seguridad avanzada: La plataforma cuenta con medidas de seguridad robustas, lo que reduce el riesgo de fraude.

Prerrequisitos

Para empezar, asegúrate de contar con lo siguiente:

1. Node.js instalado en tu máquina. Si no lo tienes, puedes descargarlo desde aquí.

2. Una cuenta de PayPal (si no tienes una, puedes crearla en PayPal.com).

3. Acceso a la API de PayPal para obtener tus credenciales. Puedes hacerlo a través de la Plataforma de Desarrolladores de PayPal.

Paso 1: Crear una aplicación en PayPal Developer

Lo primero que necesitamos es registrar una aplicación en el portal de desarrolladores de PayPal. Esto te permitirá obtener un Client ID y Client Secret, necesarios para realizar las solicitudes a la API.

2. Inicia sesión con tu cuenta de PayPal.

3. Dirígete a la pestaña My Apps & Credentials.

4. Crea una nueva aplicación seleccionando el entorno de pruebas (Sandbox).

5. Obtendrás un Client ID y Client Secret, los cuales usaremos más adelante.

Paso 2: Configuración del proyecto en Node.js

Ahora que tenemos las credenciales de PayPal, podemos comenzar con el proyecto en Node.js. Crea una carpeta para tu proyecto y ejecuta el siguiente comando en tu terminal para inicializar un nuevo proyecto:

npm init -y

Este comando generará un archivo package.json en tu proyecto. Luego, instala los módulos necesarios:

npm install express paypal-rest-sdk body-parser
  • express: Para manejar las rutas y las solicitudes HTTP.
  • paypal-rest-sdk: El SDK oficial de PayPal para interactuar con la API.
  • body-parser: Para analizar el cuerpo de las solicitudes HTTP.

Paso 3: Configuración de PayPal SDK

Crea un archivo llamado app.js y configura PayPal SDK con tus credenciales.

const express = require('express');
const paypal = require('paypal-rest-sdk');
const bodyParser = require('body-parser');

const app = express();
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));

paypal.configure({
    'mode': 'sandbox', // Modo sandbox para pruebas
    'client_id': 'TU_CLIENT_ID_AQUÍ',
    'client_secret': 'TU_CLIENT_SECRET_AQUÍ'
});

Asegúrate de reemplazar 'TU_CLIENT_ID_AQUÍ' y 'TU_CLIENT_SECRET_AQUÍ' con las credenciales obtenidas en el paso anterior.

Paso 4: Crear una ruta para el pago

Ahora vamos a crear una ruta en la que se inicie el proceso de pago. Esta ruta redirigirá al usuario a PayPal para completar el pago.

app.post('/pay', (req, res) => {
    const create_payment_json = {
        "intent": "sale",
        "payer": {
            "payment_method": "paypal"
        },
        "redirect_urls": {
            "return_url": "http://localhost:3000/success",
            "cancel_url": "http://localhost:3000/cancel"
        },
        "transactions": [{
            "item_list": {
                "items": [{
                    "name": "Artículo de prueba",
                    "sku": "001",
                    "price": "25.00",
                    "currency": "USD",
                    "quantity": 1
                }]
            },
            "amount": {
                "currency": "USD",
                "total": "25.00"
            },
            "description": "Pago por un artículo de prueba."
        }]
    };

    paypal.payment.create(create_payment_json, (error, payment) => {
        if (error) {
            throw error;
        } else {
            for(let i = 0; i < payment.links.length; i++) {
                if (payment.links[i].rel === 'approval_url') {
                    res.redirect(payment.links[i].href);
                }
            }
        }
    });
});

En este código, configuramos un objeto JSON que contiene los detalles de la transacción, como el método de pago, los artículos, y las URLs de redirección en caso de éxito o cancelación. Cuando el usuario accede a la ruta /pay, se genera un enlace que lo redirige a PayPal para completar el pago.

Paso 5: Crear rutas para el éxito y la cancelación del pago

Ahora, necesitamos manejar lo que ocurre después de que el usuario complete o cancele el pago en PayPal. Agregamos las rutas de éxito y cancelación:

app.get('/success', (req, res) => {
    const payerId = req.query.PayerID;
    const paymentId = req.query.paymentId;

    const execute_payment_json = {
        "payer_id": payerId,
        "transactions": [{
            "amount": {
                "currency": "USD",
                "total": "25.00"
            }
        }]
    };

    paypal.payment.execute(paymentId, execute_payment_json, (error, payment) => {
        if (error) {
            console.log(error.response);
            throw error;
        } else {
            console.log(JSON.stringify(payment));
            res.send('Pago realizado con éxito');
        }
    });
});

app.get('/cancel', (req, res) => res.send('Pago cancelado'));
  • Ruta /success: PayPal redirige aquí si el pago es exitoso. En esta ruta, obtenemos el PayerID y el paymentId de los parámetros de la URL, y luego ejecutamos el pago.
  • Ruta /cancel: Esta ruta se carga si el usuario cancela el proceso de pago.

Paso 6: Iniciar el servidor

Finalmente, hacemos que la aplicación escuche en un puerto (en este caso el puerto 3000):

app.listen(3000, () => console.log('Servidor iniciado en http://localhost:3000'));

Puedes iniciar tu aplicación ejecutando el comando:

node app.js

Ahora, cuando accedas a http://localhost:3000/pay, serás redirigido a PayPal para completar el pago.

Paso 7: Probar la integración

Para probar la integración, puedes usar cuentas de prueba de PayPal en el entorno sandbox. Esto te permitirá simular pagos sin usar dinero real. Puedes crear cuentas de prueba desde la Plataforma de Desarrolladores de PayPal.

Conclusión

Integrar PayPal en una aplicación Node.js es relativamente sencillo gracias al SDK oficial que proporciona PayPal. Este flujo básico te permitirá aceptar pagos por productos o servicios en tu aplicación. Recuerda que puedes personalizar la transacción para que se ajuste a tus necesidades, como múltiples artículos o diferentes monedas.

Con esta integración en marcha, tendrás un sistema de pagos robusto, seguro y globalmente reconocido. ¡Buena suerte con tu implementación! 😃😃

Compartir:
Creado por:
Author photo

Jorge García

Fullstack developer