Suivez cette liste de contrôle complète pour configurer votre compte Zonos Dashboard et intégrer Zonos Checkout dans votre site ou plateforme personnalisé.
1
Créer un compte Zonos
Pour commencer, veuillez contacter notre équipe commerciale pour créer un compte et signer un accord. Une fois l'accord signé, vous recevrez deux micro-dépôts sur votre compte qui devront être vérifiés.
Veuillez envoyer ces montants de micro-dépôts par e-mail à accounting@zonos.com avec votre Store ID Dashboard (mettez votre représentant commercial en copie).
Une fois vérifiés, vos coordonnées bancaires s'afficheront dans Dashboard -> Settings -> Billing.
2
Configurer Dashboard et les paramètres Checkout
Après avoir créé votre compte Zonos, vous devrez configurer les paramètres dans Dashboard pour garantir que Checkout fonctionne correctement avec votre boutique. Cette section couvre toutes les configurations Dashboard essentielles.
Connectez un compte bancaire pour recevoir des versements ponctuels de Checkout. Les versements sont traités quotidiennement dans un délai de 2 jours après la capture du paiement. Pour ce faire, suivez ces étapes :
Vous serez redirigé vers un portail Stripe pour terminer la configuration et fournir les informations suivantes :
Informations du compte bancaire.
EIN de l'entreprise.
Numéro de sécurité sociale d'un propriétaire détenant 25 % de l'entreprise. Pour plus de détails sur la raison de cette exigence, consultez la documentation de Stripe.
Note : Si vous devez mettre à jour votre calendrier de versements, veuillez contacter support@zonos.com
Le script Zonos JS nécessite une liste de domaines autorisés pour des raisons de sécurité. Cela empêche les sites non autorisés de charger le script et garantit qu'il ne s'exécute que sur vos domaines approuvés. Sans cette configuration, le script renverra des erreurs d'autorisation.
Sous URLs, ajoutez votre domaine complet et tous les sous-domaines où Checkout sera utilisé. Par exemple, si votre domaine est example.com, vous devez ajouter example.com et test.example.com.
Pour établir un devis d'expédition au paiement, vous devrez connecter un transporteur à votre compte Zonos. Cela vous permettra d'activer des niveaux de service d'expédition spécifiques au paiement.
Pour connecter un transporteur, suivez ces étapes :
Accédez à Dashboard -> Settings -> Shipping -> Rates
Cliquez sur Add carrier
Suivez les instructions de configuration du transporteur.
Pour plus de détails sur la connexion de comptes transporteurs, consultez notre documentation.
Les zones d'expédition vous permettent de configurer quels transporteurs et niveaux de service d'expédition sont disponibles pour différentes régions du monde.
Pour configurer les zones d'expédition, suivez ces étapes :
Accédez à Dashboard -> Settings -> Shipping -> Locations
Cliquez sur New zone
Saisissez un nom de zone et sélectionnez les pays vers lesquels vous souhaitez expédier.
Sélectionnez le transporteur et le niveau de service que vous souhaitez proposer.
Pour plus de détails sur les zones d'expédition, consultez notre documentation.
Le pays d'origine et le code HS sont utilisés pour calculer des droits et taxes précis.
Si vous ne fournissez pas de pays d'origine ou de code HS spécifique, nous utiliserons les valeurs de secours configurées dans Dashboard.
Pour définir votre pays d'origine et code HS de secours :
Accédez à Dashboard -> Settings -> Shipping -> Catalog.
Pour le pays d'origine, sélectionnez le pays où la majorité de vos produits sont fabriqués.
Pour le code HS, saisissez le code HS de votre produit le plus courant. Si vous n'avez pas de code HS, accédez à Classify dans Dashboard et saisissez le nom et la description de votre produit pour générer un code HS précis.
3
Installer le snippet Zonos JS
Le snippet Zonos JS est une intégration JavaScript côté client qui active la fonctionnalité de paiement global sur votre site. Il sert de pont entre votre plateforme e-commerce et les services Zonos, gérant :
Expérience Checkout : Affiche l'interface de paiement et traite les paiements.
Services de localisation : Détecte l'emplacement du visiteur et gère la conversion de devise.
Intégration du panier : Se connecte à votre système de panier et de commande existant.
Sécurité : Valide les domaines et authentifie les requêtes API.
Le snippet est chargé de manière asynchrone pour éviter tout impact sur les performances de votre site. Il s'initialise avec les identifiants API de votre boutique et gère toutes les interactions côté client de manière sécurisée. L'implémentation est conçue pour être non intrusive, nécessitant des modifications minimales de votre flux de paiement existant.
Ci-dessous se trouve un exemple complet incluant le chargement du script, l'initialisation et la gestion des événements à utiliser comme référence lors de l'intégration de Checkout.
Nous recommandons d'ajouter un horodatage ou un autre identifiant unique à l'URL pour garantir que le script n'est pas mis en cache par le navigateur. Cela garantira que la dernière version du script est toujours chargée. Ceci est illustré à la ligne 10 de l'exemple complet.
Une fois le script Zonos JS chargé, vous devez l'authentifier en passant une clé API public Zonos et un store ID à la fonction Zonos.init. La clé API public utilisée pour authentifier Checkout est conçue pour être publiable, ce qui signifie qu'elle peut être utilisée en toute sécurité dans le code front-end sans exposer d'informations sensibles.
Pour trouver votre store ID et votre clé API, accédez à Dashboard -> Settings -> Integrations. Assurez-vous de ne pas utiliser une Secret API key, car elle n'est pas conçue pour être utilisée dans le code front-end. Ceci est illustré aux lignes 29 et 30 de l'exemple complet.
1Zonos.init({
2// ... other fields
3zonosApiKey: "Your API KEY", // Replace with your actual API key (found in Dashboard)
4storeId: "Your STORE ID", // Replace with your actual store ID (found in Dashboard)
Si votre site définit une Content Security Policy, ajoutez les domaines ci-dessous aux directives CSP correspondantes. Cette politique s'applique à Checkout et Hello — le snippet Zonos charge des scripts, des feuilles de style, des polices, des images et effectue des requêtes réseau, bloquer l'une de ces ressources interrompra le flux Checkout ou l'affichage Hello. La liste style-src s'applique également à style-src-elem.
Note : Ignorez cette étape si votre site n'envoie pas d'en-tête CSP. Seuls les marchands qui appliquent une CSP personnalisée sur leurs pages doivent la mettre à jour.
1cdn.jsdelivr.net/npm/@zonos
2cdnjs.cloudflare.com/ajax/libs/zonos-elements
3unpkg.com/@zonos/elements
4js.zonos.com
5*.js.zonos.com
6zonos-store-assets.s3.amazonaws.com
7js.stripe.com
8a.stripecdn.com
9b.stripecdn.com
10c.stripecdn.com
11checkout.stripe.com
12f.stripecdn.com
13hcaptcha.com
14hooks.stripe.com
15m.stripe.com
16m.stripe.network
17pay.stripe.com
18payments.stripe.com
19q.stripe.com
20r.stripe.com
4
Configurer Hello
Hello est requis lors de l'utilisation de Checkout.
Hello est responsable de la détection de l'emplacement, de la langue et de la devise du visiteur, et de l'affichage des informations appropriées. Vous pouvez configurer tous les paramètres Hello dans Dashboard ou dans le script Zonos JS. Si vous avez déjà configuré Hello dans Dashboard, le script chargera ces paramètres et les utilisera. Si vous spécifiez des valeurs dans la propriété helloSettings de la fonction Zonos.init, le script utilisera ces valeurs à la place, comme illustré ci-dessous.
Hello utilise des sélecteurs CSS pour identifier les éléments de votre site qui affichent des informations de devise. Passez ces sélecteurs à la propriété helloSettings.currencyElementSelector de la fonction Zonos.init afin que Hello puisse détecter et afficher la devise correcte de l'acheteur international.
Vous pouvez utiliser n'importe quel sélecteur CSS valide ici, par exemple #price, .price pour sélectionner plusieurs éléments différents. Ceci est illustré aux lignes 23 et 24 de l'exemple complet.
1Zonos.init({
2// ... other fields
3helloSettings: {
4currencyElementSelector: ".price", // Replace with your actual selector
Par défaut, Hello ne s'ouvrira que lorsque le visiteur clique sur le bouton drapeau. Si vous souhaitez ouvrir Hello automatiquement au chargement de la page, vous pouvez appeler la fonction Zonos.openHelloDialog() une fois le script Zonos chargé. Ceci est illustré aux lignes 25 et 26 de l'exemple complet.
Contrôlez quels pays acheteurs voient Hello et quels pays apparaissent dans le menu déroulant du sélecteur de pays depuis Dashboard. Accédez à Dashboard -> Settings -> Hello et trouvez la section Country display rules.
Contrôlez quels pays acheteurs voient le widget Hello. Choisissez l'une des règles de base, puis utilisez les listes Always show et Never show pour remplacer des pays spécifiques.
All countries - Tous les pays pris en charge par Hello.
Only shippable countries - Pays vers lesquels vous expédiez selon vos paramètres d'expédition.
Always show - Pays qui apparaissent toujours, même si la règle de base les exclut.
Never show - Pays qui n'apparaissent jamais, même si la règle de base les inclut.
Contrôlez quels pays apparaissent dans le menu déroulant du sélecteur de pays Hello, en utilisant les mêmes règles de base plus les remplacements Always show et Never show.
Options JS obsolètes
Les propriétés showForCountries et showCountryList sur helloSettings sont obsolètes. Configurez plutôt les règles d'affichage des pays dans Dashboard — les valeurs définies là seront chargées automatiquement par le script Zonos JS.
5
Configurer Checkout
Checkout est responsable de permettre au client de saisir ses informations d'expédition et de facturation, de calculer le landed cost, de collecter le paiement et de finaliser la commande.
Checkout partagera des données contextuelles avec Hello, telles que l'emplacement, la langue et la devise du visiteur. Cela garantit que l'expérience du client est cohérente tout au long du processus d'achat.
Vous pouvez configurer tous les paramètres Checkout dans Dashboard et le script Zonos JS. Si vous avez déjà configuré Checkout dans Dashboard, le script chargera ces paramètres et les utilisera. Si vous spécifiez des valeurs dans la propriété checkoutSettings de la fonction Zonos.init, le script utilisera ces valeurs à la place.
Le script Zonos JS reconnaîtra automatiquement les acheteurs internationaux et les dirigera vers le flux Checkout. Cependant, vous devrez configurer le bouton « place order » sur votre plateforme pour ouvrir Checkout lorsqu'il est cliqué. Cela peut se faire en passant un sélecteur CSS à la propriété checkoutSettings.placeOrderButtonSelector de la fonction Zonos.init.
Si vous avez plusieurs boutons pouvant être utilisés pour passer une commande, assurez-vous de passer un sélecteur pour chaque bouton. Par exemple, #placeOrder, .place-order.
Ceci est illustré à la ligne 21 de l'exemple complet.
1Zonos.init({
2// ... other fields
3checkoutSettings: {
4// ... other fields
5placeOrderButtonSelector: "#placeOrder", // Replace with your actual selector(s)
Pour afficher les détails du panier au client, vous devez créer une fonction côté serveur qui appellera l'API Zonos pour créer un panier, puis renverra cet ID de panier à votre front-end. Cela garantira que les détails du panier ne sont pas exposés au client d'une manière pouvant être manipulée.
Votre appel API côté serveur utilisera un jeton d'identification secret GraphQL, différent du jeton public que vous utilisez pour authentifier le script Zonos JS. Ce jeton peut être récupéré dans Dashboard -> Settings -> Integrations. Le jeton secret doit être transmis en tant qu'en-tête dans votre appel API.
La mutation cartCreate accepte une liste d'articles, qui doivent être formatés selon le schéma d'article de panier.
1// Create new cart from serverside
2asyncfunctioncreateCart() {
3/**
4 * Full cart mutation schema: https://zonos.com/developer/mutations/cartCreate
5 * */
6const graphql = JSON.stringify({
7query: `
8mutation cartCreate($input: CartCreateInput!){
9 cartCreate(input: $input) {
10 id
11 adjustments {
12 amount
13 currencyCode
14 description
15 productId
16 sku
17 type
18 }
19 items {
20 id
21 name
22 amount
23 currencyCode
24 quantity
25 sku
26 description
27 metadata {
28 key
29 value
30 }
31 }
32 metadata {
33 key
34 value
35 }
36 }
37}`,
38variables: {
39/**
40 * input for the cartCreate is this schema https://zonos.com/developer/types/CartCreateInput
Nous suggérons de créer un point de terminaison API côté serveur, puis d'appeler ce point de terminaison depuis votre intégration JS front-end, ce qui est détaillé à l'étape suivante.
Une fois que vous avez créé un panier côté serveur, vous devez passer l'ID de panier au script Zonos JS. Cela peut se faire en utilisant le callback createCartId qui fait partie de la fonction Zonos.init. Checkout récupérera ensuite de manière sécurisée les détails du panier depuis Zonos lors de l'ouverture, empêchant toute manipulation du panier. Consultez l'exemple de code ci-dessous.
La valeur de createCartId ne peut pas être une valeur statique, elle doit être une fonction.
Si vous devez afficher un message court et dynamique dans Checkout — par exemple, une divulgation réglementaire lorsqu'un produit spécifique est dans le panier — vous pouvez renvoyer un tableau customMessage depuis le callback createCartId. Chaque entrée du tableau est rendue sur sa propre ligne d'une bannière d'information unique directement sous Order total.
La syntaxe de lien Markdown — [link label] suivie de (https://example.com) — est rendue comme une balise d'ancrage, permettant aux acheteurs de cliquer. Les URL https:// simples dans le texte sont également auto-liées. Tout le reste est rendu en texte brut, le HTML dans les chaînes est donc échappé plutôt qu'exécuté.
Une seule bannière est affichée par Checkout, quel que soit le nombre de lignes que vous passez.
1Zonos.init({
2// ... other fields
3checkoutSettings: {
4createCartId: async () => {
5const response = awaitfetch(
6"https://api.merchant.com/api/get-zonos-cart",
7 {
8method: "POST",
9headers: {
10"Content-Type": "application/json",
11 },
12 },
13 );
14const json = await response.json();
15
16return {
17cartId: json.id,
18// Each item is rendered on a new line of the same info banner.
19// Markdown links `[text](url)` become `<a>` tags.
20customMessage: [
21"Some items in your cart are subject to California regulations.",
22"Please review the required notice [here](https://oag.ca.gov/prop65).",
23 ],
24 };
25 },
26 },
27});
Note : Le texte du message est rendu en texte brut — les balises HTML dans les chaînes sont échappées, seule la syntaxe de lien Markdown est donc interprétée. Décidez d'inclure ou non customMessage côté serveur en fonction du contenu du panier afin que la bannière n'apparaisse que lorsqu'elle est pertinente.
Si vous avez une logique personnalisée et devez déclencher Checkout Zonos par programmation, vous pouvez utiliser la fonction Zonos.triggerCheckoutInternational() pour ouvrir la fenêtre Checkout Zonos après l'initialisation de Zonos. Cela invoquera le callback createCartId défini dans Zonos.init ci-dessus et ouvrira la fenêtre Checkout Zonos.
1// For example: During your domestic checkout flow, trigger Zonos checkout when the user selects a non-domestic country (e.g., not "US")
2const domesticCountry = "US";
3document.querySelector(".country-select").addEventListener("change", e => {
Si vous souhaitez séparer le processus de paiement pour les acheteurs domestiques et internationaux, vous pouvez ajouter un bouton International checkout à votre site. Au lieu de déclencher manuellement Zonos Checkout avec Zonos.triggerCheckoutInternational, vous pouvez configurer Zonos.init avec le sélecteur approprié. Le sélecteur sera désactivé jusqu'à l'initialisation de Zonos ; lorsque le bouton est cliqué, il déclenchera automatiquement Checkout Zonos. Cela invoquera le callback createCartId défini dans Zonos.init et ouvrira la fenêtre Checkout Zonos.
1Zonos.init({
2// ... other fields
3checkoutSettings: {
4// ... other fields
5alwaysTriggerInternationalCheckoutSelector: "#trigger-zonos-checkout", // Replace with your actual selector, button bound to this selector will always trigger Zonos checkout
Zonos Checkout peut transmettre l'intégralité de l'entonnoir Checkout à vos outils analytics existants. Pour chaque étape, Zonos émet :
L'événement original zonos-checkout-... vers GA4 (via gtag('event', ...)) et vers Meta comme événement personnalisé (via fbq('trackCustom', ...)).
L'événement standard correspondant vers Meta lorsqu'il existe — InitiateCheckout, AddPaymentInfo et Purchase — afin que l'optimisation intégrée et le reporting de conversion de Meta fonctionnent immédiatement.
La façon dont les événements parviennent à vos fournisseurs dépend de la façon dont Checkout est rendu sur votre site. Choisissez le chemin correspondant à votre intégration.
Lorsque l'élément personnalisé <zonos-checkout> est monté sur votre propre page (par défaut pour l'intégration du script Zonos JS décrite ci-dessus), les window.gtag et window.fbq propres à la page sont déjà dans la portée. Zonos les appelle directement — aucun relais ou transfert d'ID de pixel n'est nécessaire.
Configuration :
Assurez-vous que votre page a déjà le tag de base GA4 et/ou le code de base Meta Pixel chargé (de la même manière que vous suivez toute autre page de votre site).
Activez les fournisseurs souhaités dans le dashboard Zonos sous Checkout settings → Tracking (Google Analytics, Facebook Pixel, ou les deux).
C'est tout. Pas de script relais, pas de customHTML, pas d'ID supplémentaires à passer — Zonos détecte gtag / fbq sur la page et déclenche les événements directement.
Lorsque Checkout est hébergé dans une iframe sur une origine différente, il ne peut pas atteindre directement le gtag / fbq de votre page. Zonos publie un petit script relais — analyticsRelayOnInit.js — qui écoute les événements postMessage de l'iframe Checkout et les transmet aux fournisseurs présents sur votre page. Un seul relais gère GA4 et Facebook Pixel en même temps.
Configuration :
Activez les fournisseurs souhaités dans le dashboard Zonos sous Checkout settings → Tracking.
Ajoutez le tag de base GA4 et/ou le code de base Meta Pixel au <head> de la page qui héberge l'iframe Checkout.
Ajoutez le script relais après les tags des fournisseurs :
Passez les ID correspondants via votre customHTML Checkout afin que le relais sache quelle propriété/pixel cibler :
1
2 window.Zonos.googleAnalyticId = "G-XXXXXXXXXX";
3 window.Zonos.facebookPixelId = "YOUR_PIXEL_ID";
4
Pour des instructions iframe étape par étape, la référence complète des événements (y compris le mappage de charge utile purchase / Purchase) et des conseils de débogage, consultez :
Synchronise votre numéro de compte natif avec Dashboard. Docs →
orderAddTrackingNumber
Requis uniquement si vous n'imprimez pas les étiquettes dans Dashboard. Garantit que le suivi s'affiche dans Dashboard afin que Zonos puisse garantir vos calculs de landed cost. Docs →
Nécessaire pour envoyer les commandes Checkout à votre plateforme native. Docs →
ORDER_STATUS_CHANGED
Maintient votre système synchronisé avec Zonos lorsque les statuts de commande changent (p. ex., fulfilled, canceled). Docs →
7
Tester votre intégration
Avant de passer en production avec votre intégration Checkout, il est important de tester minutieusement tous les aspects de l'intégration pour garantir une expérience client fluide. Cela inclut le test du flux de paiement, du traitement des paiements, de la création de commande et de la fonctionnalité webhook.
Suivez notre guide de test pour vérifier que votre intégration fonctionne correctement et identifier et corriger tout problème avant le lancement en production.
Questions fréquentes
Voici quelques questions fréquentes sur le processus d'intégration.
Configurez l'expérience post-achat dans Dashboard -> Settings -> Checkout settings sous Success page type. Trois options sont disponibles :
Show Zonos success page (par défaut, recommandé) — Zonos affiche une page de remerciement intégrée après la commande. La page est toujours affichée, même si la commande échoue à l'importation dans votre système, afin que l'acheteur obtienne toujours une confirmation.
Redirect to a success page — Zonos attend sur un bref écran « Order complete » jusqu'à la création de la commande, puis redirige vers votre URL de succès configurée avec zOrderNumber (et orderId pour les paniers hérités) ajoutés comme paramètres de requête.
Close the checkout modal — Zonos ferme sa modale une fois le paiement capturé. Si vous configurez également une URL de succès, Zonos redirige vers cette URL immédiatement après que Stripe collecte le paiement — sans attendre la création de la commande — et ajoute zonosCheckoutSessionId comme paramètre de requête. Utilisez cette option lorsque vous souhaitez le transfert le plus rapide vers votre propre page de succès.
Lorsque vous utilisez Close the checkout modal avec une URL de redirection, la commande peut prendre quelques secondes à s'attacher à la session de paiement après la redirection. Lisez zonosCheckoutSessionId depuis l'URL et interrogez la requête GraphQL checkoutSession depuis votre serveur à l'aide de votre jeton d'identification secret jusqu'à ce que la commande soit prête. N'appelez jamais ceci depuis le navigateur — le jeton d'identification secret doit rester côté serveur.
1query getCheckoutSession(: String
2checkoutSession )
3order
4id
Envoyez la requête à https://api.zonos.com/graphql avec votre jeton d'identification secret depuis Dashboard -> Settings -> Integrations passé comme en-tête de requête credentialToken.
Oui. Si vous souhaitez recevoir des notifications lorsqu'une commande est créée, dans Dashboard sous la section Email des Checkout settings, vous pouvez saisir l'adresse e-mail des membres de l'équipe à notifier lorsqu'une commande est créée, expédiée ou annulée.
Intégration personnalisée
Intégration personnalisée
Créez une intégration Checkout de bout en bout dans votre site personnalisé.
Liste de contrôle d'intégration
Suivez cette liste de contrôle complète pour configurer votre compte Zonos Dashboard et intégrer Zonos Checkout dans votre site ou plateforme personnalisé.
Créer un compte Zonos
Pour commencer, veuillez contacter notre équipe commerciale pour créer un compte et signer un accord. Une fois l'accord signé, vous recevrez deux micro-dépôts sur votre compte qui devront être vérifiés.
Veuillez envoyer ces montants de micro-dépôts par e-mail à accounting@zonos.com avec votre Store ID Dashboard (mettez votre représentant commercial en copie).
Une fois vérifiés, vos coordonnées bancaires s'afficheront dans Dashboard -> Settings -> Billing.
Configurer Dashboard et les paramètres Checkout
Après avoir créé votre compte Zonos, vous devrez configurer les paramètres dans Dashboard pour garantir que Checkout fonctionne correctement avec votre boutique. Cette section couvre toutes les configurations Dashboard essentielles.
Configurer les versements
Connectez un compte bancaire pour recevoir des versements ponctuels de Checkout. Les versements sont traités quotidiennement dans un délai de 2 jours après la capture du paiement. Pour ce faire, suivez ces étapes :
Configurer les domaines autorisés
Le script Zonos JS nécessite une liste de domaines autorisés pour des raisons de sécurité. Cela empêche les sites non autorisés de charger le script et garantit qu'il ne s'exécute que sur vos domaines approuvés. Sans cette configuration, le script renverra des erreurs d'autorisation.
Pour configurer cela :
example.com, vous devez ajouterexample.comettest.example.com.Personnaliser les paramètres de marque
Configurez vos paramètres de marque dans Dashboard pour correspondre à l'apparence de votre boutique.
Pour ce faire, suivez ces étapes :
Pour plus d'informations sur les paramètres de marque, consultez notre documentation.
Connecter un transporteur
Pour établir un devis d'expédition au paiement, vous devrez connecter un transporteur à votre compte Zonos. Cela vous permettra d'activer des niveaux de service d'expédition spécifiques au paiement.
Pour connecter un transporteur, suivez ces étapes :
Pour plus de détails sur la connexion de comptes transporteurs, consultez notre documentation.
Configurer les zones d'expédition
Les zones d'expédition vous permettent de configurer quels transporteurs et niveaux de service d'expédition sont disponibles pour différentes régions du monde.
Pour configurer les zones d'expédition, suivez ces étapes :
Pour plus de détails sur les zones d'expédition, consultez notre documentation.
Configurer un pays d'origine et un code HS de secours
Le pays d'origine et le code HS sont utilisés pour calculer des droits et taxes précis.
Si vous ne fournissez pas de pays d'origine ou de code HS spécifique, nous utiliserons les valeurs de secours configurées dans Dashboard.
Pour définir votre pays d'origine et code HS de secours :
Installer le snippet Zonos JS
Le snippet Zonos JS est une intégration JavaScript côté client qui active la fonctionnalité de paiement global sur votre site. Il sert de pont entre votre plateforme e-commerce et les services Zonos, gérant :
Le snippet est chargé de manière asynchrone pour éviter tout impact sur les performances de votre site. Il s'initialise avec les identifiants API de votre boutique et gère toutes les interactions côté client de manière sécurisée. L'implémentation est conçue pour être non intrusive, nécessitant des modifications minimales de votre flux de paiement existant.
Ci-dessous se trouve un exemple complet incluant le chargement du script, l'initialisation et la gestion des événements à utiliser comme référence lors de l'intégration de 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", () => {..({: {: () => {{: ,};},: ,},: {: ,: {.();},},: ,: ,});});..(script);}})();Gérer la mise en cache du navigateur
Nous recommandons d'ajouter un horodatage ou un autre identifiant unique à l'URL pour garantir que le script n'est pas mis en cache par le navigateur. Cela garantira que la dernière version du script est toujours chargée. Ceci est illustré à la ligne 10 de l'exemple complet.
script.src = `https://cdn.jsdelivr.net/npm/@zonos/elements/dist/scripts/loadZonos.js?timestamp=${timestamp}`;Authentifier le snippet Zonos JS
Une fois le script Zonos JS chargé, vous devez l'authentifier en passant une clé API public Zonos et un store ID à la fonction
Zonos.init. La clé API public utilisée pour authentifier Checkout est conçue pour être publiable, ce qui signifie qu'elle peut être utilisée en toute sécurité dans le code front-end sans exposer d'informations sensibles.Pour trouver votre store ID et votre clé API, accédez à Dashboard -> Settings -> Integrations. Assurez-vous de ne pas utiliser une Secret API key, car elle n'est pas conçue pour être utilisée dans le code front-end. Ceci est illustré aux lignes 29 et 30 de l'exemple complet.
Zonos.init({// ... other fieldszonosApiKey: "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});Mettre à jour votre Content Security Policy (CSP)
Si votre site définit une Content Security Policy, ajoutez les domaines ci-dessous aux directives CSP correspondantes. Cette politique s'applique à Checkout et Hello — le snippet Zonos charge des scripts, des feuilles de style, des polices, des images et effectue des requêtes réseau, bloquer l'une de ces ressources interrompra le flux Checkout ou l'affichage Hello. La liste
style-srcs'applique également àstyle-src-elem.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.comConfigurer Hello
Hello est requis lors de l'utilisation de Checkout.
Hello est responsable de la détection de l'emplacement, de la langue et de la devise du visiteur, et de l'affichage des informations appropriées. Vous pouvez configurer tous les paramètres Hello dans Dashboard ou dans le script Zonos JS. Si vous avez déjà configuré Hello dans Dashboard, le script chargera ces paramètres et les utilisera. Si vous spécifiez des valeurs dans la propriété
helloSettingsde la fonctionZonos.init, le script utilisera ces valeurs à la place, comme illustré ci-dessous.Configurer la conversion de devise dans Hello dans le script JS
Hello utilise des sélecteurs CSS pour identifier les éléments de votre site qui affichent des informations de devise. Passez ces sélecteurs à la propriété
helloSettings.currencyElementSelectorde la fonctionZonos.initafin que Hello puisse détecter et afficher la devise correcte de l'acheteur international.Vous pouvez utiliser n'importe quel sélecteur CSS valide ici, par exemple
#price, .pricepour sélectionner plusieurs éléments différents. Ceci est illustré aux lignes 23 et 24 de l'exemple complet.Zonos.init({// ... other fieldshelloSettings: {currencyElementSelector: ".price", // Replace with your actual selector},// ... other fields});Ouvrir Hello automatiquement au chargement de la page
Par défaut, Hello ne s'ouvrira que lorsque le visiteur clique sur le bouton drapeau. Si vous souhaitez ouvrir Hello automatiquement au chargement de la page, vous pouvez appeler la fonction
Zonos.openHelloDialog()une fois le script Zonos chargé. Ceci est illustré aux lignes 25 et 26 de l'exemple complet.Configurer les règles d'affichage des pays dans Dashboard
Contrôlez quels pays acheteurs voient Hello et quels pays apparaissent dans le menu déroulant du sélecteur de pays depuis Dashboard. Accédez à Dashboard -> Settings -> Hello et trouvez la section Country display rules.
Visibilité du widget
Contrôlez quels pays acheteurs voient le widget Hello. Choisissez l'une des règles de base, puis utilisez les listes Always show et Never show pour remplacer des pays spécifiques.
Sélecteur de pays
Contrôlez quels pays apparaissent dans le menu déroulant du sélecteur de pays Hello, en utilisant les mêmes règles de base plus les remplacements Always show et Never show.
Les propriétés
showForCountriesetshowCountryListsurhelloSettingssont obsolètes. Configurez plutôt les règles d'affichage des pays dans Dashboard — les valeurs définies là seront chargées automatiquement par le script Zonos JS.Configurer Checkout
Checkout est responsable de permettre au client de saisir ses informations d'expédition et de facturation, de calculer le landed cost, de collecter le paiement et de finaliser la commande.
Checkout partagera des données contextuelles avec Hello, telles que l'emplacement, la langue et la devise du visiteur. Cela garantit que l'expérience du client est cohérente tout au long du processus d'achat.
Vous pouvez configurer tous les paramètres Checkout dans Dashboard et le script Zonos JS. Si vous avez déjà configuré Checkout dans Dashboard, le script chargera ces paramètres et les utilisera. Si vous spécifiez des valeurs dans la propriété
checkoutSettingsde la fonctionZonos.init, le script utilisera ces valeurs à la place.Configurer le bouton « place order » dans le script JS
Le script Zonos JS reconnaîtra automatiquement les acheteurs internationaux et les dirigera vers le flux Checkout. Cependant, vous devrez configurer le bouton « place order » sur votre plateforme pour ouvrir Checkout lorsqu'il est cliqué. Cela peut se faire en passant un sélecteur CSS à la propriété
checkoutSettings.placeOrderButtonSelectorde la fonctionZonos.init.Si vous avez plusieurs boutons pouvant être utilisés pour passer une commande, assurez-vous de passer un sélecteur pour chaque bouton. Par exemple,
#placeOrder, .place-order.Ceci est illustré à la ligne 21 de l'exemple complet.
Zonos.init({// ... other fieldscheckoutSettings: {// ... other fieldsplaceOrderButtonSelector: "#placeOrder", // Replace with your actual selector(s)},});Créer les détails du panier de manière sécurisée côté serveur
Pour afficher les détails du panier au client, vous devez créer une fonction côté serveur qui appellera l'API Zonos pour créer un panier, puis renverra cet ID de panier à votre front-end. Cela garantira que les détails du panier ne sont pas exposés au client d'une manière pouvant être manipulée.
Votre appel API côté serveur utilisera un jeton d'identification secret GraphQL, différent du jeton public que vous utilisez pour authentifier le script Zonos JS. Ce jeton peut être récupéré dans Dashboard -> Settings -> Integrations. Le jeton secret doit être transmis en tant qu'en-tête dans votre appel API.
La mutation
cartCreateaccepte une liste d'articles, qui doivent être formatés selon le schéma d'article de panier.// 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) {idadjustments {amountcurrencyCodedescriptionproductIdskutype}items {idnameamountcurrencyCodequantityskudescriptionmetadata {keyvalue}}metadata {keyvalue}}}`,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..;}Nous suggérons de créer un point de terminaison API côté serveur, puis d'appeler ce point de terminaison depuis votre intégration JS front-end, ce qui est détaillé à l'étape suivante.
Passer l'ID de panier à Checkout via le front-end
Une fois que vous avez créé un panier côté serveur, vous devez passer l'ID de panier au script Zonos JS. Cela peut se faire en utilisant le callback
createCartIdqui fait partie de la fonctionZonos.init. Checkout récupérera ensuite de manière sécurisée les détails du panier depuis Zonos lors de l'ouverture, empêchant toute manipulation du panier. Consultez l'exemple de code ci-dessous.La valeur de
createCartIdne peut pas être une valeur statique, elle doit être une fonction.Zonos.init({// ... other fieldscheckoutSettings: {// 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},},});(Facultatif) Afficher un avis sous Order total
Si vous devez afficher un message court et dynamique dans Checkout — par exemple, une divulgation réglementaire lorsqu'un produit spécifique est dans le panier — vous pouvez renvoyer un tableau
customMessagedepuis le callbackcreateCartId. Chaque entrée du tableau est rendue sur sa propre ligne d'une bannière d'information unique directement sous Order total.La syntaxe de lien Markdown —
[link label]suivie de(https://example.com)— est rendue comme une balise d'ancrage, permettant aux acheteurs de cliquer. Les URLhttps://simples dans le texte sont également auto-liées. Tout le reste est rendu en texte brut, le HTML dans les chaînes est donc échappé plutôt qu'exécuté.Une seule bannière est affichée par Checkout, quel que soit le nombre de lignes que vous passez.
Zonos.init({// ... other fieldscheckoutSettings: {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).",],};},},});(Facultatif) Déclencher Checkout Zonos par programmation
Si vous avez une logique personnalisée et devez déclencher Checkout Zonos par programmation, vous pouvez utiliser la fonction
Zonos.triggerCheckoutInternational()pour ouvrir la fenêtre Checkout Zonos après l'initialisation de Zonos. Cela invoquera le callbackcreateCartIddéfini dansZonos.initci-dessus et ouvrira la fenêtre Checkout 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();}});(Facultatif) Sélecteur de déclenchement Checkout Zonos permanent
Si vous souhaitez séparer le processus de paiement pour les acheteurs domestiques et internationaux, vous pouvez ajouter un bouton
International checkoutà votre site. Au lieu de déclencher manuellement Zonos Checkout avecZonos.triggerCheckoutInternational, vous pouvez configurerZonos.initavec le sélecteur approprié. Le sélecteur sera désactivé jusqu'à l'initialisation de Zonos ; lorsque le bouton est cliqué, il déclenchera automatiquement Checkout Zonos. Cela invoquera le callbackcreateCartIddéfini dansZonos.initet ouvrira la fenêtre Checkout Zonos.Zonos.init({// ... other fieldscheckoutSettings: {// ... other fieldsalwaysTriggerInternationalCheckoutSelector: "#trigger-zonos-checkout", // Replace with your actual selector, button bound to this selector will always trigger Zonos checkout},});(Facultatif) Suivre l'entonnoir Checkout avec GA4 ou Facebook Pixel
Zonos Checkout peut transmettre l'intégralité de l'entonnoir Checkout à vos outils analytics existants. Pour chaque étape, Zonos émet :
zonos-checkout-...vers GA4 (viagtag('event', ...)) et vers Meta comme événement personnalisé (viafbq('trackCustom', ...)).InitiateCheckout,AddPaymentInfoetPurchase— afin que l'optimisation intégrée et le reporting de conversion de Meta fonctionnent immédiatement.La façon dont les événements parviennent à vos fournisseurs dépend de la façon dont Checkout est rendu sur votre site. Choisissez le chemin correspondant à votre intégration.
Intégration native (Checkout s'affiche directement sur votre site)
Lorsque l'élément personnalisé
<zonos-checkout>est monté sur votre propre page (par défaut pour l'intégration du script Zonos JS décrite ci-dessus), leswindow.gtagetwindow.fbqpropres à la page sont déjà dans la portée. Zonos les appelle directement — aucun relais ou transfert d'ID de pixel n'est nécessaire.Configuration :
C'est tout. Pas de script relais, pas de
customHTML, pas d'ID supplémentaires à passer — Zonos détectegtag/fbqsur la page et déclenche les événements directement.Intégration iframe (iframe Checkout hérité sur
iglobalstores.com)Lorsque Checkout est hébergé dans une iframe sur une origine différente, il ne peut pas atteindre directement le
gtag/fbqde votre page. Zonos publie un petit script relais —analyticsRelayOnInit.js— qui écoute les événements postMessage de l'iframe Checkout et les transmet aux fournisseurs présents sur votre page. Un seul relais gère GA4 et Facebook Pixel en même temps.Configuration :
<head>de la page qui héberge l'iframe Checkout.asyncsrc="https://cdn.jsdelivr.net/npm/@zonos/elements/dist/scripts/analyticsRelayOnInit.js">customHTMLCheckout afin que le relais sache quelle propriété/pixel cibler :window.Zonos.googleAnalyticId = "G-XXXXXXXXXX";window.Zonos.facebookPixelId = "YOUR_PIXEL_ID";Pour des instructions iframe étape par étape, la référence complète des événements (y compris le mappage de charge utile
purchase/Purchase) et des conseils de débogage, consultez :Synchroniser le suivi et le statut des commandes dans Dashboard
Pour synchroniser les commandes entre votre système et Zonos Dashboard, implémentez ces appels API et webhooks :
Mutations requises
orderUpdateAccountOrderNumberorderAddTrackingNumberWebhooks requis
ORDER_CREATEDORDER_STATUS_CHANGEDTester votre intégration
Avant de passer en production avec votre intégration Checkout, il est important de tester minutieusement tous les aspects de l'intégration pour garantir une expérience client fluide. Cela inclut le test du flux de paiement, du traitement des paiements, de la création de commande et de la fonctionnalité webhook.
Suivez notre guide de test pour vérifier que votre intégration fonctionne correctement et identifier et corriger tout problème avant le lancement en production.
Questions fréquentes
Voici quelques questions fréquentes sur le processus d'intégration.
Comment Zonos gère-t-il la confirmation de commande ?
Configurez l'expérience post-achat dans Dashboard -> Settings -> Checkout settings sous Success page type. Trois options sont disponibles :
zOrderNumber(etorderIdpour les paniers hérités) ajoutés comme paramètres de requête.zonosCheckoutSessionIdcomme paramètre de requête. Utilisez cette option lorsque vous souhaitez le transfert le plus rapide vers votre propre page de succès.Rechercher la commande à partir de
zonosCheckoutSessionIdLorsque vous utilisez Close the checkout modal avec une URL de redirection, la commande peut prendre quelques secondes à s'attacher à la session de paiement après la redirection. Lisez
zonosCheckoutSessionIddepuis l'URL et interrogez la requête GraphQLcheckoutSessiondepuis votre serveur à l'aide de votre jeton d'identification secret jusqu'à ce que la commande soit prête. N'appelez jamais ceci depuis le navigateur — le jeton d'identification secret doit rester côté serveur.query getCheckoutSession(: StringcheckoutSession )orderidEnvoyez la requête à
https://api.zonos.com/graphqlavec votre jeton d'identification secret depuis Dashboard -> Settings -> Integrations passé comme en-tête de requêtecredentialToken.Puis-je être notifié lorsqu'une commande est créée ?
Oui. Si vous souhaitez recevoir des notifications lorsqu'une commande est créée, dans Dashboard sous la section Email des Checkout settings, vous pouvez saisir l'adresse e-mail des membres de l'équipe à notifier lorsqu'une commande est créée, expédiée ou annulée.
Cette page a-t-elle été utile?