Cart API
Cart API dùng để tương tác với giỏ hàng trong phiên truy cập của khách hàng
- GET /cart.js
- POST /cart/add.js
- POST /cart/update.js
- POST /cart/change.js
- POST /cart/clear.js
- Đối tượng
GET /cart.js
Lấy thông tin giỏ hàng
Dữ liệu trả về
Trả về thông tin giỏ hàng
Ví dụ giỏ hàng:
{
"token": "ff415998af863ee622c498dff2d8840d",
"items": [
{
"id": 3,
"grams": 5,
"price": 666666,
"price_final": 666666,
"line_price": 666666,
"line_price_final": 666666,
"price_original": 666666,
"line_price_orginal": 666666,
"line_price_original": 666666,
"total_discount": 0,
"quantity": 1,
"requires_shipping": true,
"sku": null,
"product_id": 11359829,
"variant_id": 17549956,
"title": "sản phẩm áp dụng KM đc 0 đ có khối lượng",
"variant_title": "Xanh / S",
"vendor": null,
"name": "sản phẩm áp dụng KM đc 0 đ có khối lượng - Xanh / S",
"image": "https://bizweb.dktcdn.net/105/299/218/products/cho-corgi-7-min-1.jpg?v=1632891113833",
"url": "/san-pham-0-d-co-khoi-luong?variantId=17549956",
"properties": {}
}
],
"total_weight": 5,
"item_count": 1,
"total_discounts": 0,
"total_price": 666666,
"total_line_items_price": 666666,
"requires_shipping": true,
"note": "",
"attributes": []
}
Ví dụ giỏ hàng rỗng
{
"token": "2938bca6172e7273d5856817de22e42f",
"items": [],
"total_weight": 0,
"item_count": 0,
"total_discounts": 0,
"total_price": 0,
"total_line_items_price": 0,
"requires_shipping": false,
"note": null,
"attributes": []
}
POST /cart/add.js
Sử dụng api này để thêm phiên bản sản phẩm vào giỏ hàng
Ví dụ:
jQuery.post('/cart/add.js', {
variantId: 17581931,
quantity: 1
})
Thêm phiên bản với thuộc tính
Bạn có thể thêm phiên bản vào giỏ hàng có thuộc tính của item bằng cách sử dụng tham số properties
jQuery.post('/cart/add.js', {
variantId: 17581931,
quantity: 1,
properties: {
'first name': 'An'
}
})
// response:
{
"id": 1,
"variant_id": 17581931,
"quantity": 1,
...
"properties": {
"first name": "An"
}
}
Dữ liệu trả về
Khi thêm thành công phiên bản, api trả về thông tin line item được thêm
Ví dụ
{
"id": 1,
"grams": 0,
"price": 20000.0,
"price_final": 20000.0,
"line_price": 40000.0,
"line_price_final": 40000.0,
"price_original": 20000.0,
"line_price_orginal": 40000.0,
"line_price_original": 40000.0,
"total_discount": 0,
"quantity": 2,
"requires_shipping": true,
"sku": null,
"product_id": 11365744,
"variant_id": 17581931,
"title": "bé trai",
"variant_title": "Default Title",
"vendor": null,
"name": "bé trai",
"image": "https://bizweb.dktcdn.net/105/299/218/products/ddi4os8-7041e05c-2df9-4f27-99fa-d5728f090988.png?v=1653540406460",
"url": "/be-trai?variantId=17581931",
"properties": {
"first name": "An"
}
}
Lỗi trả về khi phiên bản không tồn tại
Ví dụ
{
"status": 422,
"message": "Cart Error",
"description": "Cannot find variant"
}
POST /cart/update.js
Sử dụng api này để cập nhật số lượng trong line item, ghi chú hoặc thuộc tính của giỏ hàng
Cập nhật số lượng line item
Ví dụ cập nhật line item có id phiên bản là 17581931
với số lượng 2
, id phiên bản là 794864233
với số lượng 3
jQuery.post('/cart/update.js', {
updates: {
17581931: 2,
794864233: 3
}
});
Cập nhật số lượng line item sử dụng chỉ số line item
Ví dụ cập nhật line item 1, 2 với số lượng tương ứng 2
, 3
jQuery.post('/cart/update.js', {
lines: [2, 3]
});
Cập nhật ghi chú đơn hàng
jQuery.post('/cart/update.js', {
note: 'This is a note about my order'
});
Cập nhật thuộc tính của giỏ hàng
jQuery.post('/cart/update.js', {
attributes: {
'First name': 'Lan'
}
});
Dữ liệu trả về
Khi cập nhật thành công api trả về thông tin giỏ hàng
Lỗi trả về khi phiên bản không tồn tại
Khi ID gửi lên không thuộc về phiên bản nào
{
"status": 422,
"message": "Cart Error",
"description": "Cannot find variant"
}
POST /cart/change.js
Sử dụng api này để cập nhật số lượng, thuộc tính của một line item. Bạn chỉ có thể thay đổi item đã tồn tại trong giỏ hàng và chỉ có thể thay đổi 1 line item mỗi lần
Để định danh line item cần cập nhật, bạn có thể sử dụng ID của phiên bản sản phẩm hoặc tham số line
là chỉ số line item trong danh sách line item của giỏ hàng
Cập nhật số lượng trong line item
jQuery.post('/cart/change.js', {
line: 2,
quantity: 1
});
Cập nhật thuộc tính của line item
jQuery.post('/cart/change.js', {
variantId: 794864233,
properties: {
'First name': 'An'
}
});
Dữ liệu trả về
Khi cập nhật thành công api trả về thông tin giỏ hàng
Lỗi khi line
gửi lên không thuộc về line item nào
{
"status": 422,
"message": "Cart Error",
"description": "Cannot find variant"
}
POST /cart/clear.js
Sử dụng api này để đặt số lượng trong tất cả line item về 0
Dữ liệu trả về
Thông tin giỏ hàng trống sẽ được trả về.
Ví dụ
{
"token": "6756c1cc3cf0b14c9b756d26e9d012ac",
"items": [],
"total_weight": 0,
"item_count": 0,
"total_discounts": 0,
"total_price": 0,
"total_line_items_price": 0,
"requires_shipping": false,
"note": null,
"attributes": []
}
Đối tượng
Cart
Thông tin giỏ hàng
Thuộc tính
attributes
Danh sách key-value
thuộc tính thêm của giỏ hàng
item_count (number)
Số lượng item trong giỏ hàng
items (mảng line_item)
Danh sách line item trong giỏ hàng
note (string)
Ghi chú cho giỏ hàng
token (string)
token của giỏ hàng
total_discounts (number)
Tổng giá trị khuyến mãi trong giỏ hàng
total_line_items_price (number)
Tổng giá trị line item trước khi áp dụng chương trình khuyến mãi.
total_price (number)
Tổng giá trị line item sau khi áp dụng chương trình khuyến mãi.
total_weight (number)
Tổng khối lượng tính theo grams các line item của giỏ hàng
Line_item
Thông tin line item trong giỏ hàng
Thuộc tính
grams (number)
Khối lượng của phiên bản liên kết với line item tính theo gram
id (number)
Id của line item
image (string)
Ảnh của line item. Có thể là ảnh phiên bản hoặc ảnh đại diện sản phẩm liên kết với line item
line_price_final (number)
Giá trị sau khuyến mãi của line item. Giá trị này tương ứng với price_final
nhân quanity
line_price_original (number)
Giá trị trước khuyến mãi của line item. Giá trị này tương ứng với price_original
nhân quanity
name (string)
Tên của sản phẩm liên kết với line item
price_final (number)
Giá sau khuyến mãi của line item
price_original (number)
Giá trước khuyến mãi của line item
product_id (number)
ID của sản phẩm liên kết với line item
properties
key-value
thuộc tính thêm của line item
quantity (number)
Số lượng của line item
requires_shipping (boolean)
Trả về true
nếu có phiên bản liên kết với line item yêu cầu vận chuyển, ngược lại trả về false
sku (string)
sku của phiên bản liên kết với line item
title (string)
Tiêu đề của line item
total_discount (number)
Giá trị khuyến mãi áp dụng cho line item. Lưu ý giá trị này chưa tính đến quantity
url (string)
Đường dẫn tới phiên bản liên kết với line item
variant_id (number)
ID của phiên bản liên kết với line item
variant_title (string)
Tiêu đề của phiên bản liên kết với line item
vendor (string)
Tên nhà cung cấp của phiên bản liên kết với line item
Thuộc tính Deprecated
line_price (number)
Giá trị sau khuyến mãi của line item. Giá trị này tương ứng với price
nhân quanity
Thuộc tính line_item.line_price
đã được thay thế bởi các thuộc tính line_item.line_price_final
và line_item.line_price_original
price (number)
Giá sau khuyến mãi của line item
Thuộc tính line_item.price
đã được thay thế bởi các thuộc tính line_item.price_final
và line_item.price_original