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

标签 php zend-framework magento

我对付款方式中如何调用报价和订单有疑问。我所知道的是,报价是提供的一组产品或服务。在 magento 中,报价数据是在单击 Onepage Checkout 的下订单按钮之前创建的。下订单后,在 Magento 中创建订单数据。如果订单得到确认,发票会出现在订单旁边。

但我想知道为什么验证方法中的 Mage_Payment_Model_Method_Abstract 类会检查 Info 类 Instance,如果它是 Mage_Sales_Model_Order_Payment 的实例则采用 getOrder() 否则采用 getQuote()

这个我不是很清楚。 Validate() 函数是否被调用两次,即第一次是在创建报价时,第二次是在创建订单时,或者支付方法类本身是否被调用了两次。

请澄清我的困惑。

/**
         * 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;
        }

最佳答案

Magento 中的报价基本上是尚未下达的订单。它包含产品项目(购物车)、地址和付款/运输方式。它会在您将商品添加到购物车后立即创建。在结帐期间,账单和运输数据会添加到报价单中。最后,当用户点击下订单时,报价将转换为订单。

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

关于php - Magento - 报价和订单之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9273537/

相关文章:

php - 无法在postgresql pdo中插入和读取数据

php - 在 Zend Framework 中更改模块名称

zend-framework - Zend 框架 : strange url rewrite behavior

Magento 扩展核心管理 Controller

r - magento 2 休息 api : get cart items with images

php - Laravel in_array 验证规则

php - 如何让sql语句搜索百分号?

php - 增加文档管理系统中文件下载大小的限制

php - 在函数中将类名作为参数传递是什么意思?

apache - 从 IPv4 地址重定向到 127.0.0.1