我目前正在为电子商务网站(Lemonstand)构建一个模块。我的商店出售普通书籍和电子书,并根据购物车中所有商品的小计收取不同的运费(小于20美元的小计7美元运费,20美元到50美元之间的14美元运费)。目前,该网站仅使用购物车中所有商品的小计来确定应该应用的费率。问题是,我只想用普通书的小计来计算运费,因为显然电子书不需要运输。
Lemonstand平台有一些我用来帮助解决这个问题的built_in函数。在计算运费之前调用update_shipping_quote函数。它将用于更改购物车商品的小计,以便可以使用非电子书的小计来计算运费。
以下是该功能的API文档:https://v1.lemonstand.com/api/event/shop:onupdateshippingquote/
这是一些给我带来麻烦的代码。我想知道我最后得到的值($ non_ebook_subtotal)是否实际包含它应该的值。
如果有人能想出更好的方法来做我想做的事情,请分享。
//$params is an array containing things like individual item price
//Here I get the cart items and put them into var
公共职能 update_shipping_quote($ shipping_option,$ params){
$cart_items = $params['cart_items'];
//find all products that are ebooks
foreach ($cart_items-> items as $item)
{
$product = $item->product;
if($product->product_type->code == 'ebook') {
$isEbook = true;
}
}
//add price of all ebooks into $ebook_subtotal
foreach ($cart_items as $item) {
$product = $item -> product;
if ($isEbook == true) {
$ebook_subtotal = $ebook_subtotal + total_price($product);
}
}
//Calculating the subtotal of only the non-ebook products
$non_ebook_subtotal = $params['total_price'] - $ebook_subtotal;
//This returns the non_ebook_subtotal to be used for calculating shipping cost
return array('total_price' => $non_ebook_subtotal);
}
由于
答案 0 :(得分:1)
// get all variables needed
$totalprice = $params['total_price'];
$items = $params['cart_items'];
foreach ($items AS $item) {
// if is ebook
if ($item->product->product_type->code == 'ebook') {
// minus price of the item from total
$totalprice -= total_price($item->product);
}
}
return $totalprice;