DOCS

Custom integration

/

Özel entegrasyon

Özel sitenize uçtan uca bir Checkout entegrasyonu oluşturun.

Bu kılavuz, Zonos Checkout'ın özel sitenize veya platformunuza tam entegrasyonunu tamamlamanın teknik yönlerini kapsar. JavaScript ile çalışmaya alışkın ve ön yüz geliştirme deneyimi olan geliştiriciler için tasarlanmıştır. Aksi belirtilmedikçe tüm adımlar gereklidir.

Ön koşullar


Bu kılavuz, Zonos Checkout'ın özel sitenize veya platformunuza tam entegrasyonunu tamamlamanın teknik yönlerini kapsar. JavaScript ile çalışmaya alışkın ve ön yüz geliştirme deneyimi olan geliştiriciler için tasarlanmıştır. Aksi belirtilmedikçe tüm adımlar gereklidir.

Ön koşullar


Zonos JS betiğini yükleyin 

Özel entegrasyonunuzun Zonos JavaScript parçasını içermesi gerekecektir. Bu betik, Checkout arayüzünü, Zonos Hello'yı oluşturmak, ödeme işlemlerini yönetmek ve ziyaretçi coğrafi IP tespitini gerçekleştirmekten sorumludur.

1

Zonos JS parçasını yükleyin

Zonos Elemanları betiği aşağıdaki URL'de mevcuttur:

Zonos JS parçası

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

Tarayıcı önbelleklemesini yönetme

Ayrıca, genellikle URL'ye bir zaman damgası veya başka bir benzersiz tanımlayıcı eklemeyi öneriyoruz, böylece script'in tarayıcı tarafından önbelleğe alınmadığından emin olabilirsiniz. Bu, script'in en son sürümünün her zaman yüklenmesini sağlayacaktır. Örneğin:

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

Zonos JS parçasını doğrulayın

Zonos JS betiğini yükledikten sonra, bir Zonos API anahtarı ve mağaza kimliğini Zonos.init fonksiyonuna geçirerek doğrulamanız gerekir. Checkout'ı doğrulamak için kullanılan API anahtarları, hassas bilgileri açığa çıkarmadan ön uç kodunda güvenle kullanılabilecek şekilde yayınlanabilir olarak tasarlanmıştır.

Zonos JS parçası

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

İzin verilen alanları ayarlayın

Zonos JS scriptinin yalnızca izin verilen sitelerde yüklenmesini sağlamak için, "izin verilen alanlar" listesini temel alarak istekleri filtreliyoruz. Bu liste Dashboard'da yapılandırılır. Bu yapılandırma olmadan, Zonos JS scripti düzgün bir şekilde yüklenmek yerine izin hataları döndürecektir.

İzin verilen alanlarınızı güncellemek için:

  1. Dashboard -> Ayarlar -> Checkout ayarları sayfasına gidin.
  2. İzin verilen alanlar bölümünde, Checkout ile entegre edeceğiniz alan(lar)ı ekleyin.
  3. Kaydet butonuna tıklayın.

Zonos Hello'yu ayarlayın 

Zonos JS scriptini ayarladıktan sonra, Hello'yu sitenizle çalışacak şekilde yapılandırmanız gerekir. Hello ziyaretçinin konumunu, dilini ve para birimini tespit etmekten ve onlara uygun bilgileri göstermekten sorumludur. Hello Checkout kullanırken gereklidir.

Tüm Hello ayarlarını hem Dashboard'da hem de Zonos JS scriptinde yapılandırabilirsiniz. Eğer Hello'yu Dashboard'da zaten yapılandırdıysanız, script bu ayarları yükleyecek ve kullanacaktır. Zonos.init fonksiyonunun helloSettings özelliğinde herhangi bir değer belirtirseniz, script bu değerleri kullanacaktır.

1

Para birimi dönüşümünü yapılandırın

Hello para birimi bilgilerini gösteren sitenizdeki öğeleri tanımlamak için CSS seçicileri kullanır. Bu seçicileri Zonos.init fonksiyonunun helloSettings.currencyElementSelector özelliğine geçirmeniz gerekecek.

Burada herhangi bir geçerli CSS seçicisi kullanabilirsiniz, örneğin #price, .price birden fazla farklı öğeyi seçmek için.

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

Ürün kısıtlamalarını yapılandırın

Hello alışveriş yapanın tarayıcıda kısıtlı ürünleri kontrol etme ve bunların sepete eklenmesini engelleme yeteneğine sahiptir. Bunun çalışabilmesi için, Hello ürün adı ve açıklaması gibi ek ürün bilgilerini bilmelidir; ayrıca "sepete ekle butonu" da gereklidir. Bu bilgileri sayfadan almak için Hello'ya CSS seçicileri geçirebilirsiniz.

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

Opsiyonel — Sayfa yüklendiğinde Hello'yu otomatik olarak aç

