Skip to content

cart

shopping cart

Overview

k.commerce.cart provides shopping cart related operations, supporting functions such as creating a shopping cart, adding products, updating delivery methods, and using coupons.

Cart data structure

ts
interface Cart {
    id: string;              // Cart ID
    customerId: string;      // Customer ID
    contact: string;         // Contact email
    country: string;         // Country
    discountCodes: string[]; // Discount codes
    note: string;            // Note
    lines: CartItem[];       // Cart items
    shippingId: string;      // Shipping method ID
    digitalShippingId: string; // Digital shipping method ID
    insuranceAmount: number; // Insurance amount
    extensionButton: { text: string; url: string } | null; // Extension button
    redeemPoints: boolean;   // Whether points are used
    createdAt: Date;         // Created time
    updatedAt: Date;         // Updated time
}

CartDetail data structure

ts
interface CartDetail {
    id: string;
    customerId: string;
    contact: string;
    country: string;
    currency: { code: string; symbol: string; rate: number }; // Currency information
    discountCodes: string[];
    activeDiscountCodes: string[]; // Active discount codes
    note: string;
    discountAllocations: DiscountAllocation[]; // Automatic discount information
    shippingAllocations: ShippingAllocation[]; // Shipping methods
    shippingAmount: number;       // Shipping amount
    insuranceAmount: number;      // Insurance amount
    subtotalAmount: number;       // Subtotal amount
    totalAmount: number;          // Total amount
    taxAmount: number;            // Tax amount
    totalQuantity: number;        // Total quantity
    redeemPoints: number;         // Redeemed points
    pointsDeductionAmount: number; // Points deduction amount
    earnPoints: number;          // Earned points
    shipping: Shipping | null;   // Shipping method
    lines: CartItem[];           // Cart items
}

CartItem data structure

ts
interface CartItem {
    variantId: string;            // Variant ID
    productId: string;             // Product ID
    title: string;                // Product title
    options: Option[];            // Product options
    sku: string;                  // Product SKU
    image: string;                // Product image
    originalPrice: number;        // Original product price
    price: number;                // Product price
    discountAllocations: DiscountAllocation[]; // Automatic discount information
    quantity: number;             // Product quantity
    totalQuantity: number;        // Total product quantity
    amount: number;               // Product subtotal amount
    taxAmount: number;            // Product tax amount
    inventory: number;             // Product inventory
    groupName: string;            // Product group name
    isMain: boolean;              // Whether it is the main product
    note: string;                 // Product note
}

ShippingAllocation data structure

ts
interface ShippingAllocation {
    cost: number;     // Shipping cost
    title: string;    // Shipping method title
    isAddtional: boolean; // Whether it is additional shipping
}

create()

Create a shopping cart.

ts
k.api.post(() => {
    const cartId = k.commerce.cart.create({
        extensionButton: { text: 'Test', url: '/test' },
        insuranceAmount: 100
    })
    return { cartId }
})

parameter:

ParameterTypeRequiredDescription
optionsobjectnoOptional parameters
options.extensionButton{ text: string, url: string }noExtension button
options.insuranceAmountnumbernoInsurance amount

Return: string - Shopping Cart ID

get()

Get shopping cart information.

ts
k.api.get(() => {
    return k.commerce.cart.get(cartId)
})

parameter:

ParameterTypeRequiredDescription
cartIdstringyesCart ID

Return: Cart

getDetail()

Get shopping cart details (including amount calculation).

ts
k.api.get(() => {
    return k.commerce.cart.getDetail(cartId, {
        country: 'China',
        province: 'Guangdong',
        city: 'Guangzhou'
    })
})

parameter:

ParameterTypeRequiredDescription
cartIdstringyesCart ID
optionsobjectnoOptional parameters
options.countrystringnonation
options.provincestringnoprovince
options.citystringnoCity

Return: CartDetail

addOrUpdateLine()

Add or update shopping cart items.

ts
k.api.post(() => {
    const product = k.commerce.product.get('test-product')
    const variantId = product.variants[0].id

    k.commerce.cart.addOrUpdateLine(cartId, variantId, 2, {
        note: 'test line',
        groupName: 'Bundle Group 1',
        isMain: true
    })
    return 'success'
})

parameter:

ParameterTypeRequiredDescription
cartIdstringyesCart ID
variantIdstringyesProduct variant ID
quantitynumberyesquantity
optionsobjectnoOptional parameters
options.notestringnoRemark
options.groupNamestringnoBundle product group name (lines with the same groupName will become bundled products)
options.isMainbooleannoWhether to serve as the main product in a bundled product
options.extensionButton{ text: string, url: string }noExtension button

Return: void

