Magento SOAP v1 cart_product.add - 需要在sku的options数组中设置价格

时间:2014-01-01 17:41:37

标签: magento

$arrProducts = array(
    array(
        "sku" => "sku1",
        "qty" => 1,
        "options" => array(
            99 => '.50' // 99 is the price attribute id, I want to set this sku to $0.50
        )
    ),
    array(
        "sku" => "sku2",
        "quantity" => 1
    )
);

$resultCartProductAdd = $client->call($session, "cart_product.add", array($shoppingCartId, $arrProducts));

在sku1的选项数组中,如何设置要添加到购物车的价格并以结帐的总计算?

以上选项并未改变价格。 sku的原始价格仍然被添加到购物车而不是0.50美元。看How do I create a product with additional attributes in Magento via Soap/Java我仍然不理解。

我使用SOAP V1调用

进入Magento EE 1.13

1 个答案:

答案 0 :(得分:3)

要动态设置价格,您可以扩展API调用以将产品添加到购物车。需要扩展模型文件Mage_Checkout_Model_Cart_Product_Api并重写add方法以满足price属性。它看起来像这样

class Namespace_Module_Model_Cart_Product_Api extends Mage_Checkout_Model_Cart_Product_Api
{
    public function add($quoteId, $productsData, $store=null)
    {
       ...
       $result = $quote->addProduct($productByItem, $productRequest);
       if(isset($productItem['price']) && $productItem['price'] != null) {
           $result->setOriginalCustomPrice($productItem['price']);
       }
       ...
    }
}

然后,您可以在API调用中将价格添加到数据数组中。

array(
    "sku" => "sku1",
    "qty" => 1,
    "price" => 0.50,
)

添加调用会对报价发出collectTotals()调用,因此应根据自定义价格重新计算税金和货币等。您可能需要修改wsdl文件以接受新的price属性。没有经过测试,但在理论上应该有效。