【问题标题】:Magento : Get all Shipping RatesMagento : 获取所有运费
【发布时间】:2012-08-13 12:17:15
【问题描述】:

如何获得一个数组/对象,其中包含 magento 中的运费,例如统一费率、免费送货等?

与所选地址或产品无关。

【问题讨论】:

    标签: magento


    【解决方案1】:

    这是另一种方式。您需要设置邮编和国家/地区 - 即使这对您的运输方式无关紧要。

    // Change to your postcode / country.
    $zipcode = '2000';
    $country = 'AU';
    
    // Update the cart's quote.
    $cart = Mage::getSingleton('checkout/cart');
    $address = $cart->getQuote()->getShippingAddress();
    $address->setCountryId($country)
            ->setPostcode($zipcode)
            ->setCollectShippingrates(true);
    $cart->save();
    
    // Find if our shipping has been included.
    $rates = $address->collectShippingRates()
                     ->getGroupedAllShippingRates();
    
    foreach ($rates as $carrier) {
        foreach ($carrier as $rate) {
            print_r($rate->getData());
        }
    }
    

    【讨论】:

    • 非常感谢!请注意:“$cart->save();”行没有必要。
    • 这是否会根据设置的 $zipcode 向运输公司发布另一个请求以获取费率?
    • @Silas Palmer,我已经使用了您上面的代码,它在添加到购物车产品添加后工作正常......但是在添加到购物车添加之前我如何使用您的代码。请帮帮我。
    【解决方案2】:

    您不能这样做“无关紧要”,因为您需要设置地址数据(账单或运输,如果只有账单,然后运输设置与账单相同:国家、邮编、地区取决于您的运输方式)和报价在至少一个简单的项目(引用现有的、虚拟的和可下载的产品不需要运输)。之后,您可以调用您的报价对象

    $quote->getShippingAddress()->getGroupedAllShippingRates();
    

    【讨论】:

    • 代码中有一个小故障。您的变量设置为“()”
    【解决方案3】:

    我想通了……

     $carriers = Mage::getStoreConfig('carriers', Mage::app()->getStore()->getId());
    foreach ($carriers as $carrierCode => $carrierConfig) {
    print_R($carrierConfig);
    }
    

    感谢您的帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-15
      • 1970-01-01
      • 2015-11-29
      • 1970-01-01
      • 2013-05-11
      • 2012-02-11
      • 1970-01-01
      • 2012-07-09
      相关资源
      最近更新 更多