0

私のマジェントストアでは、チェックアウトプロセスをスキップするためのカスタムモジュールを追加しています. むかしむかし、うまくいきました。現在、エラーが発生しているようです。見積もりに追加されていない製品。

これが私のコードです

public function orderAction()
     {   

            if(!Mage::getSingleton('customer/session')->isLoggedIn()) 
            {  
                $this->_redirectUrl(Mage::getBaseUrl().'customer/account/login');
                return;
            }

            $qty = 1;

            $customer = Mage::getSingleton('customer/session')->getCustomer();
            $email = $customer->getEmail();         

            require_once 'app/Mage.php';

            Mage::app('default');

            $store = Mage::app()->getStore('default');

            $customerGet = Mage::getModel('customer/customer');
            $customerGet->setStore($store);
            $customerGet->loadByEmail($email);

            $quote = Mage::getModel('sales/quote');
            $quote->setStore($store);
            $quote->assignCustomer($customerGet);

            $option_id1 = "My License";
            $option_value1 = "1 License";                   

            $product1 = Mage::getModel('catalog/product')->load(2);

            $buyInfo1 = array('qty' => $qty, 'options' => array( $option_id1 => $option_value1));

            $quote->addProduct($product1, $qty);        

            $billingAddress = $quote->getBillingAddress()->addData($customer->getPrimaryBillingAddress());

            $shippingAddress = $quote->getShippingAddress()->addData($customer->getPrimaryShippingAddress());

            $shippingAddress->setCollectShippingRates(true)->collectShippingRates()
                            ->setShippingMethod('freeshipping_freeshipping')
                            ->setPaymentMethod('free');

            $quote->getPayment()->importData(array('method' => 'free'));
            $quote->collectTotals()->save();

            $service = Mage::getModel('sales/service_quote', $quote);
            $service->submitAll();          

            $order = $service->getOrder();  

            $this->_mailOrder();

            $cartHelper = Mage::helper('checkout/cart');
            //Get all items from cart
            $items = $cartHelper->getCart()->getItems();
            //Loop through all of cart items                        
            foreach ($items as $item) {
                $itemId = $item->getItemId();
                //Remove items, one by one
                $cartHelper->getCart()->removeItem($itemId)->save();
            }                       

            $this->_redirect('downloadable/customer/products/');

     }

     private function _mailOrder()
     {   

          $orders = Mage::getModel('sales/order')->getCollection();
          $orders = $orders->getLastItem()->getIncrementId();

          $ip_address = $_SERVER['REMOTE_ADDR'];

          $ip_address_set = Mage::getModel('sales/order')->loadByIncrementId($orders)
                    ->setRemoteIp($ip_address)
                    ->setCustomerNoteNotify('1')
                    ->setCustomerIsGuest('0')
                    ->save();

          $order_mail = new Mage_Sales_Model_Order();
          $incrementId = $orders;
          $order_mail->loadByIncrementId($incrementId);

          try
          {
            $order_mail->sendNewOrderEmail();
          } 

          catch (Exception $ex)
          {
          }               


     }

あなたの提案を私に与えてください。

ありがとう

4

2 に答える 2

0

addProduct 呼び出しで見積もりを保存しようとしましたか (これは 1.4 以降必要ですが、間違っている可能性があります)。

$quote->addProduct($product1, $qty)->save();

別の方法は、カートをインスタンス化し、それを使用してカートに追加することです。

$cart = Mage::getSingleton('checkout/cart');
$cart->addProduct($product, $qty);
$cart->save();

乗り方教えて!

于 2013-05-28T16:52:43.157 に答える
0

これで試してください

$cart = Mage::getSingleton('checkout/cart');
$cart->init();
$cart->addProduct($product_id,$qty);
$quote = $cart->getQuote();
$shippingAddress = $quote->getShippingAddress();
$shippingAddress->setShippingMethod('flatrate_flatrate')->save();

// update session
$session->setCartWasUpdated(true);

// save the cart
$cart->save();
Mage::getSingleton('checkout/session')->setCartWasUpdated(true);

要件に従ってコードを編集します。

ありがとう

于 2014-12-24T05:52:19.147 に答える