【问题标题】:Magento one click checkoutMagento 一键结账
【发布时间】:2017-10-06 14:49:55
【问题描述】:

我尝试为 Magento-1.x 实现一键式结帐,但如果我使用我的结帐,他们在购买后会出现未选择运输方式的问题。

这是我的结帐控制器的代码。

    <?php


    class MCP_Debitapi_CheckoutController extends Mage_Core_Controller_Front_Action
    {
        public function oneClickAction()
        {

            /**
             * @var Mage_Catalog_Model_Product $product
             */
            $options = [];

            $product = Mage::getModel('catalog/product')->load((int)$_POST['product']);
            /**
             * create a cart to work with
             * @var Mage_Checkout_Model_Cart $cart
             */
            $cart = Mage::getModel('checkout/cart');
            $cart->addProduct($product,$options);
            $cart->save();
            /**
             * @var Mage_Checkout_Model_Type_Onepage $checkout
             */
            $checkout = Mage::getSingleton('checkout/type_onepage');
            $checkout->getQuote()->clearInstance();
            $checkout->initCheckout();
            /**
             * @var Mage_Customer_Helper_Data $customerHelper
             */
            $customerHelper = Mage::helper('customer');
            $billingAddress = $customerHelper->getCustomer()->getDefaultBillingAddress();
            $shippingAddress = $customerHelper->getCustomer()->getDefaultShippingAddress();
            if(!$billingAddress) {
                Mage::throwException('cannot create one-click order without default billing address');
                return false;
            }

            $checkout->getQuote()->getBillingAddress()->importCustomerAddress($billingAddress)->setSaveInAddressBook(false);
            $checkout->getQuote()->getShippingAddress()->importCustomerAddress($shippingAddress)->setSaveInAddressBook(false);
            $checkout->getQuote()->getShippingAddress()->setShippingDescription('Fixed')->save();
            $checkout->getQuote()->getShippingAddress()->setCollectShippingRates(true);
            $checkout->saveShippingMethod('flatrate_flatrate');
            $checkout->savePayment(array('method'=>'mcpdebitapi'));
            $checkout->getQuote()->collectTotals();
            $checkout->saveOrder();
            $cart->truncate();
            $cart->save();
            $cart->getItems()->clear()->save();
            $checkout->getQuote()->setIsActive(false)->save();
            $this->_redirect('checkout/onepage/success',array('_secure'=>true));
        }

    }

我怎样才能找到并设置正确的运输方式?

【问题讨论】:

    标签: magento


    【解决方案1】:

    您似乎正在尝试将运输方式直接添加到结帐对象而不是地址。

    试一试:

    $checkout->getQuote()->getShippingAddress()->setShippingMethod('flatrate_flatrate');
    $checkout->saveShippingMethod('flatrate_flatrate');
    

    代替:

    $checkout->saveShippingMethod('flatrate_flatrate');
    

    希望对你有帮助:)

    【讨论】:

    • 嗨,我试过了,但得到了相同的结果。我添加了例外以便更好地理解:
    【解决方案2】:
        Please specify a shipping method.
    
        Trace:
        #0 /srv/www/shops/magento-1.9.3.4/app/code/core/Mage/Sales/Model/Service/Quote.php(303): Mage::throwException('Please specify ...')
        #1 /srv/www/shops/magento-1.9.3.4/app/code/core/Mage/Sales/Model/Service/Quote.php(222): Mage_Sales_Model_Service_Quote->_validate()
        #2 /srv/www/shops/magento-1.9.3.4/app/code/core/Mage/Sales/Model/Service/Quote.php(238): Mage_Sales_Model_Service_Quote->submitNominalItems()
        #3 /srv/www/shops/magento-1.9.3.4/app/code/core/Mage/Checkout/Model/Type/Onepage.php(815): Mage_Sales_Model_Service_Quote->submitAll()
        #4 /srv/www/shops/magento-1.9.3.4/app/code/local/MCP/Debitapi/controllers/CheckoutController.php(47): Mage_Checkout_Model_Type_Onepage->saveOrder()
        #5 /srv/www/shops/magento-1.9.3.4/app/code/core/Mage/Core/Controller/Varien/Action.php(418): MCP_Debitapi_CheckoutController->oneClickAction()
        #6 /srv/www/shops/magento-1.9.3.4/app/code/core/Mage/Core/Controller/Varien/Router/Standard.php(254): Mage_Core_Controller_Varien_Action->dispatch('oneClick')
        #7 /srv/www/shops/magento-1.9.3.4/app/code/core/Mage/Core/Controller/Varien/Front.php(172): Mage_Core_Controller_Varien_Router_Standard->match(Object(Mage_Core_Controller_Request_Http))
        #8 /srv/www/shops/magento-1.9.3.4/app/code/core/Mage/Core/Model/App.php(365): Mage_Core_Controller_Varien_Front->dispatch()
        #9 /srv/www/shops/magento-1.9.3.4/app/Mage.php(683): Mage_Core_Model_App->run(Array)
        #10 /srv/www/shops/magento-1.9.3.4/index.php(83): Mage::run('', 'store')
        #11 {main}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-15
      • 2023-03-16
      • 1970-01-01
      • 2012-08-29
      • 2013-04-10
      • 2014-10-29
      相关资源
      最近更新 更多