我想创建一个新的付款方法。在结帐过程中,付款方法将重定向到第三方服务。我将reservedOrderId传递给第三方服务,它将在付款成功时返回此ID。如何通过reservedOrderId获取报价?或者是否需要在重定向到第三方服务之前将报价转换为订单?
t30tvxxf1#
由于保留的订单应该是唯一的,因此可以尝试以下操作:
$quote = Mage::getModel('sales/quote')->getCollection() ->addFieldToFilter('reserved_order_id', 'Your Order id') ->getFirstItem(); if ($quote->getId()) { //quote was found - $quote } else { //the quote does not exist. }
fcwjkofz2#
这样做效果很好:
Mage::getSingleton('sales/quote') ->load($orderId, 'reserved_order_id')
感谢@谢尔盖
d5vmydt93#
在Magento2中,您可以通过以下方式按保留的订单ID加载报价:
namespace Tschallacka\TestPlugin\Quote; use Magento\Quote\Model\QuoteFactory; use Magento\Quote\Model\ResourceModel\Quote as QuoteResource; class Test { const RESERVED_ORDER_FIELD = 'reserved_order_id'; protected $quoteFactory; protected $quoteResource; public function __construct( QuoteFactory $quoteFactory, QuoteResource $quoteResource ) { $this->quoteFactory = $quoteFactory; $this->quoteResource = $quoteResource; } /**@return \Magento\Quote\Model\Quote**/ public function loadQuote() { $quote = $this->quoteFactory->create(); $this->quoteResource->load($quote, 'test_quote', self::RESERVED_ORDER_FIELD); return $quote; } }
8ehkhllq4#
在发送给第三方之前,您最好将报价转换为订单。这将允许您获得订单的正确状态(已取消、已支付、欺诈......)。如果您确实需要在之后创建订单,您可以覆盖 Mage _sales_model_quote和mage_sales_model_resource_quote,以创建相应的函数loadByReservedOrderId(),该函数是一个资源函数,具有对数据库和模型的调用,以允许您在控制器上调用它。对于资源来说,这样东西就可以了。
public function loadByReservedOrderId($id){ $select = $this->_getReadAdapter()->select()->from(array('main_table'=>$this->getMainTable()), 'entity_id') ->where('main_table.reserved_order_id = ?', array($id)); return $this->_getReadAdapter()->fetchOne($select); }
对于型号:
public function loadByReservedOrderId($id) { if ($id == null){ return false; } $order_id = $this->_getResource()->loadByReservedOrderId($id); $this->load($order_id); return $this; }
4条答案
按热度按时间t30tvxxf1#
由于保留的订单应该是唯一的,因此可以尝试以下操作:
fcwjkofz2#
这样做效果很好:
感谢@谢尔盖
d5vmydt93#
在Magento2中,您可以通过以下方式按保留的订单ID加载报价:
8ehkhllq4#
在发送给第三方之前,您最好将报价转换为订单。这将允许您获得订单的正确状态(已取消、已支付、欺诈......)。
如果您确实需要在之后创建订单,您可以覆盖 Mage _sales_model_quote和mage_sales_model_resource_quote,以创建相应的函数loadByReservedOrderId(),该函数是一个资源函数,具有对数据库和模型的调用,以允许您在控制器上调用它。
对于资源来说,这样东西就可以了。
对于型号: