Zonos JS betiğini yükleyin
Özel entegrasyonunuzun Zonos JavaScript parçasını içermesi gerekecek. Bu betik, Checkout UI'sını, Zonos Hello'yı oluşturmak, ödeme işlemlerini yönetmek ve ziyaretçi geo-IP tespitini gerçekleştirmekten sorumludur.
Zonos JS parçasını yükleyin
Zonos Elemanları betiği aşağıdaki URL'de mevcuttur:
Zonos JS parçası
<script src="https://cdn.jsdelivr.net/npm/@zonos/elements/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
<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>
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ı
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
});
İzin verilen alan adlarını ayarlayın
Zonos JS betiğinin yalnızca izin verilen sitelerde yüklenmesini sağlamak için, "izin verilen alan adları" listesini temel alarak istekleri filtreliyoruz. Bu liste Dashboard'da yapılandırılır. Bu yapılandırma olmadan, Zonos JS betiği düzgün bir şekilde yüklenmek yerine izin hataları döndürecektir.
İzin verilen alan adlarınızı güncellemek için:
- Dashboard -> Ayarlar -> Checkout ayarları sayfasına gidin.
- İzin verilen alan adları bölümünde, Checkout ile entegre edeceğiniz alan adını(larını) ekleyin.
- Kaydet butonuna tıklayın.
Zonos Hello'yu ayarlayın
Zonos JS betiğini 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 betiğinde yapılandırabilirsiniz. Eğer Hello'yu Dashboard'da zaten yapılandırdıysanız, betik bu ayarları yükleyecek ve kullanacaktır. Zonos.init
fonksiyonunun helloSettings
özelliğinde herhangi bir değer belirtirseniz, betik bu değerleri kullanacaktır.
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
Zonos.init({
// ... other fields
helloSettings: {
// ... other fields
currencyElementSelector: '#price, .price', // Replace with your actual selector
},
});
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
Zonos.init({
// ... other fields
helloSettings: {
// ... other hello settings
onInitSuccess: () => {
Zonos.openHelloDialog();
},
},
});
Zonos Checkout'u ayarlayın
Hello yapılandırıldıktan sonra, Checkout'u 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'u 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.
'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, platformunuzda 'siparişi ver' butonunu tıkladığında Checkout'u açacak şekilde 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
Zonos.init({
// ... other fields
checkoutSettings: {
// ... other fields
placeOrderButtonSelector: '#placeOrder', // Replace with your actual selector(s)
},
});
Sepet detaylarını güvenli bir şekilde sunucu tarafında oluşturma
Müşteriye sepet detaylarını gösterebilmek için, Zonos API'sini çağırarak bir sepet oluşturacak bir sunucu tarafı fonksiyonu oluşturmanız gerekmektedir ve ardından bu sepet ID'sini ön yüzünüze geri iletmelisiniz. Bu, sepet detaylarının müşteriye manipüle edilebilecek bir şekilde ifşa edilmemesini sağlayacaktır.
Arka uç API çağrınız, Zonos JS scriptini kimlik doğrulamak için kullandığınız genel token'dan farklı olan gizli bir GraphQL kimlik bilgisi token'ı kullanacaktır. Bu token, Dashboard -> Settings -> Integrations bölümünden alınabilir. Gizli token, API çağrınızda bir başlık olarak iletilmelidir.
cartCreate
mutasyonu, sepet öğesi şeması ile formatlanması gereken bir öğe listesi kabul eder.
Örnek sunucu tarafı sepet oluşturma
// 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
}
Önerimiz, sunucu tarafınızda bir API uç noktası oluşturmak ve ardından bu uç noktanın ön yüz JS entegrasyonunuzdan çağrılmasını sağlamaktır; bu, bir sonraki adımda detaylandırılmıştır.
Sepet ID'sini Checkout'a ön yüz aracılığıyla iletin
Sunucu tarafınızda bir sepet oluşturduktan sonra, sepet ID'sini Zonos JS betiğine iletmeniz gerekmektedir. Bu, Zonos.init
fonksiyonunun bir parçası olan createCartId
geri çağrısını kullanarak yapılabilir. Checkout açıldığında, sepet detaylarını Zonos'dan güvenli bir şekilde alacak ve sepetin herhangi bir şekilde değiştirilmesini önleyecektir.
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
},
},
});
Ö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 aşina olan ve ön yüz geliştirme deneyimi olan geliştiriciler için tasarlanmıştır. Tüm adımlar, aksi belirtilmedikçe gereklidir.
Ön koşullar