Varsayılan olarak, Hello yalnızca ziyaretçi bayrak butonuna tıkladığında açılacaktır. Sayfa yüklendiğinde Hello'yu otomatik olarak açmak istiyorsanız, Zonos betiği yüklendikten sonra Zonos.openHelloDialog() fonksiyonunu çağırabilirsiniz.

Zonos JS snippet

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

Zonos.openHelloDialog();

Zonos Checkout'ı ayarlayın 

Hello yapılandırıldıktan sonra, Checkout'ı sitenizle çalışacak şekilde ayarlamanız gerekir. Checkout müşteriyle gönderim bilgilerini girmesine, landed cost hesaplamasına ve siparişi tamamlamasına olanak tanır.

Checkout ziyaretçinin konumu, dili ve para birimi gibi bağlamsal verileri Hello ile paylaşacaktır. Bu, müşterinin deneyiminin alışveriş süreci boyunca tutarlı olmasını sağlar.

Tüm Checkout ayarlarını hem Dashboard'da hem de Zonos JS betiğinde yapılandırabilirsiniz. Eğer Checkout'ı Dashboard'da zaten yapılandırdıysanız, betik bu ayarları yükleyecek ve kullanacaktır. Zonos.init fonksiyonunun checkoutSettings özelliğinde herhangi bir değer belirtirseniz, betik bu değerleri kullanacaktır.

1

'siparişi ver' butonunu yapılandırın

Zonos JS betiği uluslararası alışveriş yapanları otomatik olarak tanıyacak ve onları Checkout akışına yönlendirecektir. Ancak, tıkladığında Checkout'ı açacak şekilde platformunuzda 'siparişi ver' butonunu yapılandırmanız gerekecektir. Bu, Zonos.init fonksiyonunun checkoutSettings.placeOrderButtonSelector özelliğine bir CSS seçici geçirerek yapılabilir.

Birden fazla sipariş verme butonunuz varsa, hepsini eşleştirecek bir seçici geçirdiğinizden emin olun. Örneğin, #placeOrder, .place-order hem #placeOrder hem de .place-order ile eşleşecektir.

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

Sepet görünümünde yalnızca sepet detaylarını Checkout ile geçirin

buildCartDetail geri çağrısı, sepet detaylarını Checkout arayüzünün anlayabileceği ve görüntüleyebileceği bir formatta döndürmekten sorumludur. Bu fonksiyon, müşteri checkout sayfasına geldiği anda çağrılır ve sepet detaylarının Checkout'un ilk sayfasında doğru bir şekilde görüntülenmesini sağlar. Lütfen bunun hesaplamalar için kullanılmadığını - bunun bir sonraki adımda ele alındığını unutmayın.

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

Sepet öğesi şeması

buildCartDetail fonksiyonu bir dizi sepet öğesi döndürmelidir. Aşağıda her CartItem nesnesinin yapısını detaylandıran bir tablo bulunmaktadır:

Alan AdıTürGerekliAçıklama
amountSayıEvetÖğenin fiyat miktarı.
countryOfOriginDizeHayırÖğenin menşei ülkesi.
currencyCodeDizeEvetMiktar için para birimi kodu.
descriptionDizeHayırÖğenin açıklaması.
hsCodeDizeHayırÖğenin Harmonize Sistem kodu.
imageUrlDizeHayırÖğenin resim URL'si.
measurementsItemMeasurement[]HayırÖğenin ölçümlerinin dizisi.
metadataNesne (dize/sayı çiftleri)HayırÖğeye dair ek meta veriler.
nameDizeEvetÖğenin adı.
productIdDizeHayırÜrün kimliği.
quantitySayıEvetSepetteki öğe miktarı.
skuDizeHayırStok Tutma Birimi tanımlayıcısı.
3

landed cost'u Checkout'a güvenli bir şekilde iletin

buildLandedCost fonksiyonu landed cost'u güvenli bir şekilde hesaplamaktan sorumludur. Bu fonksiyon, müşteri gönderim bilgilerini girdikten sonra çağrılır. Bu fonksiyon, gönderim ücretlerini ve diğer gerekli maliyetleri hesaplar ve ardından bunlar Checkout'ın sonraki sayfasında görüntülenir.

landed cost hesaplama mantığını sunucu tarafında ele almanız önemlidir, çünkü bu, sepet detaylarının müşterinin tarayıcısına maruz kalmamasını sağlamanın tek yoludur. Sunucusuz bir mimari kullanıyorsanız, landed cost hesaplamasını ele almak için bir sunucusuz fonksiyon kullanabilirsiniz. buildLandedCost fonksiyonu, sunucusuz fonksiyonu/API uç noktasını çağırmalı ve sonucu döndürmelidir.

Sunucu tarafında, Zonos Checkout API'sini kullanarak landed cost'u hesaplamak için aşağıdaki POST isteğini kullanabilirsiniz. credentialToken başlığında Zonos JS scripti için kullandığınız API anahtarını geçirmeniz gerekecektir.

İstek URL'si

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

İstek gövdesi

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 parçası

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

Bu sayfa yardımcı oldu mu?