removeLine()

Delete shopping cart items.

ts
k.api.post(() => {
    const product = k.commerce.product.get('test-product')
    const variantId = product.variants[0].id

    k.commerce.cart.removeLine(cartId, variantId)
    return 'success'
})

parameter:

ParameterTypeRequiredDescription
cartIdstringyesCart ID
variantIdstringyesProduct variant ID
groupNamestringnoBundled product group name

Return: void

updateAdditional()

Update cart extensions.

ts
k.api.post(() => {
    k.commerce.cart.updateAdditional(cartId, {
        redeemPoints: true,
        extensionButton: { text: 'Test', url: '/test' },
        insuranceAmount: 100
    })
    return 'success'
})

parameter:

ParameterTypeRequiredDescription
cartIdstringyesCart ID
optionsobjectyesUpdate content
options.redeemPointsbooleannoWhether to use points
options.extensionButton{ text: string, url: string }noExtension button
options.insuranceAmountnumbernoInsurance amount

Return: void

updateContact()

Update shopping cart customer contact information.

ts
k.api.post(() => {
    k.commerce.cart.updateContact(cartId, 'test@test.com')
    return 'success'
})

note

If email exists in customer, customerId will be automatically bound; otherwise, only email will be filled in

parameter:

ParameterTypeRequiredDescription
cartIdstringyesCart ID
emailstringyesContact email

Return: void

updateDigitalShipping()

Updated digital delivery methods.

ts
k.api.post(() => {
    k.commerce.cart.updateDigitalShipping(cartId, shippingId)
    return 'success'
})

parameter:

ParameterTypeRequiredDescription
cartIdstringyesCart ID
shippingIdstringyesNumeric shipping method ID

Return: void

updateDiscountCodes()

Update shopping cart coupon code.

ts
k.api.post(() => {
    const discount = k.commerce.discount.list()[0]
    k.commerce.cart.updateDiscountCodes(cartId, [discount.code])
    return 'success'
})

parameter:

ParameterTypeRequiredDescription
cartIdstringyesCart ID
discountCodesstring[]yesarray of coupon codes

Return: void

updateShipping()

Update shopping cart shipping method.

ts
k.api.post(() => {
    k.commerce.cart.updateShipping(cartId, shippingId)
    return 'success'
})

parameter:

ParameterTypeRequiredDescription
cartIdstringyesCart ID
shippingIdstringyesShipping method ID

Return: void

structure

Cart properties

PropertyDescriptionType
IDCart IDstring
customerIdCustomer IDstring
contactContact emailstring
countrynationstring
discountCodescoupon codestring[]
noteRemarkstring
linesShopping cart itemsCartItem[]
shippingIdShipping method IDstring
digitalShippingIdNumeric shipping method IDstring
insuranceAmountInsurance amountnumber
extensionButtonExtension button{ text: string, url: string } | null
redeemPointsWhether to use pointsboolean
createdAtcreation timeDate
updatedAtUpdate timeDate

CartDetail Property

PropertyDescriptionType
IDCart IDstring
customerIdCustomer IDstring
contactContact emailstring
countrynationstring
currencycurrency information{ code: string, symbol: string, rate: number }
discountCodescoupon codestring[]
activeDiscountCodesActivated coupon codestring[]
noteRemarkstring
discountAllocationsAutomatic discount informationDiscountAllocation[]
shippingAllocationsShipping method listShippingAllocation[]
shippingAmountDelivery amountnumber
insuranceAmountInsurance amountnumber
subtotalAmountSubtotal amountnumber
totalAmountlump sumnumber
taxAmounttaxnumber
totalQuantitytotal quantitynumber
redeemPointsintegralnumber
pointsDeductionAmountPoints deduction amountnumber
earnPointsGet the amount of pointsnumber
shippingDelivery methodShipping| null
linesShopping cart itemsCartItem[]

CartItem Properties

PropertyDescriptionType
variantIdProduct specification IDstring
productIdProduct IDstring
titleProduct namestring
optionsProduct options{ name: string, value: string }[]
skuProduct SKUstring
imageProduct picturesstring
originalPriceProduct original pricenumber
priceProduct pricenumber
discountAllocationsAutomatic discount informationDiscountAllocation[]
quantityProduct quantitynumber
totalQuantityTotal quantity of goodsnumber
amountProduct subtotal amountnumber
taxAmountCommodity taxnumber
inventoryProduct inventorynumber
groupNameProduct group namestring
isMainIs it the main product?boolean
noteProduct remarksstring

ShippingAllocation Property

PropertyDescriptionType
costDelivery feenumber
titleShipping method namestring
isAdditionalIs it an additional shipping fee?boolean