Pago con PayPal
Con PayPal, tu cliente puede pagar un link de dos formas desde la :
- Con su cuenta de PayPal: inicia sesión en PayPal y aprueba el pago
- Con tarjeta de débito o crédito, sin cuenta de PayPal: llena el formulario de tarjeta que muestra PayPal
El dinero llega a tu cuenta business de PayPal. PayPal está disponible en los links de pago únicos: los que creas desde el y con . No se ofrece en los links de colección de la , porque PayPal no puede guardar una tarjeta para cobros posteriores. Los pagos se cobran en USD.
Requisitos
- Una cuenta business de PayPal
- Una app REST de PayPal para cada entorno: créala en › Apps & Credentials, en la pestaña Sandbox (pruebas) o Live (producción), y copia su Client ID y su Secret
Usa una app exclusiva para Zelta Pay
Te recomendamos crear una app REST exclusiva para Zelta Pay, con solo la función de aceptar pagos. Los propietarios y administradores de tu cuenta de Zelta Pay pueden ver el Client Secret desde el dashboard, así que esa app no debería permitir nada más que recibir pagos.
Pagos con tarjeta sin cuenta de PayPal
Para que tus clientes puedan pagar con tarjeta sin cuenta de PayPal, tu cuenta business debe tener habilitada la opción PayPal Account Optional en las preferencias de pago de tu sitio web en PayPal. Si no está habilitada, PayPal puede no mostrar el botón de tarjeta.
Configurar PayPal en el dashboard
- Abre Métodos de pago en el menú lateral (visible solo para los roles propietario y administrador)
- Ubica la tarjeta Pagos con PayPal. Tiene dos bloques: Credenciales Producción y Credenciales Sandbox
- En el bloque del entorno que quieres configurar, haz clic en Agregar Credenciales
- En el diálogo Configurar credenciales, ingresa el Client ID y el Client Secret de tu app REST y haz clic en Configurar PayPal
| Campo | Descripción |
|---|---|
| Client ID | Client ID de tu app REST de PayPal (Sandbox para el bloque de Sandbox, Live para el de Producción) |
| Client Secret | Secret de la misma app REST |
Antes de guardar, Zelta Pay verifica las credenciales con PayPal en el entorno del bloque elegido. Por eso unas credenciales de Sandbox guardadas en el bloque de Producción (o al revés) se rechazan:
| Mensaje | Qué significa |
|---|---|
| Guardado — "Credenciales actualizadas" | PayPal aceptó las credenciales y se guardaron |
| Credenciales inválidas — "Las credenciales de PayPal no son válidas. Verifica tu Client ID y Client Secret y que correspondan al entorno seleccionado (Sandbox o Producción)." | PayPal rechazó el Client ID o el Client Secret para ese entorno |
| PayPal no disponible — "No pudimos verificar tus credenciales con PayPal en este momento. Intenta de nuevo en unos minutos." | No se pudo contactar a PayPal para verificarlas |
Al guardar las primeras credenciales, PayPal se activa automáticamente. Puedes activarlo o desactivarlo con el interruptor del encabezado de la tarjeta Pagos con PayPal (Activado / Desactivado); el interruptor afecta a ambos entornos.
PayPal no reemplaza a tus otros métodos
PayPal es un método de pago propio: activarlo no desactiva tu procesador de tarjetas ni Yappy. Tus clientes pueden elegir entre todos los métodos activos.
Ver, editar y eliminar credenciales
- Credenciales muestra el Client ID y el Client Secret completos
- Editar permite reemplazarlos (se vuelven a verificar con PayPal antes de guardarse)
- Eliminar borra las credenciales de ese entorno
Mientras haya pagos de PayPal en confirmación en un entorno, no puedes eliminar sus credenciales ni cambiarlas por las de otra app (otro Client ID): el dashboard muestra "Hay pagos de PayPal en confirmación para este entorno. Espera a que se confirmen antes de cambiar o eliminar las credenciales." Actualizar solo el Client Secret de la misma app sí está permitido.
Ofrecer PayPal en tus links
Desde el dashboard
En el formulario , la sección Métodos de pago incluye la opción PayPal ("Cuenta PayPal o tarjeta sin cuenta"). La sección aparece cuando tienes al menos dos métodos activos en el entorno del link; si PayPal es tu único método activo, se selecciona automáticamente.
Desde la API
Incluye "paypal" en paymentMethods al crear el link:
{
"concept": "Orden #12345",
"amount": 4999,
"customerName": "Maria Lopez",
"isTest": false,
"paymentMethods": ["card", "paypal"]
}PayPal debe estar activo para el entorno del link; si no, la solicitud se rechaza con ERR_INACTIVE_PAYMENT_METHOD. Si omites paymentMethods, la página de pago ofrece PayPal junto con los demás métodos activos. Consulta .
Lo que ve el cliente
1. Elegir PayPal
En la , el cliente elige PayPal ("Cuenta PayPal o tarjeta de débito/crédito"). Si PayPal es el único método del link, se muestra directamente con el título Pago con PayPal. A diferencia de tarjeta y Yappy, PayPal no exige llenar el campo de correo electrónico.
2. Elegir cómo pagar
Se muestran los botones de PayPal:
- El botón de PayPal, para pagar con su cuenta
- El botón de tarjeta de débito o crédito, separado por el texto "o paga con tarjeta sin cuenta PayPal"
Debajo aparece "Procesado de forma segura por PayPal.". PayPal dibuja los botones en español y muestra cada uno solo si esa forma de pago está disponible para el cliente y el monto.
3. Aprobar el pago
- Con cuenta de PayPal: se abre una ventana de PayPal donde el cliente inicia sesión y aprueba el pago
- Con tarjeta: PayPal muestra su formulario de tarjeta en la misma página, junto al botón
PayPal no le pide al cliente una dirección de envío. Si el navegador bloquea la ventana de PayPal, la página muestra "Tu navegador bloqueó la ventana de PayPal. Abre este enlace en una pestaña nueva para pagar con PayPal." con el enlace Abrir en una pestaña nueva.
Si el cliente cierra la ventana o cancela, ve "Cancelaste el pago en PayPal." y puede volver a intentarlo: el link sigue disponible.
4. Resultado
Después de que el cliente aprueba, la página muestra "Procesando tu pago con PayPal… No cierres esta página." y luego:
| Resultado | Lo que ve el cliente |
|---|---|
| Pago completado | La pantalla Pago Completado con los detalles del pago. En Método de Pago aparece PayPal (pagó con su cuenta) o Tarjeta de Crédito/Débito (pagó con tarjeta). Si el link tiene redirectUrl, se le redirige a los pocos segundos |
| Pago rechazado | "El pago fue rechazado. Prueba con otra tarjeta u otro método de pago." El cliente puede intentarlo de nuevo |
| Pago en revisión | La pantalla Estamos procesando tu pago… con el mensaje "PayPal está revisando tu pago." El cliente puede cerrar la página: recibirá un correo cuando el pago se confirme |
Pagos en revisión
PayPal retiene algunos pagos para revisarlos antes de completarlos, lo que puede tardar desde minutos hasta varios días. Mientras tanto:
- El link aparece como Procesando en el dashboard y como
processingen la API - El link no se puede pagar de nuevo ni anular (la API responde
409conERR_PAYMENT_IN_PROGRESSal intentar cancelarlo) - Zelta Pay consulta a PayPal periódicamente: cuando PayPal completa el pago, el link pasa a Completado y recibes el webhook
payment.success; si PayPal lo rechaza, el link vuelve a estar pendiente de pago
Algunas retenciones dependen de una acción en tu cuenta de PayPal (por ejemplo, aceptar el pago manualmente o confirmar tu cuenta business). Complétala en PayPal y Zelta Pay detectará el cambio en su siguiente consulta.
Notificaciones
Como con los demás métodos, cuando el pago se completa:
- Recibes el webhook con
transaction.paymentProvider: "paypal"ytransaction.paymentMethod"paypal"(cuenta de PayPal) o"credit_card"(tarjeta sin cuenta de PayPal).transaction.externalPaymentIdes el ID de la captura de PayPal, el mismo que ves en tu cuenta de PayPal - El cliente recibe el correo de confirmación con su comprobante (si se conoce su email: el del link, el que escribió en la página o el de su cuenta de PayPal), y el propietario de la cuenta recibe un aviso del pago
El webhook payment.failed se envía solo cuando PayPal rechaza el pago, con failureReason en el formato "PayPal: <motivo>". No se envía cuando el cliente cierra la ventana de PayPal o abandona el pago.
Reembolsos
Si necesitas reembolsar un pago de PayPal, hazlo desde tu cuenta de PayPal: busca el pago por el ID de captura que llega en transaction.externalPaymentId.
Modo de prueba
Los links de prueba (isTest: true en la API, o Activar entorno sandbox en el dashboard) usan las credenciales del bloque Credenciales Sandbox y el entorno sandbox de PayPal, así que no mueven dinero real. La página de pago muestra la etiqueta Modo prueba.
Para probar el pago, usa una cuenta personal de prueba que puedes crear en developer.paypal.com › Sandbox accounts, o paga con tarjeta usando datos de prueba de PayPal. Los webhooks de estos pagos llevan transaction.isTest: true.
Siguientes pasos
- — Vista general de la página de pago y sus estados
- — Configura los métodos de pago disponibles
- — Flujo de pago con tarjeta de crédito/débito
- — Flujo de pago con Yappy
- — Payloads de
payment.successypayment.failed