Instalar el script JS de Zonos
Su integración personalizada deberá incluir el fragmento de JavaScript de Zonos. Este script es responsable de renderizar la interfaz de Checkout, Zonos Hello, manejar el procesamiento de pagos y la detección de la geo-IP del visitante.
Instalar el fragmento de JS de Zonos
El script de Elementos de Zonos está disponible en la siguiente URL:
Zonos JS snippet
<script src="https://js.zonos.com/dist/scripts/loadZonos.js" />
Manejo de la caché del navegador
También recomendamos típicamente agregar una marca de tiempo u otro identificador único a la URL para asegurar que el script no sea almacenado en caché por el navegador. Esto garantizará que siempre se cargue la última versión del script. Por ejemplo:
Zonos Fragmento de JS
<script>
(async function () {
const timestamp = new Date().getTime();
const zonosScript = document.querySelector(
`script[src*="https://js.zonos.com/dist/scripts/loadZonos.js"]`,
);
if (!zonosScript) {
const script = document.createElement('script');
script.src = `https://js.zonos.com/dist/scripts/loadZonos.js?timestamp=${timestamp}`;
script.addEventListener(
'load',
() => {
// Initialize the script here (instructions in next section)
},
false,
);
document.head.appendChild(script);
}
})();
</script>
Autenticar el fragmento de JS de Zonos
Una vez que hayas cargado el script de JS de Zonos, necesitas autenticarlo pasando una Zonos API key y el ID de la tienda al interior de la función Zonos.init
. Las claves API utilizadas para autenticar Checkout están diseñadas para ser publicables, lo que significa que se pueden utilizar de forma segura en el código frontend sin exponer información sensible.
Zonos
Zonos.init({
// ... other fields
zonosApiKey: 'API KEY', // Replace with your actual API key (found in Dashboard)
storeId: 'STORE ID', // Replace with your actual store ID (found in Dashboard)
// ... other fields
});
Configurar dominios permitidos
Para asegurarse de que el script JS de Zonos solo se cargue en sitios permitidos, filtramos las solicitudes basándonos en una lista de "dominios permitidos". Esta lista se configura en el Dashboard. Sin esta configuración, el script JS de Zonos devolverá errores de permiso en lugar de cargarse correctamente.
Para actualizar sus dominios permitidos:
- Vaya a Dashboard -> Configuración -> Configuración de Checkout.
- En la sección Dominios permitidos, agregue el/los dominio(s) donde integrará Checkout.
- Haga clic en Guardar.
Configurar Zonos Hello
Una vez que haya configurado el script JS de Zonos, necesita configurar Hello para que funcione con su sitio. Hello es responsable de detectar la ubicación, el idioma y la moneda del visitante, y mostrarles la información adecuada. Hello es necesario cuando se utiliza Checkout.
Puede configurar todos los ajustes de Hello tanto en el Dashboard como en el script JS de Zonos. Si ya ha configurado Hello en el Dashboard, el script cargará esos ajustes y los usará. Si especifica algún valor en la propiedad helloSettings
de la función Zonos.init
, el script usará esos valores en su lugar.
Configurar la conversión de moneda
Hello utiliza selectores CSS para identificar elementos en su sitio que muestran información de moneda. Necesitará pasar estos selectores a la propiedad helloSettings.currencyElementSelector
de la función Zonos.init
.
Puede usar cualquier selector CSS válido aquí, por ejemplo #price, .price
para seleccionar múltiples elementos diferentes.
Zonos JS snippet
Zonos.init({
// ... other fields
helloSettings: {
// ... other fields
currencyElementSelector: '#price, .price', // Replace with your actual selector
},
});
Configurar restricciones de artículo
Hello tiene la capacidad de verificar artículos restringidos mientras el comprador navega y evitar que se agreguen al carrito. Para que esto funcione, Hello necesita conocer información adicional sobre el artículo, como el nombre y la descripción, así como el "botón de agregar al carrito". Puede pasar selectores CSS a Hello para permitirle extraer esta información de la página.
Zonos fragmento de JS
Zonos.init({
// ... other fields
helloSettings: {
// ... other fields
productAddToCartElementSelector: '.add-to-cart',
productDescriptionElementSelector: '.description',
productPriceElementSelector: '.price',
productTitleElementSelector: '.title',
},
});
Opcional — Abrir automáticamente Hello al cargar la página
De forma predeterminada, Hello solo se abrirá cuando el visitante haga clic en el botón de la bandera. Si desea abrir automáticamente Hello al cargar la página, puede llamar a la función Zonos.openHelloDialog()
una vez que se haya cargado el script de Zonos.
Zonos Fragmento de JS
Zonos.init({
// ... other fields
});
Zonos.openHelloDialog();
Configurar Zonos Checkout
Una vez que Hello ha sido configurado, necesitas configurar Checkout para que funcione con tu sitio. Checkout es responsable de permitir que el cliente ingrese su información de envío, calcule el landed cost y complete el pedido.
Checkout compartirá datos contextuales con Hello, como la ubicación del visitante, el idioma y la moneda. Esto asegura que la experiencia del cliente sea consistente en todo el proceso de compra.
Puedes configurar todos los ajustes de Checkout tanto en el Dashboard como en el script de Zonos JS. Si ya has configurado Checkout en el Dashboard, el script cargará esos ajustes y los usará. Si especificas algún valor en la propiedad checkoutSettings
de la función Zonos.init
, el script usará esos valores en su lugar.
Configurar el botón 'realizar pedido'
El script de Zonos JS reconocerá automáticamente a los compradores internacionales y los dirigirá al flujo de Checkout. Sin embargo, necesitarás configurar el botón 'realizar pedido' en tu plataforma para que abra Checkout cuando se haga clic. Esto se puede hacer pasando un selector CSS a la propiedad checkoutSettings.placeOrderButtonSelector
de la función Zonos.init
.
Si tienes múltiples botones que se pueden usar para realizar un pedido, asegúrate de pasar un selector que coincida con todos ellos. Por ejemplo, #placeOrder, .place-order
coincidirá tanto con #placeOrder
como con .place-order
.
Zonos JS snippet
Zonos.init({
// ... other fields
checkoutSettings: {
// ... other fields
placeOrderButtonSelector: '#placeOrder', // Replace with your actual selector(s)
},
});
Pase los detalles del carrito de vista solo en Checkout
La devolución de llamada buildCartDetail
es responsable de devolver los detalles del carrito en un formato que la interfaz de Checkout pueda entender y mostrar. Esta función se llama tan pronto como el cliente llega a la página de checkout, asegurando que los detalles del carrito se muestren con precisión en la primera página de Checkout. Tenga en cuenta que esto no se utiliza para cálculos, eso se maneja en el siguiente paso.
Zonos fragmento de JS
Zonos.init({
// ... other fields
checkoutSettings: {
// ... other fields
buildCartDetail: async () => {
// ... Your existing buildCartDetail implementation
// This should return cart details for UI display
},
},
});
Esquema de artículo del carrito
La función buildCartDetail
debe devolver un array de artículos del carrito. A continuación se muestra una tabla que detalla la estructura de cada objeto CartItem
:
Nombre del campo | Tipo | Requerido | Descripción |
---|---|---|---|
amount | Número | Sí | El monto del precio del artículo. |
countryOfOrigin | Cadena | No | El país de origen del artículo. |
currencyCode | Cadena | Sí | El código de moneda para el monto. |
description | Cadena | No | Descripción del artículo. |
hsCode | Cadena | No | El código del Sistema Armonizado para el artículo. |
imageUrl | Cadena | No | URL de la imagen del artículo. |
measurements | ItemMeasurement[] | No | Array de medidas del artículo. |
metadata | Objeto (pares de cadena/número) | No | Metadatos adicionales sobre el artículo. |
name | Cadena | Sí | Nombre del artículo. |
productId | Cadena | No | El ID del producto. |
quantity | Número | Sí | Cantidad del artículo en el carrito. |
sku | Cadena | No | Identificador de la Unidad de Mantenimiento de Stock. |
Transmitir de forma segura landed cost a Checkout
La función buildLandedCost
se encarga de calcular de forma segura el landed cost. Se invoca después de que el cliente ingresa su información de envío. Esta función calcula las tarifas de envío y otros costos necesarios, que luego se muestran en la página siguiente de Checkout.
Es importante que manejes la lógica de cálculo del landed cost en el lado del servidor, ya que esta es la única forma de garantizar que los detalles del carrito no se expongan al navegador del cliente. Si estás utilizando una arquitectura sin servidor, puedes usar una función sin servidor para manejar el cálculo del landed cost. La función buildLandedCost
simplemente debe llamar a la función/API sin servidor y devolver el resultado.
En el lado del servidor, puedes usar la API de Zonos Checkout para calcular el landed cost utilizando la siguiente solicitud POST
. Necesitarás pasar la clave API que has estado utilizando para el script JS de Zonos en el encabezado credentialToken
.
URL de solicitud
https://v1.route.js.zonos.com/api/zonos-elements/calculate-landed-cost
Cuerpo de la solicitud
{
"billingAddress": {
"addressLine1": "789 King Street",
"city": "London",
"country": "GB",
"postalCode": "SW1A 1AA",
"state": "England"
},
"billingContact": {
"firstName": "John",
"lastName": "Doe",
"phone": "+44-20-7946-0958"
},
"checkoutSessionId": "xyz789",
"contact": {
"firstName": "John",
"lastName": "Doe",
"phone": "+44-20-7946-0958"
},
"items": [
{
"amount": 150,
"currencyCode": "USD",
"name": "Product Name",
"quantity": 2
}
],
"shippingAddress": {
"addressLine1": "789 King Street",
"city": "London",
"country": "GB",
"postalCode": "SW1A 1AA",
"state": "England"
}
}
Zonos fragmento de JS
Zonos.init({
// ... other fields
checkoutSettings: {
// ... other fields
buildLandedCost: async (checkoutSessionId, contact, shippingAddress) => {
// This should return the landed cost calculation
},
},
});
Integración personalizada
Construya una integración de extremo a extremo de Checkout en su sitio personalizado.
Esta guía cubre los aspectos técnicos para completar una integración completa de Zonos Checkout en su sitio o plataforma personalizada. Está destinada a desarrolladores que se sientan cómodos trabajando con JavaScript y tengan experiencia en desarrollo frontend. Todos los pasos son necesarios a menos que se indique lo contrario.
Requisitos previos
Esta guía cubre los aspectos técnicos para completar una integración completa de Zonos Checkout en su sitio o plataforma personalizada. Está destinada a desarrolladores que se sientan cómodos trabajando con JavaScript y tengan experiencia en desarrollo frontend. Todos los pasos son necesarios a menos que se indique lo contrario.
Requisitos previos