在结帐时获取下一个订单增量ID?

时间:2015-06-01 18:23:01

标签: magento

我正在开发自定义支付网关。它使用 OrderIncrementID 来标识所支付的订单。我发布了 订单后的所有功能,即结帐后,但结帐页面本身除外。

在结帐页面中,未创建订单,获取 OrderIncrementID 似乎非常困难。我们必须在结账时覆盖订单创建,以便在付款方式选择之后创建它,这听起来非常复杂并且很难覆盖流程。另一种方法是使用 QuoteID ,但权衡是我必须实现从 QuoteID OrderIncrementID 的转换。

在这种情况下,我可以在结帐页面中获取 OrderIncrementID 尤其是在付款方式选择

之后

2 个答案:

答案 0 :(得分:0)

您实际上已经在报价上有一个保留的订单ID 你必须这样做:

$quote = Mage::getSingleton('checkout/session')->getQuote();
$quote->getReservedOrderId(); // this will be your order_increment_id

答案 1 :(得分:0)

我开发了以下代码来获取下一个增量ID

我不确定这会给出正确的结果。 但是,这可以帮助你

请在任何资源模型中显示要调用的代码 例如:将代码放在Names_Test_Model_Resource_Test类

public function getNextIncrementId(){
    $store = Mage::app()->getStore();
    $resource = Mage::getSingleton('core/resource');
    $readConnection = $resource->getConnection('core_read');

    $entityStoreTable = $resource->getTableName('eav_entity_store');
    $entityTypeTable = $resource->getTableName('eav_entity_type');

    $selectEntity = $readConnection->select()->from($entityTypeTable, "*")
        ->where("entity_type_code = 'order'");

    $entityTypeRow = $readConnection->fetchRow($selectEntity);

    if(isset($entityTypeRow['entity_type_id']) && $entityTypeRow['entity_type_id'] > 0){
        $orderEntityTypeId = $entityTypeRow['entity_type_id'];
        $entityStoreSelect = $readConnection->select()->from($entityStoreTable, "*")
            ->where("store_id = ? AND entity_type_id = $orderEntityTypeId", $store->getId());

        $row = $readConnection->fetchRow($entityStoreSelect);

        $lastIncrementId = 0;
        if(isset($row['increment_last_id'])){
            $lastIncrementId = $row['increment_last_id'] + 1;
        }
        return $lastIncrementId;
    }

    return 0;
}

要调用此功能,您可以使用

$nextIncrementId = Mage::getResourceModel('test/test')->getNextIncrementId();

我们还可以从订单表中找到最后一个增量ID

请评论更好的解决方案