DOCS

Custom integration

/

Индивидуальная интеграция

Создайте полную интеграцию Checkout на своем индивидуальном сайте.

Это руководство охватывает технические аспекты завершения полной интеграции Zonos Checkout на вашем индивидуальном сайте или платформе. Оно предназначено для разработчиков, которые уверенно работают с JavaScript и имеют опыт в разработке фронтенда. Все шаги обязательны, если не указано иное.

Предварительные требования


Это руководство охватывает технические аспекты завершения полной интеграции Zonos Checkout на вашем индивидуальном сайте или платформе. Оно предназначено для разработчиков, которые уверенно работают с JavaScript и имеют опыт в разработке фронтенда. Все шаги обязательны, если не указано иное.

Предварительные требования


Установите JS-скрипт Zonos 

Ваша индивидуальная интеграция должна включать фрагмент JavaScript Zonos. Этот скрипт отвечает за отображение интерфейса Checkout, Zonos Hello, обработку платежей и определение геолокации посетителей.

1

Установите фрагмент JS Zonos

Скрипт Zonos Elements доступен по следующему URL:

Zonos JS фрагмент

1
<script src="https://js.zonos.com/dist/scripts/loadZonos.js" />

Обработка кэширования браузера

Мы также обычно рекомендуем добавлять временную метку или другой уникальный идентификатор к URL, чтобы гарантировать, что скрипт не кэшируется браузером. Это обеспечит загрузку последней версии скрипта. Например:

Zonos JS snippet

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<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>
2

Аутентификация Zonos JS фрагмента

После загрузки скрипта Zonos JS, вам необходимо аутентифицировать его, передав Zonos API ключ и идентификатор магазина в функцию Zonos.init. API ключи, используемые для аутентификации Checkout, предназначены для публикации, что означает, что их можно безопасно использовать в коде на стороне клиента, не раскрывая никакой конфиденциальной информации.

Zonos JS фрагмент

1
2
3
4
5
6
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
});
3

Установите разрешенные домены

Чтобы гарантировать, что JS-скрипт Zonos загружается только на разрешенных сайтах, мы фильтруем запросы на основе списка "разрешенных доменов". Этот список настраивается в Dashboard. Без этой конфигурации JS-скрипт Zonos будет возвращать ошибки разрешения вместо корректной загрузки.

Чтобы обновить ваши разрешенные домены:

  1. Перейдите в Dashboard -> Настройки -> настройки Checkout.
  2. В разделе Разрешенные домены добавьте домен(ы), на которых вы будете интегрировать Checkout.
  3. Нажмите Сохранить.

Настройте Zonos Hello 

После того как вы настроили JS-скрипт Zonos, вам нужно настроить Hello для работы с вашим сайтом. Hello отвечает за определение местоположения, языка и валюты посетителя и отображение соответствующей информации. Hello необходим при использовании Checkout.

Вы можете настроить все параметры Hello как в Dashboard, так и в JS-скрипте Zonos. Если вы уже настроили Hello в Dashboard, скрипт загрузит эти настройки и использует их. Если вы укажете какие-либо значения в свойстве helloSettings функции Zonos.init, скрипт будет использовать эти значения вместо указанных.

1

Настройте конвертацию валюты

Hello использует CSS-селекторы для идентификации элементов на вашем сайте, которые отображают информацию о валюте. Вам нужно будет передать эти селекторы в свойство helloSettings.currencyElementSelector функции Zonos.init.

Вы можете использовать любой действительный CSS-селектор, например #price, .price, чтобы выбрать несколько различных элементов.

Zonos JS snippet

1
2
3
4
5
6
7
Zonos.init({
  // ... other fields
  helloSettings: {
    // ... other fields
    currencyElementSelector: '#price, .price', // Replace with your actual selector
  },
});
2

Настройка ограничений на товары

Hello имеет возможность проверять наличие ограниченных товаров, пока покупатель просматривает, и предотвращать их добавление в корзину. Для того чтобы это работало, Hello необходимо знать дополнительную информацию о товаре, такую как название и описание, а также кнопку "добавить в корзину". Вы можете передать CSS-селекторы в Hello, чтобы он мог извлекать эту информацию со страницы.

