InSite ¿Qué es la integración InSite?La integración InSite consiste en incrustar el formulario de pago en tu página web. De esta forma, los clientes están introduciendo su información de pago en el TPV Virtual sin salir de tu página web. Como los datos de pago los gestiona el TPV Virtualy no pasan por tus sistemas, no tienes que cumplir con la normativa PCI DSS. La operación de pago debe completarse mediante una conexión REST. Cuando el cliente completa la información en el formulario de pago, se devuelve un ID de operación (idOper) que se debe enviar mediante conexión REST para completar el pago. En este documento veremos cómo invocar el formulario de pago en tu página web y cómo obtener el ID de operación. La operación de pago en la integración InSite tiene que completarse mediante una conexión REST. Estas son las ventajas de la integración InSite: Experiencia de pago totalmente integrada en tu página web. No tienes que preocuparte del cumplimiento de la normativa PCI-DSS. Numerosas operativas disponibles. Este es un ejemplo del cajero de pago que se incrusta en tu página web: Además, los campos del cajero pueden incluirse de distintas formas: Integración InSite: paso a pasoA continuación tienes los pasos para realizar la integración InSite. Recuerda: Adapta los ejemplos de código a tus necesidades. Los bloques de código son un ejemplo para entender más fácilmente el proceso. Adapta tu código a tus necesidades. Consulta las librerías de Redsys para ver más ejemplos Librerías de Redsys Paso 1: Añadir dominios InSite en CanalesLos dominios y subdominios de tu sitio web, desde donde se cargará el formualario InSite, se tienen que indicar en Canales. Esta gestión la realiza Soporte. Indica a Soporte los dominios de tu sitio web que quieres incluir. Puedes ir haciendo los siguientes pasos mientras se gestiona este. Paso 2: Incluir el fichero JavaScriptEl segundo paso de la integración InSite es incluir el fichero JavaScript alojado en el servidor de Redsys.Hay un fichero para entorno de Pruebas y otro para Producción, se incluye con una línea de código que cambia según el entorno. Incluye esta línea de código en el body de tu integración: Fichero Pruebas Fichero producción El siguiente paso es incrustar los campos del formulario de pago en tu página web. Puedes incluir los elementos de forma unificada todo en uno (3a) o de manera independiente (3b). Paso 3a, opción formulario unificado todo en unoEn esta modalidad de la integración InSite, el TPV Virtual proporciona un único iframe que incluye todo el formulario de pago: número de tarjeta, fecha de caducidad, CVV y botón de envío. Esta solución es ideal si deseas simplificar la integración y mantener una experiencia de usuario fluida sin salir de tu web.Las características principales:Formulario completo en un único iframe.Detección automática de la marca de tarjeta.Validación de formato en tiempo real (por ejemplo, longitud del número, formato de caducidad, etc.).Personalización del diseño mediante estilos CSS definidos por el comercio.¿Cómo integrarlo?Incluye los siguientes elementos en el body de tu integración: 1. Incluir la función de validación y el listener: Es necesario definir una función para validar los datos del formulario (si procede) y un listener que recoja la respuesta con el ID de operación (token) o el código de error: 2. Añadir los elementos en tu HTML: Debes crear un contenedor con un ID único donde se insertará el iframe, así como dos campos ocultos para recoger la respuesta: En las librerías de Redsys se proporciona la función storeIdOper() dentro de su API, que almacena la respuesta en los campos ocultos definidos.3. Llamar a la función para generar el formulario: Finalmente, debes llamar a la función getInSiteForm() para generar el formulario indicando el ID del mismo dentro del contenedor definido (card-form). getInSiteForm( 'card-form', // ID del contenedor estiloBoton, // Estilo CSS para el botón estiloBody, // Estilo CSS general del formulario estiloCaja, // Estilo del fondo de la caja de datos estiloInputs, // Estilo de los inputs (color, tipografía…) 'Texto botón pago', // Texto a mostrar en el botón fuc, // Número de comercio terminal, // Número de terminal merchantOrder, // Número de pedido 'ES', // Idioma del formulario true // Mostrar logo de la entidad (true/false) ); Tienes que informar de los campos relacionados con el comercio, estos son: CampoDescripciónRequerido/Opcional fucNúmero de comercio proporcionado. No cambia entre entornos.Requerido terminalNúmero de terminal.Requerido merchantOrderNúmero de pedido que identifica la operación en el TPV Virtual. El número de pedido que se utilice en este paso debe ser el mismo que el utilizado en la posterior petición de pago. Requerido idiomaIdioma del formulario (por ejemplo: ES, EN, FR…).Opcional mostrarLogoEntidadIndica si se debe mostrar el logo de la entidad (true / false).Opcional El número de pedido (merchantOrder) debe ser el mismo durante el renderizado del iframe y generación del idOper (en este paso que acabamos de ver) y durante la petición de pago por REST posterior. Puedes modificar estilos CSS con estos campos. El valor de estos campos es en formato CSS y su envío es opcional: ParámetroDescripción estiloBotonPersonaliza el aspecto del botón de pago (colores, borde, fuente, etc.). estiloBodyDefine el color de fondo, estilo de textos y diseño general del formulario. estiloCajaFondo y color del bloque de introducción de datos. Afecta también al placeholder. estiloInputsPersonaliza la fuente, color y estilo de los campos de entrada (tarjeta, fecha…). Importante: En el campo «Texto botón de pago», debe codificarse en caracteres HTML para evitar problemas de codificación. Por ejemplo, «Botón» sería: «Botón».4. Indica al navegador que ejecute la función «loadRedsysForm»: Esta función se ejecuta cuando finaliza la carga de la página: window.onload = loadRedsysForm(); Este código es un ejemplo para entender más fácilmente el proceso. Puede que no funcione correctamente. Adapta el código a las necesidades de tu integración. Consulta las librerías de Redsys para ver más ejemplos: Librerías de Redsys Paso 3b, opción de elementos independientesEsta modalidad permite una personalización completa del formulario de pago. El comercio puede distribuir y diseñar libremente los campos de tarjeta y el botón de pago dentro de su propia interfaz, sin perder la seguridad del TPV Virtual.Cada campo se genera como un iframe independiente, y se puede personalizar visualmente con estilos CSS. Además, se incluyen validaciones automáticas (formato de número de tarjeta, caducidad, CVV, etc.) y reconocimiento de marca.¿Cómo integrarlo?Incluye los siguientes elementos en el body de tu integración: 1. Añadir los contenedores en tu HTML: Crea contenedores vacíos con un ID único para que se inserten de forma segura los campos dentro de un iframe. Estos contenedores tendrán el identificador de los distintos campos: cardinfo-card-number,cardinfo-exp-date,cardinfo-cvv.A continuación tienes 2 ejemplos, uno con la caducidad (mes y año) separada y otro con la caducidad combinada: Caducidad separada Caducidad combinada Número de tarjeta Mes caducidad (MM) Año caducidad (AA) CVV Número de tarjeta Caducidad (MM/AA) CVV 2. Incluir la función de validación y el listener: Es necesario definir una función para validar los datos del formulario (si procede) y un listener que recoja la respuesta con el ID de operación (token) o el código de error. 3. Añadir los campos ocultos para recoger la respuesta en tu HTML: A continuación, incluye los siguientes campos ocultos para recoger la respuesta del TPV Virtual, que sería el token (idOper) si la operación va bien, o el código de error correspondiente: En las librerías de Redsys se proporciona la función storeIdOper() dentro de su API, que almacena la respuesta en los campos ocultos definidos.3. Llamar a la función para generar el formulario: Una vez definidos los contenedores HTML y configurado el listener para recibir el resultado del pago, el siguiente paso es invocar las funciones proporcionadas para generar los campos de introducción de datos de la tarjeta dentro de cada contenedor.Las funciones están compuestas por:getCardInput: El identificador del contenedor, estilo CSS de la caja exterior y estilo CSS del input, placeholder (texto para guiar al cliente).getExpirationInput: El identificador del contenedor, estilo CSS personalizado y un placeholder (texto para guiar al cliente).getCVVInput: El identificador del contenedor, estilo CSS personalizado y un placeholder (texto para guiar al cliente).En la función que invoca el botón de pago getPayButton es obligatorio incluir:Identificador del botón.Texto del botón de pago.FUC: Número de identificación de tu comercio.terminal: Número de terminal con el que estés procesando la operación. merchantOrder: Número de pedido de la operación. Debe coincidir con el que se envíe en la petición de pago REST posterior. A continuación tienes dos ejemplos donde podrás ver las funciones y sus componentes: Caducidad separada Caducidad combinada getCardInput('card-number',estiloCaja, placeholder, estiloInput); getExpirationMonthInput('expiration-month', estilosCSS, placeholder); getExpirationYearInput('expiration-year', estilosCSS, placeholder); getCVVInput('cvv', estilosCSS, placeholder); getPayButton('boton', estilosCSS, 'Texto botón pago', fuc, terminal, merchantOrder); getCardInput('card-number',estiloCaja, placeholder, estiloInput); getExpirationInput('card-expiration', estilosCSS, placeholder); getCVVInput('cvv', estilosCSS, placeholder); getPayButton('boton', estilosCSS, 'Texto botón pago', fuc, terminal, merchantOrder); El número de pedido (merchantOrder) debe ser el mismo durante el renderizado del iframe y generación del idOper (en este paso que acabamos de ver) y durante la petición de pago por REST posterior. Importante: El texto del botón de pago y los placeholders, deben codificarse en caracteres HTML para evitar problemas de codificación. Por ejemplo, «Botón» sería: «Botón».4. Indica al navegador que ejecute la función «loadRedsysForm»: Esta función se ejecuta cuando finaliza la carga de la página: window.onload = loadRedsysForm(); Este código es un ejemplo para entender más fácilmente el proceso. Puede que no funcione correctamente. Adapta el código a las necesidades de tu integración. Consulta las librerías de Redsys para ver más ejemplos: Librerías de Redsys ¿Qué pasa una vez renderizo el formulario?Cuando renderizas el formulario y el cliente introduce los datos de su tarjeta y pulsa en Pagar, pueden ocurrir dos cosas:Todo ha ido correctamente: El TPV Virtual genera y almacena un ID de operación (idOper) que tendrá que enviarse mediante conexión REST para completar el pago.Hay algún error: Hay algún error en la introducción de datos de la tarjeta o en la integración. El comercio tendrá que manejar y mostrar los errores. Paso 4: Envío del idOper para procesar la operaciónUna vez has renderizado el cajero (ya sea de forma unificada o de forma independiente) y el cliente ha introducido sus datos de pago, se genera el ID de operación (idOper). Llegados a este punto, para completar el pago tienes que mandar este ID de operación (idOper) mediante una conexión REST para completar la operación. En los siguientes enlaces tienes información sobre:Cómo realizar la integración REST.Cómo completar las distintas operativas con tarjeta mediante InSite – REST. 1. Realizar integración REST Operativas tarjetas InSite - REST En la petición de pago, tendrás que sustituir los parámetros donde se envían los datos de la tarjeta por DS_MERCHANT_IDOPER. Además, tendrás que usar el mismo número de pedido que durante el renderizado del cajero. Paso 5: Proceso de autenticación 3DS en InSiteEn la mayoría de peticiones de pago, tendrás que iniciar un proceso de autenticación 3DS para realizar el pago de forma segura.Este proceso consiste en redirigir la navegación del cliente hacia el servidor de autenticación del banco o del emisor de la tarjeta para que el cliente complete el proceso de autenticación. Este proceso requiere una serie de paso que se explican en la sección enlazada del documento de operativas con tarjeta mediante InSite – REST. Operativas tarjetas InSite - REST ArtículosOperativas tarjetas InSite