DOCS

Custom integration

/

Niestandardowa integracja

Zbuduj kompleksową integrację Checkout w swojej niestandardowej witrynie.

Ten przewodnik obejmuje aspekty techniczne zakończenia pełnej integracji Zonos Checkout w Twojej niestandardowej witrynie lub platformie. Jest przeznaczony dla programistów, którzy czują się komfortowo pracując z JavaScript i mają doświadczenie w rozwoju frontendowym. Wszystkie kroki są wymagane, chyba że zaznaczone jest inaczej.

Wymagania wstępne


Ten przewodnik obejmuje aspekty techniczne zakończenia pełnej integracji Zonos Checkout w Twojej niestandardowej witrynie lub platformie. Jest przeznaczony dla programistów, którzy czują się komfortowo pracując z JavaScript i mają doświadczenie w rozwoju frontendowym. Wszystkie kroki są wymagane, chyba że zaznaczone jest inaczej.

Wymagania wstępne


Zainstaluj skrypt JS Zonos 

Twoja niestandardowa integracja będzie musiała zawierać fragment JavaScript Zonos. Ten skrypt jest odpowiedzialny za renderowanie interfejsu użytkownika Checkout, Zonos Hello, obsługę przetwarzania płatności oraz wykrywanie geolokalizacji odwiedzających.

1

Zainstaluj fragment JS Zonos

Skrypt Zonos Elements jest dostępny pod następującym adresem URL:

Zonos JS snippet

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

Obsługa pamięci podręcznej przeglądarki

Zazwyczaj zalecamy również dodanie znacznika czasu lub innego unikalnego identyfikatora do adresu URL, aby upewnić się, że skrypt nie jest buforowany przez przeglądarkę. To zapewni, że zawsze ładowana jest najnowsza wersja skryptu. Na przykład:

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

Uwierzytelnij Zonos JS snippet

Po załadowaniu skryptu JS Zonos musisz go uwierzytelnić, przekazując Zonos klucz API oraz identyfikator sklepu do funkcji Zonos.init. Klucze API używane do uwierzytelniania Checkout są zaprojektowane jako publikowalne, co oznacza, że mogą być bezpiecznie używane w kodzie frontendowym bez ujawniania jakichkolwiek wrażliwych informacji.

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

Ustaw dozwolone domeny

Aby zapewnić, że skrypt JS Zonos jest ładowany tylko na dozwolonych stronach, filtrujemy żądania na podstawie listy "dozwolonych domen". Ta lista jest konfigurowana w Dashboard. Bez tej konfiguracji skrypt JS Zonos zwróci błędy uprawnień zamiast ładować się poprawnie.

Aby zaktualizować swoje dozwolone domeny:

  1. Przejdź do Dashboard -> Ustawienia -> ustawienia Checkout.
  2. W sekcji Dozwolone domeny dodaj domenę(y), na których będziesz integrować Checkout.
  3. Kliknij Zapisz.

Skonfiguruj Zonos Hello 

Po skonfigurowaniu skryptu JS Zonos musisz skonfigurować Hello, aby działał z Twoją stroną. Hello jest odpowiedzialny za wykrywanie lokalizacji, języka i waluty odwiedzającego oraz wyświetlanie odpowiednich informacji. Hello jest wymagany podczas korzystania z Checkout.

Możesz skonfigurować wszystkie ustawienia Hello zarówno w Dashboard, jak i w skrypcie JS Zonos. Jeśli już skonfigurowałeś Hello w Dashboard, skrypt załaduje te ustawienia i je wykorzysta. Jeśli określisz jakiekolwiek wartości w właściwości helloSettings funkcji Zonos.init, skrypt użyje tych wartości zamiast.

1

Skonfiguruj konwersję walut

Hello używa selektorów CSS do identyfikacji elementów na Twojej stronie, które wyświetlają informacje o walucie. Będziesz musiał przekazać te selektory do właściwości helloSettings.currencyElementSelector funkcji Zonos.init.

Możesz użyć dowolnego ważnego selektora CSS tutaj, na przykład #price, .price, aby wybrać wiele różnych elementów.

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

Skonfiguruj ograniczenia przedmiotów

Hello ma możliwość sprawdzania ograniczonych przedmiotów, gdy klient przegląda i zapobiega ich dodawaniu do koszyka. Aby to działało, Hello musi znać dodatkowe informacje o przedmiotach, takie jak nazwa i opis, a także "przycisk dodaj do koszyka". Możesz przekazać selektory CSS do Hello, aby umożliwić mu zbieranie tych informacji z strony.

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

Opcjonalne — Automatycznie otwórz Hello po załadowaniu strony

