Tôi có nghi ngờ về cách báo giá và đơn đặt hàng đang được gọi trong phương thức thanh toán. Những gì tôi biết là Trích dẫn là một tập hợp các sản phẩm hoặc dịch vụ được cung cấp. Trong Magento Dữ liệu trích dẫn được tạo ngay trước khi nhấp vào nút Đặt hàng của Onepage Checkout. Sau khi Order được đặt, dữ liệu Order được tạo trong Magento. Hóa đơn đến bên cạnh Đặt hàng nếu Đơn đặt hàng được xác nhận.Magento - Sự khác biệt giữa Báo giá và Đơn hàng
Nhưng tôi đã tự hỏi tại sao các lớp Mage_Payment_Model_Method_Abstract trong Validate Phương pháp kiểm tra Thông tin lớp Instance nếu nó là một thể hiện của Mage_Sales_Model_Order_Payment mất getOrder() khác mất getQuote()
Tôi không rõ ràng với điều này. Liệu các Validate() chức năng được gọi là hai thời gian i.e lần đầu tiên khi báo giá được tạo ra và lần thứ hai khi Order được tạo ra HOẶC hiện phương thức thanh toán lớp chính nó được gọi là hai lần.
Hãy làm rõ sự nhầm lẫn của tôi.
/**
* 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;
}