Zainstaluj skrypt JS Zonos
Twoja niestandardowa integracja będzie musiała zawierać fragment JavaScript Zonos. Ten skrypt odpowiada za renderowanie interfejsu użytkownika Checkout, Zonos Hello, obsługę przetwarzania płatności oraz wykrywanie geolokalizacji odwiedzających.
Zainstaluj fragment JS Zonos
Skrypt Zonos Elements jest dostępny pod następującym adresem URL:
Zonos JS snippet
<script src="https://cdn.jsdelivr.net/npm/@zonos/elements/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
<script>
(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',
() => {
// Initialize the script here (instructions in next section)
},
false,
);
document.head.appendChild(script);
}
})();
</script>
Uwierzytelnij Zonos JS snippet
Po załadowaniu skryptu JS Zonos musisz go uwierzytelnić, przekazując klucz API Zonos oraz identyfikator magazynu 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
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
});
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:
- Przejdź do Dashboard -> Ustawienia -> ustawienia Checkout.
- W sekcji Dozwolone domeny dodaj domenę(y), na których będziesz integrować Checkout.
- Kliknij Zapisz.
Skonfiguruj Zonos Hello
Gdy skonfigurujesz skrypt 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.
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
Zonos.init({
// ... other fields
helloSettings: {
// ... other fields
currencyElementSelector: '#price, .price', // Replace with your actual selector
},
});
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
Zonos.init({
// ... other fields
helloSettings: {
// ... other hello settings
onInitSuccess: () => {
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.
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
Zonos.init({
// ... other fields
checkoutSettings: {
// ... other fields
placeOrderButtonSelector: '#placeOrder', // Replace with your actual selector(s)
},
});
Bezpieczne tworzenie szczegółów koszyka po stronie serwera
Aby wyświetlić szczegóły koszyka klientowi, musisz stworzyć funkcję po stronie serwera, która wywoła API Zonos w celu utworzenia koszyka, a następnie przekaże ten identyfikator koszyka z powrotem do twojego frontend. Zapewni to, że szczegóły koszyka nie będą ujawnione klientowi w sposób, który można by manipulować.
Twoje wywołanie API backendu będzie używać tajnego tokena uwierzytelniającego GraphQL, który różni się od publicznego tokena, którego używasz do uwierzytelnienia skryptu JS Zonos. Ten token można uzyskać w Dashboard -> Settings -> Integracje. Tajny token musi być przekazany jako nagłówek w twoim wywołaniu API.
Mutacja cartCreate
akceptuje listę przedmiotów, które powinny być sformatowane zgodnie z schematem przedmiotu koszyka.
Przykład tworzenia koszyka po stronie serwera
// Create new cart from serverside
async 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: [
{
key: 'key1',
value: 'value1',
},
],
},
},
});
const response = await fetch('https://api.zonos.com/graphql', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
credentialToken: 'credential_live_xxxxxxxxx', // Replace with your actual SECRET credential token (found in Dashboard)
},
body: graphql,
});
const { data } = await response.json();
return data.cartCreate.id; // Return the cart ID to your frontend
}
Sugerujemy utworzenie punktu końcowego API na serwerze, a następnie wywołanie tego punktu końcowego z integracji JS na froncie, co jest szczegółowo opisane w następnym kroku.
Przekaż identyfikator koszyka do Checkout za pomocą frontendu
Gdy utworzysz koszyk na swoim serwerze, musisz przekazać identyfikator koszyka do skryptu JS Zonos. Można to zrobić, używając funkcji zwrotnej createCartId
, która jest częścią funkcji Zonos.init
. Checkout następnie bezpiecznie pobierze szczegóły koszyka z Zonos po otwarciu, zapobiegając jakiejkolwiek manipulacji koszykiem.
Zonos JS snippet
Zonos.init({
// ... other fields
checkoutSettings: {
// ... other fields
placeOrderButtonSelector: '#placeOrder', // 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
},
},
});
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 w pracy z JavaScript i mają doświadczenie w rozwoju frontendowym. Wszystkie kroki są wymagane, chyba że zaznaczone jest inaczej.
Wymagania wstępne