Magento - 报价和订单之间的区别

时间:2012-02-14 08:06:29

标签: php zend-framework magento

我对付款方式中如何调用报价和订单表示怀疑。我所知道的是,Quote是一组提供的产品或服务。在Magento引用数据是在单击Onepage Checkout的下订单按钮之前创建的。下订单后,在Magento中创建订单数据。如果确认订单,则发票将在订单旁边。

但是我想知道为什么验证方法中的类Mage_Payment_Model_Method_Abstract检查Info类实例是否是Mage_Sales_Model_Order_Payment的实例取getOrder()否则取getQuote()

我不清楚这一点。 Validate()函数是否被调用两次,即在创建Quote时第一次调用,第二次调用Order时,或者调用Payment Method Class本身两次。

请澄清我的困惑。

/**
         * Validate payment method information object
         *
         * @param   Varien_Object $info
         * @return  Mage_Payment_Model_Abstract
         */
        public function validate()
        {
             /**
              * to validate paymene method is allowed for billing country or not
              */
             $paymentInfo = $this->getInfoInstance();
             if ($paymentInfo instanceof Mage_Sales_Model_Order_Payment) {
                 $billingCountry = $paymentInfo->getOrder()->getBillingAddress()->getCountryId();
             } else {
                 $billingCountry = $paymentInfo->getQuote()->getBillingAddress()->getCountryId();
             }
             if (!$this->canUseForCountry($billingCountry)) {
                 Mage::throwException($this->_getHelper()->__('Selected payment type is not allowed for billing country.'));
             }
             return $this;
        }

1 个答案:

答案 0 :(得分:16)

Magento中的一句话基本上是一个尚未放置的订单。它包含产品项目(购物车),地址和付款/运输方式。只要您将商品添加到购物车,就会创建它。结账时,计费和发货数据会添加到报价中。最后,当用户点击下订单时,报价将转换为订单。

要回答有关付款验证的问题:付款方式包含在报价和订单中,并在两个地方都经过验证。付款方式可能仅限于某些国家/地区,因此在验证方法中,报价的付款方式将验证报价国家/地区,订单的付款方式将验证订单国家/地区。

相关问题