Zonos JS snippet

1
2
3
4
5
6
7
8
9
10
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

1
2
3
4
5
Zonos.init({
  // ... other fields
});

Zonos.openHelloDialog();

Настройка Zonos Checkout 

После того как Hello будет настроен, вам нужно настроить Checkout для работы с вашим сайтом. Checkout отвечает за то, чтобы клиент мог ввести свою информацию для доставки, рассчитать landed cost и завершить заказ.

Checkout будет делиться контекстными данными с Hello, такими как местоположение посетителя, язык и валюта. Это гарантирует, что опыт клиента будет последовательным на протяжении всего процесса покупок.

Вы можете настроить все параметры Checkout как в Dashboard, так и в JS-скрипте Zonos. Если вы уже настроили Checkout в Dashboard, скрипт загрузит эти настройки и использует их. Если вы укажете какие-либо значения в свойстве checkoutSettings функции Zonos.init, скрипт будет использовать эти значения вместо них.

1

Настройка кнопки 'разместить заказ'

JS-скрипт Zonos автоматически распознает международных покупателей и направляет их в поток Checkout. Однако вам нужно будет настроить кнопку 'разместить заказ' на вашей платформе, чтобы она открывала Checkout при нажатии. Это можно сделать, передав CSS-селектор в свойство checkoutSettings.placeOrderButtonSelector функции Zonos.init.

Если у вас есть несколько кнопок, которые могут использоваться для размещения заказа, убедитесь, что вы передали селектор, который будет соответствовать всем из них. Например, #placeOrder, .place-order будет соответствовать как #placeOrder, так и .place-order.

Zonos JS snippet

1
2
3
4
5
6
7
Zonos.init({
  // ... other fields
  checkoutSettings: {
    // ... other fields
    placeOrderButtonSelector: '#placeOrder', // Replace with your actual selector(s)
  },
});
2

Передача деталей корзины только для просмотра в Checkout

Функция обратного вызова buildCartDetail отвечает за возврат деталей корзины в формате, который интерфейс Checkout может понять и отобразить. Эта функция вызывается, как только клиент попадает на страницу checkout, что гарантирует точное отображение деталей корзины на первой странице Checkout. Обратите внимание, что это не используется для расчетов - это будет обработано на следующем этапе.

Zonos JS snippet

1
2
3
4
5
6
7
8
9
10
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 изображения товара.
measurementsItemMeasurement[]НетМассив измерений товара.
metadataОбъект (пары строк/чисел)НетДополнительные метаданные о товаре.
nameСтрокаДаНазвание товара.
productIdСтрокаНетИдентификатор товара.
quantityЧислоДаКоличество товара в корзине.
skuСтрокаНетИдентификатор единицы хранения.
3

Безопасная передача landed cost в Checkout

Функция buildLandedCost отвечает за безопасный расчет landed cost. Она вызывается после того, как клиент вводит свою информацию для доставки. Эта функция рассчитывает тарифы на доставку и другие необходимые расходы, которые затем отображаются на следующей странице Checkout.

Важно, чтобы вы обрабатывали логику расчета landed cost на стороне сервера, так как это единственный способ гарантировать, что детали корзины не будут доступны в браузере клиента. Если вы используете безсерверную архитектуру, вы можете использовать безсерверную функцию для обработки расчета landed cost. Функция buildLandedCost должна просто вызывать безсерверную функцию/API-эндпоинт и возвращать результат.

На стороне сервера вы можете использовать API Zonos Checkout для расчета landed cost с помощью следующего запроса POST. Вам нужно будет передать API-ключ, который вы использовали для скрипта Zonos, в заголовке credentialToken.

URL запроса

1
https://v1.route.js.zonos.com/api/zonos-elements/calculate-landed-cost

Тело запроса

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
{
  "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 фрагмент

1
2
3
4
5
6
7
8
9
Zonos.init({
  // ... other fields
  checkoutSettings: {
    // ... other fields
    buildLandedCost: async (checkoutSessionId, contact, shippingAddress) => {
      // This should return the landed cost calculation
    },
  },
});

Была ли эта страница полезной?