Контрольный список интеграции
Следуйте этому подробному контрольному списку для настройки учетной записи Zonos Dashboard и интеграции Zonos Checkout на свой пользовательский сайт или платформу.
Создайте учетную запись Zonos
Чтобы начать, пожалуйста, свяжитесь с нашей командой по продажам для создания учетной записи и подписания соглашения. После подписания соглашения вы получите два микрозаписа на вашу учетную запись, которые необходимо проверить.
Пожалуйста, отправьте суммы микрозаписов по адресу accounting@zonos.com с указанием вашего ID хранилища Dashboard (скопируйте вашего торгового представителя).
После проверки ваши банковские реквизиты будут отображаться в Dashboard -> Settings -> Billing.
Настройте параметры Dashboard и Checkout
После создания учетной записи Zonos вам необходимо настроить параметры в Dashboard, чтобы убедиться, что Checkout работает правильно с вашим хранилищем. В этом разделе рассматриваются все важные конфигурации Dashboard.
Настройте выплаты
Подключите банковский счет для получения своевременных выплат от Checkout. Выплаты обрабатываются ежедневно с задержкой в 2 дня с момента получения платежа. Для этого выполните следующие шаги:
- Перейдите в Dashboard -> Settings -> Checkout settings .
- Нажмите Add bank account
- Вы будете перенаправлены на портал Stripe для завершения настройки и предоставления следующей информации:
- Информация о банковском счете.
- EIN компании.
- Номер социального страхования владельца компании на 25%. Дополнительные сведения см. в документации Stripe.
Note: Если вам нужно обновить расписание выплат, пожалуйста, свяжитесь с support@zonos.com
Настройте разрешенные домены
Для целей безопасности сценарий Zonos JS требует список разрешенных доменов. Это предотвращает загрузку сценария на неавторизованных сайтах и гарантирует его запуск только на утвержденных вами доменах. Без этой конфигурации сценарий будет возвращать ошибки разрешений.
Для этого:
- Перейдите в Dashboard -> Settings -> Checkout settings
- В разделе URLs добавьте ваш полный домен и любые поддомены, где будет использоваться Checkout. Например, если ваш домен -
example.com, вам следует добавитьexample.comиtest.example.com.
Настройте параметры брендинга
Настройте параметры брендинга в Dashboard в соответствии с внешним видом и стилем вашего хранилища.
Для этого выполните следующие шаги:
- Перейдите в Dashboard -> Settings -> Checkout settings -> Branding
- Настройте следующие параметры:
- Логотип.
- Цвет бренда и акцента.
- Тема, стиль и шрифт.
Дополнительную информацию о параметрах брендинга см. в нашей документации.
Подключите перевозчика доставки
Чтобы предоставить цены доставки при оформлении заказа, вам необходимо подключить перевозчика доставки к вашей учетной записи Zonos. Это позволит вам включить конкретные уровни услуг доставки при оформлении заказа.
Чтобы подключить перевозчика доставки, выполните следующие шаги:
- Перейдите в Dashboard -> Settings -> Shipping -> Rates
- Нажмите Add carrier
- Следуйте инструкциям по настройке перевозчика.
Дополнительные сведения о подключении учетных записей перевозчиков см. в нашей документации.
Настройте зоны доставки
Зоны доставки позволяют вам настроить, какие перевозчики доставки и уровни услуг доступны для разных регионов мира.
Чтобы настроить зоны доставки, выполните следующие шаги:
- Перейдите в Dashboard -> Settings -> Shipping -> Locations
- Нажмите New zone
- Введите имя зоны и выберите страны, в которые вы хотите отправлять товары.
- Выберите перевозчика и уровень услуг, который вы хотите предложить.
Дополнительные сведения о зонах доставки см. в нашей документации.
Установите код страны происхождения и HS по умолчанию
Страна происхождения и код HS используются для расчета точных пошлин и налогов.
Если вы не указываете определенную страну происхождения или код HS, мы будем использовать значения по умолчанию, установленные в Dashboard.
Чтобы установить страну происхождения и код HS по умолчанию:
- Перейдите в Dashboard -> Settings -> Shipping -> Catalog.
- Для страны происхождения выберите страну, где производится большинство ваших продуктов.
- Для кода HS введите код HS вашего наиболее часто используемого продукта. Если у вас нет кода HS, перейдите к Classify в Dashboard и введите название и описание вашего продукта для создания точного кода HS.
Установите фрагмент Zonos JS
Фрагмент Zonos JS представляет собой интеграцию JavaScript на стороне клиента, которая обеспечивает глобальную функциональность оформления заказов на вашем сайте. Она служит мостом между вашей платформой электронной коммерции и сервисами Zonos, выполняя:
- Checkout Experience: отрисовывает пользовательский интерфейс оформления заказов и обрабатывает платежи.
- Location Services: обнаруживает местоположение посетителя и управляет конвертацией валюты.
- Cart Integration: подключается к вашей существующей системе корзины и заказов.
- Security: проверяет домены и аутентифицирует запросы API.
Фрагмент загружается асинхронно, чтобы избежать влияния на производительность вашего сайта. Он инициализируется с учетными данными API вашего хранилища и безопасно обрабатывает все взаимодействия на стороне клиента. Реализация предназначена для того, чтобы быть ненавязчивой, требуя минимальных изменений в существующем процессе оформления заказа.
Ниже приведен полный пример, который включает загрузку сценария, инициализацию и обработку событий для справки при интеграции Checkout.
(async function () { const timestamp = new Date().getTime(); const zonosScript = document.querySelector( `script[src*="https://cdn.jsdelivr.net/npm/@zonos/elements/dist/scripts/loadZonos.js"]`, ); if (!zonosScript) { const script = document.createElement('script'); script.src = `https://cdn.jsdelivr.net/npm/@zonos/elements/dist/scripts/loadZonos.js?timestamp=${timestamp}`; script.addEventListener('load', () => { window.Zonos.({ : { : () => { { : , }; }, : , }, : { : , : { .(); }, }, : , : , }); }); ..(script); } })();Note: Замените значения-заполнители (storeId, zonosApiKey, селекторы и т. д.) на ваши фактические значения из Zonos Dashboard.
Обработка кэширования браузера
Мы рекомендуем добавить временную метку или другой уникальный идентификатор к URL, чтобы убедиться, что сценарий не кэшируется браузером. Это гарантирует, что всегда загружается последняя версия сценария. Это показано на строке 10 в полном примере.
script.src = `https://cdn.jsdelivr.net/npm/@zonos/elements/dist/scripts/loadZonos.js?timestamp=${timestamp}`;Аутентифицируйте фрагмент Zonos JS
После загрузки сценария Zonos JS вам необходимо аутентифицировать его, передав открытый ключ API Zonos и ID хранилища в функцию Zonos.init. Открытый ключ API, используемый для аутентификации Checkout, предназначен для публикации, что означает, что его можно безопасно использовать в коде фронтенда без раскрытия конфиденциальной информации.
Чтобы найти ваш ID хранилища и ключ API, перейдите в Dashboard -> Settings -> Integrations. Убедитесь, что вы не используете Secret API key, так как он не предназначен для использования в коде фронтенда. Это показано на строках 29 и 30 полного примера.
Zonos.init({ // ... other fields zonosApiKey: 'Your API KEY', // Replace with your actual API key (found in Dashboard) storeId: 'Your STORE ID', // Replace with your actual store ID (found in Dashboard) // ... other fields});Обновите вашу политику безопасности контента (CSP)
Если ваш сайт устанавливает Content Security Policy, добавьте приведенные ниже домены к соответствующим директивам CSP. Эта политика применяется как к Checkout, так и к Hello - фрагмент Zonos загружает сценарии, таблицы стилей, шрифты, изображения и делает сетевые запросы, поэтому блокировка любого из этих ресурсов нарушит поток Checkout или отображение Hello. Список style-src также применяется к style-src-elem.
Note: Пропустите этот шаг, если ваш сайт не отправляет заголовок CSP. Только торговцы, которые применяют настраиваемый CSP на своих страницах, должны обновить его.
cdn.jsdelivr.net/npm/@zonoscdnjs.cloudflare.com/ajax/libs/zonos-elementsunpkg.com/@zonos/elementsjs.zonos.com*.js.zonos.comzonos-store-assets.s3.amazonaws.comjs.stripe.coma.stripecdn.comb.stripecdn.comc.stripecdn.comcheckout.stripe.comf.stripecdn.comhcaptcha.comhooks.stripe.comm.stripe.comm.stripe.networkpay.stripe.compayments.stripe.comq.stripe.comr.stripe.comНастройте Hello
Hello является обязательным при использовании Checkout.
Hello отвечает за обнаружение местоположения посетителя, языка и валюты, а также отображение соответствующей информации ему. Вы можете настроить все параметры Hello в Dashboard или в сценарии Zonos JS. Если вы уже настроили Hello в Dashboard, сценарий загрузит эти параметры и будет их использовать. Если вы укажете какие-либо значения в свойстве helloSettings функции Zonos.init, сценарий будет использовать эти значения вместо них, как показано ниже.
Настройте конвертацию валюты в Hello в сценарии JS
Hello использует селекторы CSS для идентификации элементов на вашем сайте, отображающих информацию о валюте. Передайте эти селекторы в свойство helloSettings.currencyElementSelector функции Zonos.init, чтобы Hello мог обнаружить и отобразить правильную валюту международного покупателя.
Вы можете использовать любой действительный селектор CSS здесь, например #price, .price для выбора нескольких разных элементов. Это показано на строках 23 и 24 полного примера.
Zonos.init({ // ... other fields helloSettings: { currencyElementSelector: '.price', // Replace with your actual selector }, // ... other fields});Автоматически откройте Hello при загрузке страницы
По умолчанию Hello откроется только при нажатии посетителем кнопки флага. Если вы хотите автоматически открыть Hello при загрузке страницы, вы можете вызвать функцию Zonos.openHelloDialog() после загрузки сценария Zonos. Это показано на строках 25 и 26 полного примера.
Zonos.init({ // ... other fields helloSettings: { // ... other hello settings onInitSuccess: () => { .(); }, },});Настройте правила отображения стран в Dashboard
Контролируйте, какие страны покупателей видят Hello, и какие страны появляются в раскрывающемся списке выбора страны из Dashboard. Перейдите в Dashboard -> Settings -> Hello и найдите раздел Country display rules.
Widget visibility
Контролируйте, какие страны покупателей видят виджет Hello. Выберите одно из базовых правил, а затем используйте списки Always show и Never show для переопределения конкретных стран.
- All countries - Каждая страна, которую поддерживает Hello.
- Only shippable countries - Страны, в которые вы отправляете товары из параметров доставки.
- Always show - Страны, которые всегда отображаются, даже если базовое правило их исключает.
- Never show - Страны, которые никогда не отображаются, даже если базовое правило их включает.

Country selector
Контролируйте, какие страны появляются в раскрывающемся списке выбора страны Hello, используя те же базовые правила плюс переопределения Always show и Never show.

Настройте Checkout
Checkout отвечает за то, чтобы позволить клиенту ввести информацию о доставке и выставлении счетов, рассчитать финальную стоимость, собрать платеж и завершить заказ.
Checkout будет обмениваться контекстными данными с Hello, такими как местоположение посетителя, язык и валюта. Это гарантирует, что опыт клиента согласован на всем протяжении всего процесса покупок.
Вы можете настроить все параметры Checkout как в Dashboard, так и в сценарии Zonos JS. Если вы уже настроили Checkout в Dashboard, сценарий загрузит эти параметры и будет их использовать. Если вы укажете какие-либо значения в свойстве checkoutSettings функции Zonos.init, сценарий будет использовать эти значения вместо них.
Настройте кнопку 'place order' в сценарии JS
Сценарий Zonos JS автоматически распознает международных покупателей и направляет их в процесс Checkout. Однако вам потребуется настроить кнопку 'place order' на вашей платформе для открытия Checkout при нажатии. Это можно сделать, передав селектор CSS в свойство checkoutSettings.placeOrderButtonSelector функции Zonos.init.
Если у вас есть несколько кнопок, которые можно использовать для размещения заказа, убедитесь, что вы передали селектор для каждой кнопки. Например, #placeOrder, .place-order.
Это показано на строке 21 полного примера.
Zonos.init({ // ... other fields checkoutSettings: { // ... other fields placeOrderButtonSelector: '#placeOrder', // Replace with your actual selector(s) },});Безопасно создавайте детали корзины на стороне сервера
Чтобы отобразить детали корзины клиенту, вам необходимо создать функцию на стороне сервера, которая вызовет API Zonos для создания корзины, а затем вернет этот ID корзины вашему фронтенду. Это гарантирует, что детали корзины не раскрываются клиенту способом, который может быть подделан.
Ваш вызов API на стороне сервера будет использовать маркер секретных учетных данных GraphQL, который отличается от открытого маркера, который вы используете для аутентификации сценария Zonos JS. Этот маркер можно получить в Dashboard -> Settings -> Integrations. Секретный маркер должен быть передан как заголовок в вашем вызове API.
Мутация cartCreate принимает список элементов, которые должны быть отформатированы в соответствии с схемой элемента корзины.
// Create new cart from serversideasync function createCart() { /** * Full cart mutation schema: https://zonos.com/developer/mutations/cartCreate * */ const graphql = JSON.stringify({ query: `mutation cartCreate($input: CartCreateInput!){ cartCreate(input: $input) { id adjustments { amount currencyCode description productId sku type } items { id name amount currencyCode quantity sku description metadata { key value } } metadata { key value } }}`, variables: { /** * input for the cartCreate is this schema https://zonos.com/developer/types/CartCreateInput */ input: { /** * Cart adjustment input: https://zonos.com/developer/types/CartAdjustmentInput */ adjustments: [ { amount: -10, currencyCode: 'USD', /** * Enum value: https://zonos.com/developer/types/CartAdjustmentType */ type: 'CART_TOTAL', }, ], /** * Cart item input: https://zonos.com/developer/types/ItemInput */ items: [ { name: 'Item 1', amount: 150.99, currencyCode: 'USD', description: 'Item 1 description', quantity: 2, }, ], /** * Cart metadata input: https://zonos.com/developer/types/CartMetadataInput */ metadata: [ { : , : , }, ], }, }, }); response = (, { : , : { : , : , }, : graphql, }); { data } = response.(); data..; }Мы предлагаем создать конечную точку API на вашем сервере, а затем вызвать эту конечную точку из интеграции фронтенда JS, что подробно описано в следующем шаге.
Передайте ID корзины в Checkout через фронтенд
После создания корзины на стороне сервера вам нужно передать ID корзины сценарию Zonos JS. Это можно сделать, используя обратный вызов createCartId, который является частью функции Zonos.init. Checkout затем безопасно получит детали корзины из Zonos при открытии, предотвращая любое изменение корзины. См. пример кода ниже.
Значение createCartId не может быть статическим значением, это должна быть функция.
Zonos.init({ // ... other fields checkoutSettings: { // Replace with your actual selector(s) createCartId: async () => { const response = await fetch('https://api.merchant.com/api/get-cart', { method: 'POST', headers: { 'Content-Type': 'application/json', }, }); const json = await response.json(); return json.id; // Only need to return the cart ID }, },});(Optional) Display a notice under Order total
Если вам нужно отобразить короткое динамическое сообщение внутри Checkout - например, нормативное раскрытие при наличии определенного продукта в корзине - вы можете вернуть массив customMessage из обратного вызова createCartId. Каждая запись в массиве отрисовывается на собственной строке одного информационного баннера прямо под Order total.
Синтаксис ссылки Markdown - [link label], за которым следует (https://example.com) - отрисовывается как тег якоря, поэтому покупатели могут щелкнуть по нему. Обычные URL-адреса https:// в тексте также автоматически связываются. Все остальное отрисовывается как простой текст, поэтому HTML в строках удаляется, а не выполняется.
Только один баннер показывается за раз Checkout, независимо от количества строк, которые вы передаете.
Zonos.init({ // ... other fields checkoutSettings: { createCartId: async () => { const response = await fetch( 'https://api.merchant.com/api/get-zonos-cart', { method: 'POST', headers: { 'Content-Type': 'application/json', }, }, ); const json = await response.json(); return { cartId: json.id, // Each item is rendered on a new line of the same info banner. // Markdown links `[text](url)` become `<a>` tags. customMessage: [ 'Some items in your cart are subject to California regulations.', 'Please review the required notice [here](https://oag.ca.gov/prop65).', ], }; }, },});Note: Текст сообщения отрисовывается как простой текст - теги HTML в строках удаляются, поэтому интерпретируется только синтаксис ссылки Markdown. Решите, включать ли
customMessageна стороне сервера на основе содержимого корзины, чтобы баннер появлялся только когда это необходимо.
(Optional) Programmatically trigger Zonos checkout
Если у вас есть пользовательская логика и вам нужно запустить оформление заказа Zonos программным способом, вы можете использовать функцию Zonos.triggerCheckoutInternational() для открытия окна оформления заказа Zonos после инициализации Zonos. Это вызовет обратный вызов createCartId, определенный в Zonos.init выше, и откроет окно оформления заказа Zonos.
// For example: During your domestic checkout flow, trigger Zonos checkout when the user selects a non-domestic country (e.g., not "US")const domesticCountry = 'US';document.querySelector('.country-select').addEventListener('change', e => { const country = e.target.value; if (country !== domesticCountry) { Zonos.triggerCheckoutInternational(); }});(Optional) Always trigger Zonos checkout selector
Если вы хотите разделить процесс оформления заказа для внутренних и международных покупателей, вы можете добавить кнопку International checkout на свой сайт. Вместо того, чтобы вручную запускать Checkout Zonos с помощью Zonos.triggerCheckoutInternational, вы можете настроить Zonos.init с соответствующим селектором. Селектор будет отключен до инициализации Zonos, когда кнопка нажимается, она автоматически запустит оформление заказа Zonos. Это вызовет обратный вызов createCartId, определенный в Zonos.init, и откроет окно оформления заказа Zonos.
Zonos.init({ // ... other fields checkoutSettings: { // ... other fields alwaysTriggerInternationalCheckoutSelector: '#trigger-zonos-checkout', // Replace with your actual selector, button bound to this selector will always trigger Zonos checkout },});(Optional) Track the checkout funnel with GA4 or Facebook Pixel
Zonos Checkout может передавать полную воронку оформления заказов вашим существующим инструментам аналитики. Для каждого шага Zonos издает:
- Исходное событие
zonos-checkout-...GA4 (черезgtag('event', ...)) и Meta как пользовательское событие (черезfbq('trackCustom', ...)). - Соответствующее стандартное событие Meta, если оно существует -
InitiateCheckout,AddPaymentInfoиPurchase- чтобы встроенная оптимизация Meta и отчеты о конверсии работали из коробки.
Как события попадают к вашим поставщикам, зависит от того, как Checkout отрисовывается на вашем сайте. Выберите путь, который соответствует вашей интеграции.
Native integration (Checkout renders directly on your site)
Когда пользовательский элемент <zonos-checkout> монтируется на вашей собственной странице (по умолчанию для описанной выше интеграции сценария Zonos JS), window.gtag и window.fbq вашей страницы уже находятся в области видимости. Zonos вызывает их непосредственно - передача релея или ID пикселя не требуется.
Setup:
- Убедитесь, что ваша страница уже имеет загруженный GA4 base tag и/или Meta Pixel base code (так же, как вы бы отслеживали любую другую страницу на вашем сайте).
- Включите поставщиков, которых вы хотите, в панели управления Zonos в разделе Checkout settings → Tracking (Google Analytics, Facebook Pixel или оба).
Это все. Никакой скрипт релея, никакого customHTML, никаких дополнительных ID для передачи - Zonos обнаруживает gtag / fbq на странице и непосредственно запускает события.
Iframe integration (legacy Checkout iframe on iglobalstores.com)
Когда Checkout размещается в iframe на другом источнике, он не может получить доступ к gtag / fbq вашей страницы напрямую. Zonos публикует небольшой скрипт релея - analyticsRelayOnInit.js - который прослушивает события postMessage из iframe Checkout и передает их поставщикам, которые у вас есть на вашей странице. Один релей обрабатывает как Google Analytics, так и Facebook Pixel одновременно.
Setup:
- Включите поставщиков, которых вы хотите, в панели управления Zonos в разделе Checkout settings → Tracking.
- Добавьте GA4 base tag и/или Meta Pixel base code в
<head>страницы, которая размещает iframe Checkout. - Добавьте скрипт релея после тегов поставщика:
async src="https://cdn.jsdelivr.net/npm/@zonos/elements/dist/scripts/analyticsRelayOnInit.js">- Передайте соответствующие ID через ваш
customHTMLCheckout, чтобы релей знал, для какого свойства/пикселя он будет запускаться:
window.Zonos.googleAnalyticId = 'G-XXXXXXXXXX'; window.Zonos.facebookPixelId = 'YOUR_PIXEL_ID';Пошаговые инструкции для iframe, полный справочник событий (включая сопоставление полезных данных purchase / Purchase) и советы по отладке см. в разделе:
Синхронизируйте отслеживание заказов и статус в Dashboard
Чтобы синхронизировать заказы между вашей системой и Zonos Dashboard, реализуйте эти вызовы API и вебхуки:
Required Mutations
| Mutation↕ | Description↕ |
|---|---|
orderUpdateAccountOrderNumber | Syncs your native account number with Dashboard. Docs → |
orderAddTrackingNumber | Required only if you're not printing labels in Dashboard. Ensures tracking shows in Dashboard so Zonos can guarantee your landed cost calculations. Docs → |
Required Webhooks
Протестируйте вашу интеграцию
Перед внедрением своей интеграции Checkout важно тщательно протестировать все аспекты интеграции, чтобы обеспечить гладкий опыт клиента. Это включает тестирование потока оформления заказов, обработки платежей, создания заказа и функциональности вебхуков.
Следуйте нашему руководству по тестированию для проверки того, что ваша интеграция работает правильно, и для выявления и исправления любых проблем перед запуском в производство.
Часто задаваемые вопросы
Ниже приведены некоторые часто задаваемые вопросы о процессе интеграции.
How does Zonos handle order confirmation?
Настройте опыт после покупки в Dashboard -> Settings -> Checkout settings в разделе Success page type. Доступны три варианта:
- Show Zonos success page (по умолчанию, рекомендуется) - Zonos отображает встроенную страницу спасибо после размещения заказа. Страница всегда отображается, даже если заказ не импортируется в вашу систему, поэтому покупатель всегда получает подтверждение.
- Redirect to a success page - Zonos ждет на короткой экран "Order complete" до создания заказа, а затем перенаправляет на ваш настроенный URL успеха с добавленными
zOrderNumber(иorderIdдля унаследованных корзин) в качестве параметров запроса. - Close the checkout modal - Zonos закрывает свой модал после получения платежа. Если вы также настроите URL успеха, Zonos перенаправит на этот URL сразу после сбора Stripe платежа - без ожидания создания заказа - и добавит
zonosCheckoutSessionIdв качестве параметра запроса. Используйте этот вариант, когда вы хотите самую быструю передачу на вашу собственную страницу успеха.
Looking up the order from zonosCheckoutSessionId
Когда вы используете Close the checkout modal с URL перенаправления, заказ может занять несколько секунд для присоединения к сеансу оформления заказа после перенаправления. Прочитайте zonosCheckoutSessionId из URL и опросите запрос checkoutSession GraphQL с вашего сервера, используя ваш маркер секретных учетных данных, пока заказ не будет готов. Никогда не вызывайте это из браузера - маркер секретных учетных данных должен оставаться на стороне сервера.
query getCheckoutSession($id: String!) { checkoutSession ) order idОтправьте запрос на https://api.zonos.com/graphql с вашим маркером секретных учетных данных из Dashboard -> Settings -> Integrations, переданным как заголовок запроса credentialToken.
Can I be notified when an order is created?
Да. Если вы хотите получить уведомления при создании заказа, в Dashboard в разделе Email Checkout settings вы можете ввести адрес электронной почты членов команды, которые должны быть уведомлены при создании, отправке или отмене заказа.
Пользовательская интеграция
Создайте полнофункциональную интеграцию Checkout на свой пользовательский сайт.