Lightbox

Lightbox es una forma de integrar Checkout que permite a tus usuarios completar el pago sin salir de tu página web.

Cuando usas Lightbox, Checkout aparece de forma dinámica en el centro de la pantalla, ofreciendo una experiencia de pago reducida e integrada en tu página web.

Esta solución permite mantener a los usuarios en tu sitio web o aplicación brindándoles comodidad y facilitando el proceso de pago.

Checkout lightbox

Integración

Sigue estos pasos para completar tu integración forma exitosa.

Agregar script

Para integrar Lightbox debes agregar nuestro script en tu página web.

<head>
	...
    <script src="https://checkout.placetopay.com/lightbox.min.js"></script>
</head>

La url referenciada en el script puede cambiar de acuerdo al país y proveedor comercial con el que te estes integrando.

InstanciaScript URL
PlacetoPay Internacional
PlacetoPay Ecuador
Getnet Chile
Getnet Uruguay
Davivienda Costa Rica
Pago Link Atlántida
Atlantic Bank
Goupagos

Iniciar Lightbox

En tu servidor (backend) debes Crear una sesión y obtener la url de procesamiento processUrl.

Comparte la url de procesamiento processUrl con el código javascript de tu cliente (frontend). Una vez esté disponibile puedes iniciar el Lightbox.

var processUrl = "https://checkout.placetopay.com/spa/session/76300/90443d4926a2...";

P.init(processUrl);

Registrar Callback

Cuando el proceso en Checkout finalice, se emitira un "callback" a tu página web, asegurate de capturarlo para completar el flujo de forma exitosa.

P.on('response', function (response) {
	console.log(data);
});

El callback dispondrá del argumento response en el cual encontrarás la estructura de un sessionNotification con la siguiente información:

SessionNotification

{
	"reference": "ABC_123",
	"requestId": 12345,
	"signature": "bodySignature",
	"status": { 
		"date": "2023-07-11T11:34:37-05:00",
		"message": "The request has been successfully approved",
		"reason": "00",
		"status": "APPROVED"
	} 
}

Integración Avanzada

Conoce en detalle los métodos y eventos disponibles

P.init

Inicializa el Lightbox.

P.init(processUrl, options);
PropiedadTipoDescripción
processUrlstringrequired
Url de procesamiento
optionsobjectOpciones avanzadas
options.opacitynumberTransparencia del fondo del lightbox.
Por Defecto: 0.7
Número entre 0 y 1
1 indica que el fondo no es transparente y 0 indica que es completamente transparente.

P.on

Suscribirse a eventos del lightbox.

P.on(eventType, callback);
PropiedadTipoDescripción
eventTypestringrequired
Nombre del evento a suscribirse
Posibles valores response close
callbackFunctionFunción callback a ejecutarse cuando ocurra el evento

Listado de eventos

EventoDescripciónParámetros
responseSe ejecuta cuando se recibe una respuesta de PlacetoPay.SessionNotification
closeSe ejecuta cuando el usuario cierra el Lightbox o cuando se cierra automáticamente al finalizar el proceso y este haber sido creado con un skipResult: trueN/A
P.on('response', function (response) {
	console.log(response);
});


P.on('close', function () {
	console.log('El usuario cerró el Lightbox');
});

También es posible suscribirse a mas de un evento del mismo tipo, solo debes registrar cada uno de forma separada en P.on().

Uso embebido

Si deseas usar el lightbox en un iframe, debes preparar tu aplicación para capturar el mensaje placetopay-lightbox:redirect y redirigir la ventana principal a la URL que está disponible en el payload. Esto para dar soporte en Safari y otros navegadores que por defecto no permiten cookies de terceros.

El postMessage recibido tendrá la siguiente estructura:

{
	"type": "placetopay-lightbox:redirect",
	"url": "https://checkout.placetopay.com/spa/session/123456/1234567890..."
}

Debes capturar el mensaje y redirigir la ventana principal a la URL que está disponible en el payload.

window.addEventListener('message', (event) => {
	const data = typeof event.data === 'string' ? JSON.parse(event.data) : event.data;

	if (data.type === 'placetopay-lightbox:redirect') {
		window.location.href = data.url;
	}
})

Ejemplo de integración

A continuación el ejemplo más simple de cómo puedes integrar Lightbox en tu HTML.

<!DOCTYPE html>
<html lang="es">
<head>
	<meta charset="UTF-8">
	<title>Lightbox SDK</title>
	<script src="https://checkout.placetopay.com/lightbox.min.js"></script>
</head>
<body>
	<h1>Lightbox SDK</h1>
	
	<button id="open">Abrir Lightbox</button>
	
	<script>
		<!-- Suscribe el evento close -->
		P.on('close', function () {
			alert('El usuario cerró el Lightbox');
		});

		<!-- Suscribe el evento response -->
		P.on('response', function (response) {
			console.log(response);
		});

		<!-- Abre el Lightbox al hacer click en el botón -->
		document.getElementById('open').addEventListener('click', function () {
			var processUrl = "https://checkout.placetopay.com/spa/session/123456/1234567890abc1234567890abc12345";

			P.init(processUrl);
		});
	</script>
</body>
</html>