Captura de Transacciones con PayPal y Envío a Backend
Clase 12 de 18 • Curso de Pagos Online con PayPal
Resumen
¿Qué es el proceso de captura en PayPal?
Has creado tu primera transacción en PayPal, ¡felicidades! Sin embargo, un paso esencial en el proceso es la captura de la transacción. Aunque la transacción ya ha sido creada, el dinero no está todavía en tu cuenta de PayPal. La captura implica la transferencia efectiva del dinero a tu cuenta. A través del SDK de PayPal, puedes realizar esta operación e incluso validar detalles importantes como el tipo de pago y el monto recibido.
¿Cómo capturar una transacción con el SDK de PayPal?
El proceso de captura se lleva a cabo a través del portal de desarrolladores de PayPal, específicamente en la sección 'Basic Integration'. Aquí ya habíamos configurado una alerta para notificar el éxito de la creación de una transacción. Ahora, usaremos este código para capturar la orden.
Modificación del archivo product.ejs
Primero, regresemos al archivo product.ejs, donde previamente habíamos trabajado en el botón de PayPal. Nuestra función onApprove
requiere algunos ajustes:
- Copiar parámetros iniciales de la función
createOrder
: Estos serán reutilizados enonApprove
. - Captura de la orden: Usa la función dentro del parámetro
actions
seguida deorders.capture()
, que te devolverá una promesa para obtener los detalles de la transacción capturada.
actions.order.capture().then(function(details) {
// detalles de la transacción capturada
});
Envío seguro de información al backend
Ahora, debemos enviar esta información al backend de forma segura. Esto se puede lograr creando un formulario en tu archivo. Aquí están los pasos:
-
Crear el formulario:
<form id="paypal-form" action="/success" method="post"> <input type="hidden" name="details" id="details-input"> </form>
action
: Define la URL a donde se enviará la información.method
: Tipo POST para enviar datos de manera segura.
-
JavaScript para manejar el formulario:
Crea variables para referenciar tanto al formulario como al input oculto.
var paypalForm = document.getElementById('paypal-form'); var detailsInput = document.getElementById('details-input');
-
Convertir los detalles a JSON y enviarlos:
Usando
JSON.stringify
, convierte los detalles a un string JSON y asígnalos al input oculto.var jsonDetails = JSON.stringify(details); detailsInput.value = jsonDetails; paypalForm.submit();
¿Qué encontrar en el backend?
El backend recibirá estos datos y deberá procesarlos adecuadamente. En el archivo routes/index.js
, maneja los datos que llegan a la ruta /success
:
-
Parsear el JSON recibido: Convierte el string de detalles de nuevo a un objeto JavaScript.
-
Guardar datos en la base de datos:
- Usa un modelo para crear y almacenar la información esencial, como el ID de PayPal, el nombre del comprador, el estado de la compra, y el email.
- También puedes guardar detalles completos de la orden en un campo adicional, útil para futuras verificaciones o cancelaciones.
router.post('/success', (req, res) => {
let orderDetails = JSON.parse(req.body.details);
// Lógica para crear y guardar la orden en la base de datos
});
¿Qué información incluye la transacción?
Con la captura completada, se dispone de un resumen detallado de la transacción:
- ID de la transacción: Fundamental para futuros seguimientos o modificaciones.
- Información del comprador: Nombre, ID de comprador y email.
- Detalles de compra: Elementos adquiridos, valor del producto y detalles de envío si aplica.
Este proceso ordenado no solo garantiza que los pagos lleguen a su destino, sino que además te brinda la información clave para gestionar tus transacciones y ofrecer un servicio transparente y eficaz. ¡Continúa aprendiendo y mejorando tus habilidades para un desarrollo web cada vez más robusto!