DOCS

Custom integration

/

Tilpasset integrasjon

Bygg en ende-til-ende Checkout integrasjon inn i ditt tilpassede nettsted.

Denne guiden dekker de tekniske aspektene ved å fullføre en full integrasjon av Zonos Checkout inn i ditt tilpassede nettsted eller plattform. Den er ment for utviklere som er komfortable med å jobbe med JavaScript og har erfaring med frontend-utvikling. Alle trinn er nødvendige med mindre annet er notert.

Forutsetninger


Denne guiden dekker de tekniske aspektene ved å fullføre en full integrasjon av Zonos Checkout inn i ditt tilpassede nettsted eller plattform. Den er ment for utviklere som er komfortable med å jobbe med JavaScript og har erfaring med frontend-utvikling. Alle trinn er nødvendige med mindre annet er notert.

Forutsetninger


Installer Zonos JS-skriptet 

Din tilpassede integrasjon må inkludere Zonos JavaScript-snippet. Dette skriptet er ansvarlig for å gjengi Checkout UI, Zonos Hello, håndtere betalingsbehandling og håndtere besøkendes geo-IP-detektering.

1

Installer Zonos JS-snippet

Zonos Elements-skriptet er tilgjengelig på følgende URL:

Zonos JS-snippet

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

Håndtering av nettleserbuffer

Vi anbefaler også vanligvis å legge til et tidsstempel eller en annen unik identifikator til URL-en for å sikre at skriptet ikke blir bufret av nettleseren. Dette vil sikre at den nyeste versjonen av skriptet alltid lastes inn. For eksempel:

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

Autentiser Zonos JS-snippetet

Når du har lastet inn Zonos JS-skriptet, må du autentisere det ved å sende en Zonos API-nøkkel og butikk-ID inn i Zonos.init funksjonen. API-nøklene som brukes til å autentisere Checkout er designet for å være publiserbare, noe som betyr at de trygt kan brukes i frontend-kode uten å eksponere sensitiv informasjon.

Zonos JS-snippet

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

Angi tillatte domener

For å sikre at Zonos JS-skriptet kun lastes inn på tillatte nettsteder, filtrerer vi forespørslene basert på en liste over "tillatte domener". Denne listen konfigureres i Dashboard. Uten denne konfigurasjonen vil Zonos JS-skriptet returnere tillatelsesfeil i stedet for å lastes inn riktig.

For å oppdatere dine tillatte domener:

  1. Gå til Dashboard -> Innstillinger -> Checkout innstillinger.
  2. Under Tillatte domener-seksjonen, legg til domenet/domenene der du vil integrere Checkout.
  3. Klikk Lagre.

Sett opp Zonos Hello 

Når du har satt opp Zonos JS-skriptet, må du konfigurere Hello for å fungere med nettstedet ditt. Hello er ansvarlig for å oppdage besøkendes plassering, språk og valuta, og vise den passende informasjonen til dem. Hello er nødvendig når du bruker Checkout.

Du kan konfigurere alle Hello-innstillinger både i Dashboard og i Zonos JS-skriptet. Hvis du allerede har konfigurert Hello i Dashboard, vil skriptet laste inn disse innstillingene og bruke dem. Hvis du spesifiserer noen verdier i helloSettings-egenskapen til Zonos.init-funksjonen, vil skriptet bruke disse verdiene i stedet.

1

Konfigurer valutakonvertering

Hello bruker CSS-selektorer for å identifisere elementer på nettstedet ditt som viser valutainformasjon. Du må sende disse selektorene til helloSettings.currencyElementSelector-egenskapen til Zonos.init-funksjonen.

Du kan bruke hvilken som helst gyldig CSS-selektor her, for eksempel #price, .price for å velge flere forskjellige elementer.

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

Konfigurer varebegrensninger

Hello har muligheten til å sjekke for begrensede varer mens kunden blar gjennom og forhindre dem fra å bli lagt til i handlekurven. For at dette skal fungere, må Hello vite om tilleggsinformasjon om varen, som navn og beskrivelse, samt "legg til i handlekurv-knappen". Du kan sende CSS-selektorer til Hello for å la den hente denne informasjonen fra siden.

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',
  },
});

Valgfritt — Åpne automatisk Hello ved sideinnlasting

