使用PHP构建自定义模块

时间:2014-03-18 03:52:56

标签: php

我目前正在为电子商务网站(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);


}

由于

1 个答案:

答案 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;