Captura de Transacciones con PayPal y Envío a Backend
Clase 12 de 18 • Curso de Pagos Online con PayPal
Contenido del curso
Configuración del proyecto del curso
Aceptar pagos con PayPal
- 6

Creación y Conversión de Cuenta de Negocios en PayPal
04:39 min - 7

Herramientas de PayPal para Negocios y Empresas
03:00 min - 8

Crear aplicación PayPal en Sandbox
04:25 min - 9

Integración del SDK de PayPal en Platzi Store
03:05 min - 10

Crear botón de PayPal con JavaScript SDK
02:51 min - 11

Creación de Transacciones con PayPal en Platzi Store
06:30 min - 12

Captura de Transacciones con PayPal y Envío a Backend
Viendo ahora - 13

Creación de Suscripciones con PayPal paso a paso
11:12 min - 14

Personalización y Mejores Prácticas de Botones PayPal
07:04 min
Analizar e interpretar Dashboards
Administrar situaciones especiales
Optimiza tus pagos en PayPal con un flujo seguro y claro: desde la captura con el SDK hasta el envío de detalles al backend con un form oculto y método post. Aquí verás cómo validar monto, tipo de pago y datos del comprador para guardar la orden en tu base de datos con confianza.
¿Qué es la captura de una transacción en PayPal y por qué importa?
La creación de la orden no mueve el dinero. La captura transfiere los fondos a tu cuenta y te devuelve los detalles necesarios para validar y almacenar la operación. Además, puedes verificar el tipo de pago, la cantidad y datos del comprador.
- Crear orden no es igual a recibir dinero.
- Capturar confirma y liquida el pago en tu cuenta.
- Puedes validar monto, tipo de pago y estado de la compra.
¿Dónde inicia el flujo con el SDK de PayPal?
Desde la sección de basic integration, paso 5, usas onApprove para capturar la orden. Copia los dos parámetros que pasas a create order dentro de onApprove y llama a la función de captura disponible en actions.
- Usa actions.order.capture para ejecutar la captura.
- Recibe una promesa y maneja sus detalles en un callback.
paypal.Buttons({ // createOrder: ... onApprove: function (data, actions) { return actions.order.capture().then(function (details) { // details: información de la transacción capturada. }); } }).render('#paypal-button-container');
¿Qué validaciones puedes hacer tras la captura?
Con los detalles puedes confirmar el precio del producto, el tipo de pago y el estado. Si el producto es físico, PayPal expone la sección shipping para la dirección de envío, y la información del comprador bajo payer (nombre, ID, email).
- Campo payer: nombre, ID de comprador y email.
- Campo shipping: dirección para enviar productos físicos.
- ID de la transacción: clave para futuras modificaciones y auditoría.
¿Cómo enviar los detalles al backend de forma segura?
Realizar la captura solo en el front end no basta. Envía la información al backend con un form y método post para procesar y persistir los datos con seguridad.
¿Cómo crear el formulario oculto?
Coloca el form debajo del contenedor del botón. Define la action hacia la ruta /success, método post, y un input oculto para los detalles.
<form action="/success" method="post" id="PayPal form"> <input type="hidden" name="details" id="details input" /> </form>
- Action: URL del backend para recibir la orden.
- Método post: envía datos de manera segura.
- Input oculto: transporta el JSON con los detalles.
¿Cómo pasar los detalles capturados al formulario?
Dentro de onApprove, referencia el form y el input, convierte los detalles a JSON con JSON.stringify y realiza submit.
onApprove: function (data, actions) { return actions.order.capture().then(function (details) { var paypalForm = document.getElementById('PayPal form'); var detailsInput = document.getElementById('details input'); var jsonDetails = JSON.stringify(details); detailsInput.value = jsonDetails; paypalForm.submit(); }); }
- document.getElementById: referencia el form y el input.
- JSON.stringify: serializa el objeto de detalles.
- submit: envía los datos a /success en tu backend.
¿Qué procesar y guardar en el backend tras /success?
En tu archivo de routes (por ejemplo, index.js), recibe el campo details, parsea el JSON y crea la orden en la base de datos con tu modelo (por ejemplo, Orden). Guarda tanto campos clave como el objeto completo en un campo meta para auditoría.
// Ruta POST /success app.post('/success', function (req, res) { const details = JSON.parse(req.body.details); // Crear la orden en BD (modelo: Orden): // - PayPal ID // - nombre del comprador // - status de la compra // - email // - meta: todos los detalles de la orden // Responder o redirigir según tu flujo. });
- Guarda PayPal ID, nombre, status y email.
- Usa meta para persistir todos los detalles de la orden.
- Valida precio y dirección de shipping si el producto es físico.
- Implementa reglas: cupones, cancelación o modificación según tus criterios.
¿Tienes dudas sobre validar montos, manejar shipping o el diseño de tu modelo de datos? Cuéntame tu caso en los comentarios y lo revisamos juntos.