Cài đặt tập lệnh JS của Zonos
Tích hợp tùy chỉnh của bạn sẽ cần bao gồm đoạn mã JavaScript của Zonos. Tập lệnh này chịu trách nhiệm hiển thị giao diện người dùng Checkout, Zonos Hello, xử lý thanh toán và xử lý phát hiện geo-IP của khách truy cập.
Cài đặt đoạn mã JS của Zonos
Tập lệnh Zonos Elements có sẵn tại URL sau:
Zonos JS snippet
<script src="https://js.zonos.com/dist/scripts/loadZonos.js" />
Xử lý bộ nhớ cache của trình duyệt
Chúng tôi cũng thường khuyên nên thêm một dấu thời gian hoặc một định danh duy nhất khác vào URL để đảm bảo rằng tập lệnh không bị bộ nhớ cache bởi trình duyệt. Điều này sẽ đảm bảo rằng phiên bản mới nhất của tập lệnh luôn được tải. Ví dụ:
Zonos JS snippet
<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>
Xác thực đoạn mã JS của Zonos
Khi bạn đã tải đoạn mã JS của Zonos, bạn cần xác thực nó bằng cách truyền một khóa API của Zonos và ID cửa hàng vào hàm Zonos.init
. Các khóa API được sử dụng để xác thực Checkout được thiết kế để có thể công khai, có nghĩa là chúng có thể được sử dụng an toàn trong mã frontend mà không làm lộ bất kỳ thông tin nhạy cảm nào.
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
});
Đặt miền được phép
Để đảm bảo rằng script JS của Zonos chỉ được tải trên các trang web được phép, chúng tôi lọc các yêu cầu dựa trên danh sách "miền được phép". Danh sách này được cấu hình trong Dashboard. Nếu không có cấu hình này, script JS của Zonos sẽ trả về lỗi quyền thay vì tải đúng cách.
Để cập nhật các miền được phép của bạn:
- Đi tới Dashboard -> Cài đặt -> cài đặt Checkout.
- Dưới phần Miền được phép, thêm miền mà bạn sẽ tích hợp Checkout.
- Nhấn Lưu.
Thiết lập Zonos Hello
Khi bạn đã thiết lập script JS của Zonos, bạn cần cấu hình Hello để hoạt động với trang web của bạn. Hello chịu trách nhiệm phát hiện vị trí, ngôn ngữ và tiền tệ của khách truy cập, và hiển thị thông tin phù hợp cho họ. Hello là cần thiết khi sử dụng Checkout.
Bạn có thể cấu hình tất cả các cài đặt của Hello trong cả Dashboard và script JS của Zonos. Nếu bạn đã cấu hình Hello trong Dashboard, script sẽ tải các cài đặt đó và sử dụng chúng. Nếu bạn chỉ định bất kỳ giá trị nào trong thuộc tính helloSettings
của hàm Zonos.init
, script sẽ sử dụng các giá trị đó thay thế.
Cấu hình chuyển đổi tiền tệ
Hello sử dụng các bộ chọn CSS để xác định các phần tử trên trang web của bạn hiển thị thông tin tiền tệ. Bạn sẽ cần truyền các bộ chọn này vào thuộc tính helloSettings.currencyElementSelector
của hàm Zonos.init
.
Bạn có thể sử dụng bất kỳ bộ chọn CSS hợp lệ nào ở đây, ví dụ #price, .price
để chọn nhiều phần tử khác nhau.
Zonos JS snippet
Zonos.init({
// ... other fields
helloSettings: {
// ... other fields
currencyElementSelector: '#price, .price', // Replace with your actual selector
},
});
Cấu hình hạn chế mặt hàng
Hello có khả năng kiểm tra các mặt hàng bị hạn chế khi người mua sắm duyệt và ngăn chúng được thêm vào giỏ hàng. Để điều này hoạt động, Hello cần biết thêm thông tin về mặt hàng như tên và mô tả, cũng như "nút thêm vào giỏ hàng". Bạn có thể truyền các bộ chọn CSS cho Hello để cho phép nó thu thập thông tin này từ trang.
Zonos JS snippet
Zonos.init({
// ... other fields
helloSettings: {
// ... other fields
productAddToCartElementSelector: '.add-to-cart',
productDescriptionElementSelector: '.description',
productPriceElementSelector: '.price',
productTitleElementSelector: '.title',
},
});
Tùy chọn — Tự động mở Hello khi tải trang
Theo mặc định, Hello chỉ mở khi người truy cập nhấp vào nút cờ. Nếu bạn muốn tự động mở Hello khi trang tải, bạn có thể gọi hàm Zonos.openHelloDialog()
sau khi script Zonos đã được tải.
Zonos JS snippet
Zonos.init({
// ... other fields
});
Zonos.openHelloDialog();
Thiết lập Zonos Checkout
Khi Hello đã được cấu hình, bạn cần thiết lập Checkout để hoạt động với trang web của bạn. Checkout chịu trách nhiệm cho phép khách hàng nhập thông tin giao hàng, tính toán landed cost, và hoàn tất đơn hàng.
Checkout sẽ chia sẻ dữ liệu ngữ cảnh với Hello, chẳng hạn như vị trí của khách truy cập, ngôn ngữ và tiền tệ. Điều này đảm bảo rằng trải nghiệm của khách hàng là nhất quán trong toàn bộ quá trình mua sắm.
Bạn có thể cấu hình tất cả các cài đặt của Checkout trong cả Dashboard và tập lệnh JS của Zonos. Nếu bạn đã cấu hình Checkout trong Dashboard, tập lệnh sẽ tải các cài đặt đó và sử dụng chúng. Nếu bạn chỉ định bất kỳ giá trị nào trong thuộc tính checkoutSettings
của hàm Zonos.init
, tập lệnh sẽ sử dụng các giá trị đó thay thế.
Cấu hình nút 'đặt hàng'
Tập lệnh JS của Zonos sẽ tự động nhận diện người mua quốc tế và hướng dẫn họ đến quy trình Checkout. Tuy nhiên, bạn sẽ cần cấu hình nút 'đặt hàng' trên nền tảng của bạn để mở Checkout khi được nhấp. Điều này có thể được thực hiện bằng cách truyền một bộ chọn CSS vào thuộc tính checkoutSettings.placeOrderButtonSelector
của hàm Zonos.init
.
Nếu bạn có nhiều nút có thể được sử dụng để đặt hàng, hãy đảm bảo truyền vào một bộ chọn sẽ khớp với tất cả chúng. Ví dụ, #placeOrder, .place-order
sẽ khớp với cả #placeOrder
và .place-order
.
Zonos JS snippet
Zonos.init({
// ... other fields
checkoutSettings: {
// ... other fields
placeOrderButtonSelector: '#placeOrder', // Replace with your actual selector(s)
},
});
Truyền chi tiết giỏ hàng chỉ xem vào Checkout
Callback buildCartDetail
chịu trách nhiệm trả về chi tiết giỏ hàng ở định dạng mà giao diện Checkout có thể hiểu và hiển thị. Hàm này được gọi ngay khi khách hàng đến trang checkout, đảm bảo rằng chi tiết giỏ hàng được hiển thị chính xác trên trang đầu tiên của Checkout. Xin lưu ý rằng điều này không được sử dụng cho các phép tính - điều đó sẽ được xử lý ở bước tiếp theo.
Zonos JS snippet
Zonos.init({
// ... other fields
checkoutSettings: {
// ... other fields
buildCartDetail: async () => {
// ... Your existing buildCartDetail implementation
// This should return cart details for UI display
},
},
});
Sơ đồ mặt hàng trong giỏ hàng
Hàm buildCartDetail
nên trả về một mảng các mặt hàng trong giỏ hàng. Dưới đây là bảng chi tiết cấu trúc của mỗi đối tượng CartItem
:
Tên trường | Loại | Bắt buộc | Mô tả |
---|---|---|---|
amount | Số | Có | Số tiền giá của mặt hàng. |
countryOfOrigin | Chuỗi | Không | Quốc gia xuất xứ của mặt hàng. |
currencyCode | Chuỗi | Có | Mã tiền tệ cho số tiền. |
description | Chuỗi | Không | Mô tả về mặt hàng. |
hsCode | Chuỗi | Không | Mã Hệ thống hài hòa cho mặt hàng. |
imageUrl | Chuỗi | Không | URL của hình ảnh mặt hàng. |
measurements | ItemMeasurement[] | Không | Mảng các kích thước của mặt hàng. |
metadata | Đối tượng (cặp chuỗi/số) | Không | Thông tin bổ sung về mặt hàng. |
name | Chuỗi | Có | Tên của mặt hàng. |
productId | Chuỗi | Không | ID sản phẩm. |
quantity | Số | Có | Số lượng của mặt hàng trong giỏ hàng. |
sku | Chuỗi | Không | Mã định danh hàng tồn kho. |
Truyền an toàn landed cost đến Checkout
Hàm buildLandedCost
xử lý việc tính toán an toàn landed cost. Nó được gọi sau khi khách hàng nhập thông tin giao hàng của họ. Hàm này tính toán các mức phí vận chuyển và các chi phí cần thiết khác, sau đó được hiển thị trên trang tiếp theo của Checkout.
Điều quan trọng là bạn phải xử lý logic tính toán landed cost ở phía máy chủ, vì đây là cách duy nhất để đảm bảo rằng chi tiết giỏ hàng không bị lộ ra trình duyệt của khách hàng. Nếu bạn đang sử dụng kiến trúc không máy chủ, bạn có thể sử dụng một hàm không máy chủ để xử lý việc tính toán landed cost. Hàm buildLandedCost
chỉ cần gọi hàm/API không máy chủ và trả về kết quả.
Ở phía máy chủ, bạn có thể sử dụng API Zonos Checkout để tính toán landed cost bằng cách sử dụng yêu cầu POST
sau. Bạn sẽ cần truyền khóa API mà bạn đã sử dụng cho tập lệnh JS của Zonos trong tiêu đề credentialToken
.
URL yêu cầu
https://v1.route.js.zonos.com/api/zonos-elements/calculate-landed-cost
Nội dung yêu cầu
{
"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 đoạn mã JS
Zonos.init({
// ... other fields
checkoutSettings: {
// ... other fields
buildLandedCost: async (checkoutSessionId, contact, shippingAddress) => {
// This should return the landed cost calculation
},
},
});
Tích hợp tùy chỉnh
Xây dựng một tích hợp Checkout hoàn chỉnh vào trang tùy chỉnh của bạn.
Hướng dẫn này đề cập đến các khía cạnh kỹ thuật của việc hoàn thành một tích hợp đầy đủ của Zonos Checkout vào trang hoặc nền tảng tùy chỉnh của bạn. Nó dành cho các nhà phát triển có kinh nghiệm làm việc với JavaScript và có kinh nghiệm phát triển frontend. Tất cả các bước đều cần thiết trừ khi có ghi chú khác.
Điều kiện tiên quyết
Hướng dẫn này đề cập đến các khía cạnh kỹ thuật của việc hoàn thành một tích hợp đầy đủ của Zonos Checkout vào trang hoặc nền tảng tùy chỉnh của bạn. Nó dành cho các nhà phát triển có kinh nghiệm làm việc với JavaScript và có kinh nghiệm phát triển frontend. Tất cả các bước đều cần thiết trừ khi có ghi chú khác.
Điều kiện tiên quyết