Integración del kit de herramientas de pago
Una solución de pago sin preocuparse por el cumplimiento de PCI-DSS.
Checkout Toolkit ha sido especialmente diseñado para integrarse directamente en los campos de pago de su carrito de compras para que su empresa tenga más control sobre toda la experiencia de pago.
Tutorial: Cómo crear una página de pago alojada e incrustar un kit de herramientas de pago
¿Busca un inicio rápido? ¿Este tutorial le guiará paso a paso para crear una página de pago alojada con Rapyd Checkout y, a continuación, incrustarla en su sitio web mediante el kit de herramientas de pago de Rapyd.
Cómo integrar el kit de herramientas de pago
Ejemplo de código complementario para vídeo: demostración del kit de herramientas de pago
Dispositivos de usuario final compatibles
Se admiten los siguientes dispositivos de usuario final:
Dispositivo | Descripción |
|---|---|
Navegadores de teléfonos móviles | El ancho es adaptable y se admite a partir de 320 píxeles. Para una legibilidad óptima, defina el ancho de la pantalla. El tamaño de la altura es dinámico y cambia según el contenido Nota: No establezca un límite en la altura. |
Navegadores de escritorio | Soporta un ancho de 500 px y más. El tamaño de la altura es dinámico y puede cambiar según el contenido Nota: No establezca un límite en la altura. |
Antes de incrustar el iframe en su página, consulte Integración de la página de pago alojada y siga los pasos 1 y 2 para crear su página de pago.
Una vez que haya creado la página de pago, en la respuesta a la pregunta Crear página de pago, recibirá el ID del objeto de la página de pago, una cadena que comienza por checkout_, (por ejemplo: id: «checkout_9ebe58dcb9d75e8f972a35350f96c2fa»).
Filtrado para una sola categoría de tipo de método de pago
Es necesario especificar una categoría de tipo de método de pago en la solicitud Create Checkout, o alternativamente, un tipo de método de pago o una lista de tipos de métodos de pago de la misma categoría.
Agregue el siguiente código a su página de pago:
Add a <script> tag with the URL of the Rapyd Checkout Toolkit:
<script src="https://checkouttoolkit.rapyd.net"></script>
Nota
Para ejecutar este método en sandbox, usa el siguiente código:
<script src="https://sandboxcheckouttoolkit.rapyd.net"></script>
Add a <div> tag with id="rapyd-checkout":
<div id="rapyd-checkout"></div>
Inicialice el objeto de la Página de pago con los siguientes campos:
JavaScript
Instantiating ‘checkout’ with parametersInstantiating 'checkout' & setting variables let checkout = new RapydCheckoutToolkit({ pay_button_text: "Click to pay", // Text that appears on the 'Pay' button. // String. Maximum length is 16 characters. // Default is "Place Your Order". Optional. pay_button_color: "blue", // Color of the 'Pay' button. String. // Standard CSS color name or hexadecimal code such as #323fff. // Default is the color that is returned in the 'merchant_color' // field of the response to 'Create Checkout Page'. Optional. id: "checkout_9ebe58dcb9d75e8f972a35350f96c2fa", // ID of the 'Create Checkout Page' response. String. Required. wait_on_payment_confirmation: false, // Default is 'false'. Optional. // You can keep the Toolkit open in a pending state. // The iframe will close when the payment session has been completed. // The timeout is set to 10 minutes. wait_on_payment_redirect: false, // Default is 'false'. Optional. // The iframe will close when the payment session has been completed. // The user will redirect to complete the 3DS Verification. hide_submit_button: false, // Default is 'false'. Optional. // The submit button will not be visible if set to 'true'. (See CHECKOUT_SUBMIT_PAYMENT event). // This is relevant only for the Checkout Toolkit (not other toolkit solutions). close_on_complete: true, // Causes the embedded Rapyd Checkout Toolkit window to close // When the payment is complete. Boolean. Default is 'true'. Optional. page_type: “collection” // Default is "collection". Optional. });
Llame a display Checkout () para mostrar la página de pago.
checkout.displayCheckout();
Paso opcional.
close_on_completeestá establecido en falso, llamecheckout.closeCheckout ()para cerrar la ventana del Rapyd Checkout Toolkit.checkout.closeCheckout();
Paso opcional. Puede pasar el campo
hide_submit_paymentcomo «verdadero» para ocultar el botón de envío de pago creado por el Rapyd Checkout Toolkit. Luego, activando el eventoCHECKOUT_SUBMIT_PAYMENT, puede gestionar el botón de envío. Relevante solo para Checkout Toolkit.JavaScript
const iframeElement = document.getElementById('rapyd-checkout-frame'); iframeElement.contentWindow.postMessage({type: "CHECKOUT_SUBMIT_PAYMENT"}, '*');
Inserte el código que se ejecuta cuando se producen los siguientes eventos. Use su código para leer el campo de eventos del objeto ventana.
JavaScript
window.addEventListener('onCheckoutPaymentSuccess', (event) => { console.log(event.detail) // Returns 'Payment' object. // Client code. }) window.addEventListener('onCheckoutPaymentFailure', (event) => { console.error(event.detail.error) // Returns an error message from the API. // Client code. }) window.addEventListener('onLoading', (event) => { console.log(event.detail.loading) // returns true or false depending on the loading state // client code }) window.addEventListener('onCheckoutPaymentPending', (event) => { console.log(event.detail) // Returns 'Payment' object. // Client code. }) window.addEventListener('onCheckoutPaymentExpired', (event) => { console.error(event.detail.error) // Returns a constant error message // The event is triggered when the payment status is 'EXP'. // "CHECKOUT_PAYMENT_EXPIRED" }) window.addEventListener('onCheckoutUpdateCardSuccess', (event) => { console.log(event.detail) // Returns payment method object. // client code }) window.addEventListener('onCheckoutDeleteCardSuccess', (event) => { console.log(event.detail) // Returns deleted payment method object. // client code
Este es un ejemplo de una página de Rapyd Checkout creada con el kit de herramientas:
HTML
HTML <!DOCTYPE html> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Rapyd Checkout Toolkit</title> <script src="https://checkouttoolkit.rapyd.net"></script> <script> window.onload = function () { let checkout = new RapydCheckoutToolkit({ pay_button_text: "Click to pay", pay_button_color: "blue", id: "checkout_9ebe58dcb9d75e8f972a35350f96c2fa" }); checkout.displayCheckout(); } window.addEventListener('onCheckoutPaymentSuccess', function (event) { console.log(event.detail) }); window.addEventListener('onCheckoutPaymentFailure', function (event) { console.log(event.detail.error) }); </script> </head> <body style="background-color: #f1f1f1; display: flex; align-items: center; flex-direction: column; margin: 0"> <h1>Rapyd Checkout Toolkit Demo</h1> <div style="width: 500px" id="rapyd-checkout"></div> </body> </html>
Tras el pago exitoso, los clientes reciben un evento Al finalizar la compra, el pago se realiza correctamente con el objeto de pago.
Tenga en cuenta los siguientes campos y las tareas asociadas a cada uno de ellos.
Campos de objetos de pago
Campo | Descripción | Acción |
|---|---|---|
estado | Indica el estado del pago (solo lectura). Respuestas - (Una de las siguientes):
| Puede usar este campo para comprobar el estado del pago, si está activo, pendiente de finalización o cerrado y pagado. |
redireccionar_url | URL de terceros en la que el cliente debe completar el pago, por ejemplo: pagos con tarjeta con autenticación 3DS, redireccionamiento bancario de pagos o redireccionamiento a monederos electrónicos. |
|
instrucciones | Describe los pasos necesarios que debe seguir el cliente para completar el pago. (Solo lectura) | Cuando el estado del pago es ACTUAR y se proporcionan las instrucciones, puedes mostrárselas al cliente. |
códigos_textuales | Un código de texto o un conjunto de códigos de texto para que el cliente los utilice para completar los pasos descritos en el campo de instrucciones. (Solo lectura) | Cuando el estado del pago es ACTUAR y se proporcionan los textual_codes, muéstrelos junto con la clave y el valor al cliente. |
códigos_visuales | Una imagen o un conjunto de imágenes para que el cliente las utilice para completar los pasos descritos en el campo de instrucciones, por ejemplo, un código QR o un código de barras. (Solo lectura) | Cuando el estado del pago es ACTUAR y se proporcionan visual_codes, muéstrelos junto con la clave y el valor al cliente.
|
Recomendación: Asegúrese de implementar elementos de navegación (por ejemplo, volver, devolver o cancelar) en su sitio web al integrar la solución de integración de Toolkit.
Puede usar el kit de herramientas para personalizar su página de pago según sus preferencias.
Botones de billetera digital
Un parámetro llamado digital_wallets_buttons_only se ha añadido al kit de herramientas de pago. El valor predeterminado falso. Si el valor predeterminado está establecido en verdadero, luego aparecerán botones en la página de pago alojada que te permitirán vincularse a monederos digitales como Google Pay y Apple Pay.
Una matriz llamada digital_wallets_include_methods se ha añadido. Puede especificar los valores siguientes: google_pay o apple_pay. El valor que supere determinará el método de pago utilizado para el botón. Predeterminado: ambos.
Un objeto llamado digital_wallets_buttons_customization se ha añadido y contiene los siguientes objetos y parámetros:
estilo de botón- un objeto que contiene la configuración de cada tipo de monedero digital. En el caso de Apple Pay, los valores siguientes son:negro,blanco, ocontorno blanco. Predeterminado: negro.En el caso de Google Pay, los valores siguientes son:
negrooblanco. Predeterminado: negro.tipo_botón- permite al vendedor especificar el texto del botón. En el caso de Apple Pay, los valores siguientes son:agregar dinero,libro,comprar,salida,contribuir,donar,pedido,llanura,recargar,alquilar,suscríbete,apoyo,punta,recarga. Predeterminado: comprarEn el caso de Google Pay, los valores siguientes son:
libro,comprar,pago,donar,pedido,pagar,suscríbete. Predeterminado: comprar
Nota: Para obtener más información, consulte Apple Pay y Google Pay documentación de usuario.
Use el siguiente ejemplo de código para crear los botones del monedero digital con el kit de herramientas:
JavaScript
let checkout = new RapydCheckoutToolkit({ pay_button_text: "Click to pay", // Max 16 characters pay_button_color: "blue", // CSS color or hex id: "checkout_b0d925ac8612bb417c227f0ae73447a4", // Your actual checkout page ID close_on_complete: true, // Close checkout window after payment page_type: "collection", // Optional, default is "collection" digital_wallets_buttons_only: true, digital_wallets_include_methods: ["google_pay", "apple_pay"], digital_wallets_buttons_customization: { google_pay: { button_color: "black", button_type: "book" }, apple_pay: { button_color: "black", button_type: "book" } }
Traducciones
Tiene la opción de cambiar el idioma predeterminado de su página de pago a cualquiera de los idiomas disponibles actualmente en la lista siguiente:
Chino simplificado | Chino tradicional | inglés |
estonio | alemán | griego |
hindi | islandés | indonesio |
italiano | japonés | coreano |
Bahasa Malayu (malayo) | lituano | ruso |
portugués | eslovaca | esloveno |
español | tailandés | turco |
tagalo | ucraniano | vietnamita |
danés | hebreo | polaco |
sueco | checo | letón |
maltés | noruego |
Especifíquelo en el campo de parámetros de idioma al generar la página de pago.
Nota: Consulte la lista completa de idiomas en Compatibilidad con los idiomas de las páginas alojadas.
Estado pendiente del kit de herramientas de pago
Puede pasar el campo confirmación de wait_on_payment como «verdadero» para mantener el iframe abierto en estado pendiente. El Pago pendiente al finalizar la compra se activa el evento, que devuelve el objeto de pago. El usuario es redirigido a la página con estado pendiente mientras completan su pago. Los códigos de pago o las instrucciones se muestran si están presentes en el objeto de pago.
La página de estado pendiente tiene un tiempo de espera predeterminado de 10 minutos. A continuación, si el pago no se completa dentro de ese plazo, el iframe se cierra y se activa el evento El pago al finalizar la compra ha caducado.
El comerciante puede pasar el parámetro payment_expiration para la solicitud Crear página de pago para acortar el plazo de pago de 10 minutos.
Nota: No establezca un límite en la altura.
Redirección de autenticación 3DS
Puede pasar el campo wait_on_payment_redirect como «verdadero» para aplicar una experiencia de pago a los pagos con tarjeta con la verificación 3DS incluida. Se activa el evento Pago pendiente al finalizar la compra , que devuelve el objeto de pago. Se redirige al usuario y completa la verificación de la 3DS.
El iframe se cierra cuando se activa el evento Al finalizar la compra, ¿se ha realizado correctamente el pago? al completarse el pago, o si el evento Fallo en el pago al finalizar la compra se activa si el pago está incompleto o se produce un error.
CSS personalizado
Elementos
En la siguiente tabla se enumeran todos los elementos disponibles:
Descripción de los parámetros corporales
Parámetro corporal | Descripción |
|---|---|
información sobre herramientas | Información sobre herramientas, que se utiliza para mostrar información adicional sobre ciertos campos, por ejemplo, el código CVV en los pagos con tarjeta |
enviar | Botón Enviar |
entrada | Campos de entrada |
menú desplegable | Listas desplegables |
claro | Botón Borrar, que se usa para borrar la entrada en los campos de entrada y las listas desplegables |
global | Un elemento diseñado para configuraciones generales Nota: Consulte a continuación para obtener más detalles |
Elementos globales
fuentes array: global.fonts es una matriz de fuentes personalizadas, que puede contener una URL o un objeto, como se ve en el siguiente ejemplo. La familia establecida en global.fonts se puede usar en
CSS
global = { fonts: [ "https://fonts.googleapis.com/css2?family=Mulish:wght@200&display=swap", { family: 'myCustomFont', src: '/fonts/myCustomFontRegular.woff2', fontWeight: 400 }, { family: 'myCustomFont', src: '/fonts/myCustomFontBold.woff2', fontWeight: 700 } ] }
Tamaños de fuente: los tamaños configurados se aplican a todos los textos de Checkout Toolkit. Puede anular los global.fontSizes configurando las fuentes por elemento. FontSizes admite todas las unidades de CSS (por ejemplo, rem, px).
Nota
Recomendamos usar unidades REM para que la aplicación pueda adaptarse a dispositivos de todos los tamaños (ya que la interfaz de usuario está diseñada para unidades REM).
La interfaz de usuario de Rapyd se basa en un tamaño de fuente raíz de 10 píxeles (1 rem = 10 px).
Variantes y estados
Cada elemento se puede configurar con una o más de las siguientes variantes o pseudoclases y pseudoelementos:
Variantes y estados | Descripción | Elementos a los que se aplica |
|---|---|---|
marcador de posición | Aplicado al marcador de posición del elemento |
|
discapacitado | Se aplica cuando el elemento está desactivado |
|
flotar | Se aplica cuando el elemento está en estado flotante |
|
activo | Se aplica cuando el elemento está en estado activo |
|
error | Se aplica cuando el elemento está en estado de error |
|
enfoque | Se aplica cuando el elemento está enfocado mientras se navega por una página web con la tecla TAB (o equivalente) |
|
selección | Se aplica a un texto seleccionado dentro de un elemento |
|
artículo | Se aplica a todos los elementos de un campo desplegable |
|
lista | Se aplica a la lista completa en un campo desplegable |
|
base | El estilo predeterminado |
|
Propiedades de CSS
Cada nombre de propiedad especificado debe estar en mayúsculas, por ejemplo, borderRadius, no border-radius.
Tema predeterminado del kit de herramientas y propiedades CSS disponibles
CSS
const defaultTheme = { "global": { "fonts": [], "fontSizes": { "extraSmall": "1.2rem", "small": "1.4rem", "medium": "1.6rem", "large": "2rem", "extraLarge": "4rem" }, "input": { "base": { "borderColor": "#e9ecef", "backgroundColor": "#fff", "borderRadius": "4px", "color": "#1a1a1a", "fontSize": "1.4rem", "fontWeight": 500, "fontFamily": "" }, "active": { "borderColor": "#0046ff", "backgroundColor": "", "color": "", "labelColor": "#0046ff" }, "error": { "borderColor": "#ff3650", "backgroundColor": "", "color": "", "labelColor": "#ff3650" }, "focus": { "outline": "none" }, "placeholder": { "fontSize": "1.4rem", "fontWeight": 500, "color": "#9ba2a7", "fontFamily": "" }, "selection": { "color": "", "backgroundColor": "" }, "disabled": { "backgroundColor": "#fbfbfb", "color": "" } }, "cardFields": { "title": { "color": "" }, "saveForFutureLabel": { "color": "" } }, "requiredFields": { "title": { "color": "" } }, "orderDetails": { "title": { "color": "" }, "totalLabel": { "color": "" }, "totalValue": { "color": "" } }, "pciMessage": { "color": "" }, "dropdown": { "backgroundColor": "", "title": { "color": "" }, "base": { "fontSize": "1.4rem", "fontWeight": 500, "color": "#1a1a1a", "borderColor": "#e9ecef", "backgroundColor": "#fff", "borderRadius": "4px", "fontFamily": "" }, "active": { "borderColor": "#0046ff", "backgroundColor": "", "color": "" }, "error": { "borderColor": "#ff3650", "backgroundColor": "", "color": "#ff3650" }, "focus": { "outline": "none" }, "placeholder": { "fontSize": "1.4rem", "fontWeight": 500, "color": "#000", "fontFamily": "" }, "disabled": { "color": "#9ba2a7", "backgroundColor": "#fbfbfb" }, "item": { "transition": "0.3s", "base": { "backgroundColor": "#fff", "color": "#1a1a1a", "fontFamily": "" }, "active": { "backgroundColor": "#e9ecef", "color": "" }, "hover": { "backgroundColor": "#f6f6f9", "color": "" }, "selected": { "backgroundColor": "#e9ecef", "color": "" } }, "list": { "backgroundColor": "#ffffff", "borderRadius": "4px", "boxShadow": "0 0 4px 0 rgba(110, 119, 125, 0.16)", "border": "solid 2px #e9ecef" } }, "submit": { "base": { "backgroundColor": "", "color": "", "fontWeight": "", "fontSize": "", "borderRadius": "", "fontFamily": "", "border": "", "boxShadow": "", "width": "", "height": "", "padding": "", "cursor": "" }, "hover": { "backgroundColor": "", "color": "", "fontWeight": "", "borderRadius": "", "border": "", "boxShadow": "", "transition": "0.3s" }, "active": { "color": "", "backgroundColor": "" } }, "clear": { "base": { "width": "24px", "height": "24px", "padding": "10px", "borderRadius": "50%", "backgroundColor": "transparent", "cursor": "pointer" }, "hover": { "backgroundColor": "#e9ecef", "transition": "0.3s" }, "active": { "backgroundColor": "#d7dbdf" } }, "tooltip": { "button": { "base": { "width": "16px", "height": "16px", "border": "solid 1px #6e777d", "borderRadius": "50%", "backgroundColor": "#ffffff" }, "hover": { "backgroundColor": "#e9ecef", "border": "", "borderRadius": "", "transition": "0.3s" }, "active": { "backgroundColor": "#e9ecef", "border": "", "borderRadius": "" } }, "content": { "base": { "padding": "16px 18px", "borderRadius": "4px", "boxShadow": "0 0 6px 0 rgba(0, 0, 0, 0.12)", "border": "solid 1px #ededed", "backgroundColor": "#ffffff" }, "hover": { "padding": "", "borderRadius": "", "boxShadow": "", "border": "", "backgroundColor": "", "transition": "3000ms" } } }, "cart": { "background": "none", "border": "none", "fontFamily": "inherit", "description": { "fontSize": "1.2rem", "fontWeight": 400, "color": "#1a1a1a" }, "amount": { "fontSize": "1.4rem", "fontWeight": 600, "color": "#1a1a1a" }, "quantityTitle": { "fontSize": "1.2rem", "color": "#6e777d" }, "quantityValue": { "fontSize": "1.4rem", "fontWeight": 600, "color": "#4a4a4a" }, "image": { "width": "", "height": "80px", "border": "none", "borderRadius": 0, "hover": { "border": "none", "borderRadius": 0, "transition": "0.3s" }, "focus": { "outline": "none" } } }, "instructions": { "title": { "color": "" }, "text": { "color": "" }, "numbering": { "background": "", "text": "" } } };
Pasar un objeto de estilo
Puede pasar un objeto de estilo en el método init, junto con el resto de los campos. Vea el siguiente ejemplo:
JavaScript
let checkout = new RapydCheckoutToolkit({ pay_button_text: "Click to pay", // Text that appears on the 'Pay' button. // String. Maximum length is 16 characters. // Default is "Place Your Order". Optional. // If the client will pass a backgroundColor in the style object pay_button_color: "blue", // Color of the 'Pay' button. String. // Standard CSS color name or hexadecimal code such as #323fff. // Default is the color that is returned in the 'merchant_color' // field of the response to 'Create Checkout Page'. Optional. id: "checkout_9ebe58dcb9d75e8f972a35350f96c2fa", // ID of the 'Create Checkout Page' response. String. Required. close_on_complete: true, // Causes the embedded Rapyd Checkout Toolkit window to close // when the payment is complete. Boolean. Default is 'true'. Optional. style: { global: { fonts: [ "https://fonts.googleapis.com/css2?family=Mulish:wght@200&display=swap", { family: 'myCustomFont', src: '/fonts/myCustomFontRegular.woff2', fontWeight: 400 }, { family: 'myCustomFont', src: '/fonts/myCustomFontBold.woff2', fontWeight: 700 } ] }, submit: { base: { backgroundColor: '#0000FF', // If passed for the 'submit' element, it will override the pay_button_color field. fontFamily: 'myCustomFont', } } });