Cómo integrar la API de 4Geeks Payments en una aplicación de Node.js
Esta guía describe los pasos para integrar la API de 4Geeks Payments en una aplicación de Node.js, basándose en la publicación original del blog.
Requisitos previos¶
- Node.js: Versión 14 o superior.
- Cuenta de 4Geeks Payments: Necesitará sus claves pública y secreta (Public y Secret keys) del panel de desarrollador.
- Conocimientos básicos: APIs REST y JavaScript asíncrono (
async/await).
Paso 1: Configurar su proyecto¶
Inicialice un nuevo proyecto de Node.js e instale las dependencias necesarias (axios, dotenv, express, body-parser).
- Inicializar el proyecto:
mkdir 4geeks-payments-integration
cd 4geeks-payments-integration
npm init -y
npm install axios dotenv express body-parser
- Configurar las variables de entorno: Cree un archivo
.envpara almacenar sus credenciales de API de forma segura.
Paso 2: Autenticarse con la API¶
Cree un archivo de servicio (por ejemplo, paymentService.js) para manejar las solicitudes de API. Utilizará axios para enviar su clave secreta en el encabezado de autorización.
// paymentService.js
require('dotenv').config();
const axios = require('axios');
const API_URL = 'https://api.4geeks.io/v1'; // Endpoint base de la API
const client = axios.create({
baseURL: API_URL,
headers: {
'Authorization': `Bearer ${process.env.FOURGEEKS_SECRET_KEY}`,
'Content-Type': 'application/json'
}
});
module.exports = client;
Paso 3: Crear un Intento de Pago (Payment Intent)¶
Añada una función a paymentService.js para crear un “Intento de Pago” (o Cargo). Esto inicia la transacción.
const createPaymentIntent = async (amount, currency = 'USD', customerId) => {
try {
const response = await client.post('/charges', {
amount: amount, // Monto en centavos (ej., 1000 = $10.00)
currency: currency,
customer: customerId,
description: 'Cargo por suscripción SaaS'
});
return response.data;
} catch (error) {
console.error('Error de pago:', error.response ? error.response.data : error.message);
throw new Error('No se pudo crear el intento de pago');
}
};
module.exports = { createPaymentIntent };
Paso 4: Manejar Webhooks¶
Configure un servidor Express (por ejemplo, en server.js) para escuchar eventos de webhook. Esto es fundamental para confirmar los pagos de forma asíncrona (ej., charge.succeeded).
// server.js
const express = require('express');
const bodyParser = require('body-parser');
const app = express();
// Endpoint de Webhook para escuchar eventos de pago
app.post('/webhook', bodyParser.raw({type: 'application/json'}), (req, res) => {
const event = req.body;
// En producción, verifique la firma aquí para asegurar que la solicitud es genuina.
switch (event.type) {
case 'charge.succeeded':
const charge = event.data.object;
console.log('Pago exitoso:', charge.id);
// Lógica para actualizar la suscripción del usuario o completar el pedido
break;
case 'charge.failed':
console.log('Pago fallido:', event.data.object.id);
// Lógica para notificar al usuario
break;
default:
console.log('Tipo de evento no manejado:', event.type);
}
res.json({received: true});
});
app.listen(process.env.PORT || 3000, () => console.log('Servidor en ejecución...'));
Paso 5: Prueba y despliegue¶
- Modo Sandbox: Utilice el entorno sandbox de 4Geeks Payments para probar cargos, tarjetas rechazadas y errores sin usar dinero real.
- Pasar a producción (Go Live): Una vez verificado, cambie sus credenciales a las claves de producción.
Consejo: Para casos de uso sencillos, el artículo menciona que 4Geeks también ofrece enlaces de pago sin código (no-code checkout links) si no necesita una integración completa de la API personalizada.
- Aún con dudas? Obtenga soporte.
- Consulte el changelog.