Domyślnie Hello otworzy się tylko wtedy, gdy odwiedzający kliknie przycisk flagi. Jeśli chcesz automatycznie otworzyć Hello po załadowaniu strony, możesz wywołać funkcję Zonos.openHelloDialog(), gdy skrypt Zonos zostanie załadowany.

Zonos JS snippet

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

Zonos.openHelloDialog();

Skonfiguruj Zonos Checkout 

Gdy Hello zostanie skonfigurowany, musisz skonfigurować Checkout, aby działał z Twoją stroną. Checkout odpowiada za umożliwienie klientowi wprowadzenia informacji o wysyłce, obliczenie landed cost oraz zakończenie zamówienia.

Checkout będzie dzielić się danymi kontekstowymi z Hello, takimi jak lokalizacja odwiedzającego, język i waluta. Zapewnia to, że doświadczenie klienta jest spójne w całym procesie zakupowym.

Możesz skonfigurować wszystkie ustawienia Checkout zarówno w Dashboard, jak i w skrypcie JS Zonos. Jeśli już skonfigurowałeś Checkout w Dashboard, skrypt załaduje te ustawienia i je wykorzysta. Jeśli określisz jakiekolwiek wartości w właściwości checkoutSettings funkcji Zonos.init, skrypt użyje tych wartości zamiast.

1

Skonfiguruj przycisk 'złóż zamówienie'

Skrypt JS Zonos automatycznie rozpozna międzynarodowych kupujących i skieruje ich do procesu Checkout. Jednak będziesz musiał skonfigurować przycisk 'złóż zamówienie' na swojej platformie, aby otwierał Checkout po kliknięciu. Można to zrobić, przekazując selektor CSS do właściwości checkoutSettings.placeOrderButtonSelector funkcji Zonos.init.

Jeśli masz wiele przycisków, które mogą być używane do składania zamówienia, upewnij się, że przekazujesz selektor, który będzie pasował do wszystkich z nich. Na przykład, #placeOrder, .place-order będzie pasować zarówno do #placeOrder, jak i .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

Przekaż szczegóły koszyka w trybie tylko do odczytu w Checkout

Callback buildCartDetail jest odpowiedzialny za zwracanie szczegółów koszyka w formacie, który interfejs Checkout może zrozumieć i wyświetlić. Ta funkcja jest wywoływana, gdy tylko klient dotrze na stronę checkout, co zapewnia, że szczegóły koszyka są wyświetlane dokładnie na pierwszej stronie Checkout. Należy pamiętać, że nie jest to używane do obliczeń - tym zajmuje się następny krok.

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

Schemat pozycji w koszyku

Funkcja buildCartDetail powinna zwracać tablicę pozycji w koszyku. Poniżej znajduje się tabela szczegółowo opisująca strukturę każdego obiektu CartItem:

Nazwa polaTypWymaganeOpis
amountLiczbaTakKwota ceny przedmiotu.
countryOfOriginStringNieKraj pochodzenia przedmiotu.
currencyCodeStringTakKod waluty dla kwoty.
descriptionStringNieOpis przedmiotu.
hsCodeStringNieKod Systemu Zharmonizowanego dla przedmiotu.
imageUrlStringNieURL obrazu przedmiotu.
measurementsItemMeasurement[]NieTablica pomiarów przedmiotu.
metadataObiekt (pary string/liczba)NieDodatkowe metadane dotyczące przedmiotu.
nameStringTakNazwa przedmiotu.
productIdStringNieIdentyfikator produktu.
quantityLiczbaTakIlość przedmiotu w koszyku.
skuStringNieIdentyfikator jednostki magazynowej.
3

Bezpieczne przekazywanie landed cost do Checkout

Funkcja buildLandedCost zajmuje się bezpiecznym obliczaniem landed cost. Jest wywoływana po tym, jak klient wprowadzi swoje dane wysyłkowe. Funkcja ta oblicza stawki wysyłkowe i inne niezbędne koszty, które są następnie wyświetlane na kolejnej stronie Checkout.

Ważne jest, abyś obsługiwał logikę obliczania landed cost po stronie serwera, ponieważ jest to jedyny sposób, aby zapewnić, że szczegóły koszyka nie są ujawniane przeglądarce klienta. Jeśli używasz architektury bezserwerowej, możesz użyć funkcji bezserwerowej do obsługi obliczeń landed cost. Funkcja buildLandedCost powinna po prostu wywołać funkcję bezserwerową/punkt końcowy API i zwrócić wynik.

Po stronie serwera możesz użyć API Zonos Checkout do obliczenia landed cost za pomocą następującego żądania POST. Będziesz musiał przekazać klucz API, którego używasz dla skryptu JS Zonos w nagłówku credentialToken.

URL żądania

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

Treść żądania

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

Czy ta strona była pomocna?