Установите JS-скрипт Zonos
Ваша индивидуальная интеграция должна включать фрагмент JavaScript Zonos. Этот скрипт отвечает за отображение интерфейса Checkout, Zonos Hello, обработку платежей и определение геолокации посетителей.
Установите фрагмент JS Zonos
Скрипт Zonos Elements доступен по следующему URL:
Zonos JS фрагмент
<script src="https://js.zonos.com/dist/scripts/loadZonos.js" />
Обработка кэширования браузера
Мы также обычно рекомендуем добавлять временную метку или другой уникальный идентификатор к URL, чтобы гарантировать, что скрипт не кэшируется браузером. Это обеспечит загрузку последней версии скрипта. Например:
Zonos JS snippet
<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>
Аутентификация Zonos JS фрагмента
После загрузки скрипта Zonos JS, вам необходимо аутентифицировать его, передав Zonos API ключ и идентификатор магазина в функцию Zonos.init
. API ключи, используемые для аутентификации Checkout, предназначены для публикации, что означает, что их можно безопасно использовать в коде на стороне клиента, не раскрывая никакой конфиденциальной информации.
Zonos JS фрагмент
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
});
Установите разрешенные домены
Чтобы гарантировать, что JS-скрипт Zonos загружается только на разрешенных сайтах, мы фильтруем запросы на основе списка "разрешенных доменов". Этот список настраивается в Dashboard. Без этой конфигурации JS-скрипт Zonos будет возвращать ошибки разрешения вместо корректной загрузки.
Чтобы обновить ваши разрешенные домены:
- Перейдите в Dashboard -> Настройки -> настройки Checkout.
- В разделе Разрешенные домены добавьте домен(ы), на которых вы будете интегрировать Checkout.
- Нажмите Сохранить.
Настройте Zonos Hello
После того как вы настроили JS-скрипт Zonos, вам нужно настроить Hello для работы с вашим сайтом. Hello отвечает за определение местоположения, языка и валюты посетителя и отображение соответствующей информации. Hello необходим при использовании Checkout.
Вы можете настроить все параметры Hello как в Dashboard, так и в JS-скрипте Zonos. Если вы уже настроили Hello в Dashboard, скрипт загрузит эти настройки и использует их. Если вы укажете какие-либо значения в свойстве helloSettings
функции Zonos.init
, скрипт будет использовать эти значения вместо указанных.
Настройте конвертацию валюты
Hello использует CSS-селекторы для идентификации элементов на вашем сайте, которые отображают информацию о валюте. Вам нужно будет передать эти селекторы в свойство helloSettings.currencyElementSelector
функции Zonos.init
.
Вы можете использовать любой действительный CSS-селектор, например #price, .price
, чтобы выбрать несколько различных элементов.
Zonos JS snippet
Zonos.init({
// ... other fields
helloSettings: {
// ... other fields
currencyElementSelector: '#price, .price', // Replace with your actual selector
},
});
Настройка ограничений на товары
Hello имеет возможность проверять наличие ограниченных товаров, пока покупатель просматривает, и предотвращать их добавление в корзину. Для того чтобы это работало, Hello необходимо знать дополнительную информацию о товаре, такую как название и описание, а также кнопку "добавить в корзину". Вы можете передать CSS-селекторы в Hello, чтобы он мог извлекать эту информацию со страницы.
Zonos JS snippet
Zonos.init({
// ... other fields
helloSettings: {
// ... other fields
productAddToCartElementSelector: '.add-to-cart',
productDescriptionElementSelector: '.description',
productPriceElementSelector: '.price',
productTitleElementSelector: '.title',
},
});
Необязательно — Автоматически открывать Hello при загрузке страницы
По умолчанию Hello будет открываться только тогда, когда посетитель нажимает на кнопку с флагом. Если вы хотите автоматически открывать Hello при загрузке страницы, вы можете вызвать функцию Zonos.openHelloDialog()
, как только скрипт Zonos будет загружен.
Zonos JS snippet
Zonos.init({
// ... other fields
});
Zonos.openHelloDialog();
Настройка Zonos Checkout
После того как Hello будет настроен, вам нужно настроить Checkout для работы с вашим сайтом. Checkout отвечает за то, чтобы клиент мог ввести свою информацию для доставки, рассчитать landed cost и завершить заказ.
Checkout будет делиться контекстными данными с Hello, такими как местоположение посетителя, язык и валюта. Это гарантирует, что опыт клиента будет последовательным на протяжении всего процесса покупок.
Вы можете настроить все параметры Checkout как в Dashboard, так и в JS-скрипте Zonos. Если вы уже настроили Checkout в Dashboard, скрипт загрузит эти настройки и использует их. Если вы укажете какие-либо значения в свойстве checkoutSettings
функции Zonos.init
, скрипт будет использовать эти значения вместо них.
Настройка кнопки 'разместить заказ'
JS-скрипт Zonos автоматически распознает международных покупателей и направляет их в поток Checkout. Однако вам нужно будет настроить кнопку 'разместить заказ' на вашей платформе, чтобы она открывала Checkout при нажатии. Это можно сделать, передав CSS-селектор в свойство checkoutSettings.placeOrderButtonSelector
функции Zonos.init
.
Если у вас есть несколько кнопок, которые могут использоваться для размещения заказа, убедитесь, что вы передали селектор, который будет соответствовать всем из них. Например, #placeOrder, .place-order
будет соответствовать как #placeOrder
, так и .place-order
.
Zonos JS snippet
Zonos.init({
// ... other fields
checkoutSettings: {
// ... other fields
placeOrderButtonSelector: '#placeOrder', // Replace with your actual selector(s)
},
});
Передача деталей корзины только для просмотра в Checkout
Функция обратного вызова buildCartDetail
отвечает за возврат деталей корзины в формате, который интерфейс Checkout может понять и отобразить. Эта функция вызывается, как только клиент попадает на страницу checkout, что гарантирует точное отображение деталей корзины на первой странице Checkout. Обратите внимание, что это не используется для расчетов - это будет обработано на следующем этапе.
Zonos JS snippet
Zonos.init({
// ... other fields
checkoutSettings: {
// ... other fields
buildCartDetail: async () => {
// ... Your existing buildCartDetail implementation
// This should return cart details for UI display
},
},
});
Схема элемента корзины
Функция buildCartDetail
должна возвращать массив элементов корзины. Ниже представлена таблица, описывающая структуру каждого объекта CartItem
:
Название поля | Тип | Обязательно | Описание |
---|---|---|---|
amount | Число | Да | Сумма цены товара. |
countryOfOrigin | Строка | Нет | Страна происхождения товара. |
currencyCode | Строка | Да | Код валюты для суммы. |
description | Строка | Нет | Описание товара. |
hsCode | Строка | Нет | Код Гармонизированной системы для товара. |
imageUrl | Строка | Нет | URL изображения товара. |
measurements | ItemMeasurement[] | Нет | Массив измерений товара. |
metadata | Объект (пары строк/чисел) | Нет | Дополнительные метаданные о товаре. |
name | Строка | Да | Название товара. |
productId | Строка | Нет | Идентификатор товара. |
quantity | Число | Да | Количество товара в корзине. |
sku | Строка | Нет | Идентификатор единицы хранения. |
Безопасная передача landed cost в Checkout
Функция buildLandedCost
отвечает за безопасный расчет landed cost. Она вызывается после того, как клиент вводит свою информацию для доставки. Эта функция рассчитывает тарифы на доставку и другие необходимые расходы, которые затем отображаются на следующей странице Checkout.
Важно, чтобы вы обрабатывали логику расчета landed cost на стороне сервера, так как это единственный способ гарантировать, что детали корзины не будут доступны в браузере клиента. Если вы используете безсерверную архитектуру, вы можете использовать безсерверную функцию для обработки расчета landed cost. Функция buildLandedCost
должна просто вызывать безсерверную функцию/API-эндпоинт и возвращать результат.
На стороне сервера вы можете использовать API Zonos Checkout для расчета landed cost с помощью следующего запроса POST
. Вам нужно будет передать API-ключ, который вы использовали для скрипта Zonos, в заголовке credentialToken
.
URL запроса
https://v1.route.js.zonos.com/api/zonos-elements/calculate-landed-cost
Тело запроса
{
"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 JS фрагмент
Zonos.init({
// ... other fields
checkoutSettings: {
// ... other fields
buildLandedCost: async (checkoutSessionId, contact, shippingAddress) => {
// This should return the landed cost calculation
},
},
});
Индивидуальная интеграция
Создайте полную интеграцию Checkout на своем индивидуальном сайте.
Это руководство охватывает технические аспекты завершения полной интеграции Zonos Checkout на вашем индивидуальном сайте или платформе. Оно предназначено для разработчиков, которые уверенно работают с JavaScript и имеют опыт в разработке фронтенда. Все шаги обязательны, если не указано иное.
Предварительные требования
Это руководство охватывает технические аспекты завершения полной интеграции Zonos Checkout на вашем индивидуальном сайте или платформе. Оно предназначено для разработчиков, которые уверенно работают с JavaScript и имеют опыт в разработке фронтенда. Все шаги обязательны, если не указано иное.
Предварительные требования