Som standard vil Hello kun åpne når besøkende klikker på flaggknappen. Hvis du ønsker å åpne Hello automatisk når siden lastes, kan du kalle Zonos.openHelloDialog()-funksjonen når Zonos-skriptet har lastet inn.

Zonos JS-snutt

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

Zonos.openHelloDialog();

Sett opp Zonos Checkout 

Når Hello er konfigurert, må du sette opp Checkout for å fungere med nettstedet ditt. Checkout er ansvarlig for å la kunden angi sin fraktinformasjon, beregne landed cost, og fullføre bestillingen.

Checkout vil dele kontekstuell data med Hello, som for eksempel besøkendes plassering, språk og valuta. Dette sikrer at kundens opplevelse er konsistent gjennom hele handleprosessen.

Du kan konfigurere alle Checkout-innstillinger både i Dashboard og i Zonos JS-skriptet. Hvis du allerede har konfigurert Checkout i Dashboard, vil skriptet laste disse innstillingene og bruke dem. Hvis du spesifiserer noen verdier i checkoutSettings-egenskapen til Zonos.init-funksjonen, vil skriptet bruke disse verdiene i stedet.

1

Konfigurer 'plasser ordre'-knappen

Zonos JS-skriptet vil automatisk gjenkjenne internasjonale kunder og lede dem til Checkout-flyten. Du må imidlertid konfigurere 'plasser ordre'-knappen på plattformen din for å åpne Checkout når den klikkes. Dette kan gjøres ved å sende en CSS-velger til checkoutSettings.placeOrderButtonSelector-egenskapen til Zonos.init-funksjonen.

Hvis du har flere knapper som kan brukes til å plassere en ordre, må du sørge for å sende inn en velger som vil matche alle sammen. For eksempel, #placeOrder, .place-order vil matche både #placeOrder og .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

Send handlebare handlekurvdetaljer i Checkout

Den buildCartDetail tilbakeringingsfunksjonen er ansvarlig for å returnere handlekurvdetaljer i et format som Checkout-grensesnittet kan forstå og vise. Denne funksjonen kalles så snart kunden ankommer checkout-siden, og sikrer at handlekurvdetaljene vises nøyaktig på den første siden av Checkout. Vennligst merk at dette ikke brukes til beregninger - det håndteres i neste steg.

Zonos JS-snutt

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
    },
  },
});

Handle for kurvobjekt

Funksjonen buildCartDetail skal returnere en matrise av kurvobjekter. Nedenfor er en tabell som beskriver strukturen til hvert CartItem-objekt:

Felt NavnTypePåkrevdBeskrivelse
amountNummerJaPrisen på objektet.
countryOfOriginStrengNeiOpprinnelseslandet for objektet.
currencyCodeStrengJaValutakoden for beløpet.
descriptionStrengNeiBeskrivelse av objektet.
hsCodeStrengNeiHarmonized System-koden for objektet.
imageUrlStrengNeiURL til bildet av objektet.
measurementsItemMeasurement[]NeiMatrise av objektmål.
metadataObjekt (streng/nummer par)NeiTilleggsmetadata om objektet.
nameStrengJaNavn på objektet.
productIdStrengNeiProdukt-ID.
quantityNummerJaAntall av objektet i kurven.
skuStrengNeiIdentifikator for lagerbeholdning.
3

Sikkert overføre landed cost til Checkout

Funksjonen buildLandedCost håndterer sikker beregning av landed cost. Den blir kalt etter at kunden har oppgitt sin fraktinformasjon. Denne funksjonen beregner fraktkostnader og andre nødvendige kostnader, som deretter vises på den påfølgende siden av Checkout.

Det er viktig at du håndterer logikken for beregning av landed cost på serversiden, da dette er den eneste måten å sikre at kurvdetaljene ikke blir eksponert for kundens nettleser. Hvis du bruker en serverløs arkitektur, kan du bruke en serverløs funksjon for å håndtere beregningen av landed cost. Funksjonen buildLandedCost skal ganske enkelt kalle den serverløse funksjonen/API-endepunktet og returnere resultatet.

På serversiden kan du bruke Zonos Checkout API for å beregne landed cost ved å bruke følgende POST-forespørsel. Du må sende API-nøkkelen du har brukt for Zonos JS-skriptet i credentialToken-headeren.

Forespørsel URL

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

Forespørsel kropp

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-snippet

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
    },
  },
});

Var denne siden nyttig?