我正在开发自定义支付网关。它使用 OrderIncrementID 来标识所支付的订单。我发布了 订单后的所有功能,即结帐后,但结帐页面本身除外。
在结帐页面中,未创建订单,获取 OrderIncrementID 似乎非常困难。我们必须在结账时覆盖订单创建,以便在付款方式选择之后创建它,这听起来非常复杂并且很难覆盖流程。另一种方法是使用 QuoteID ,但权衡是我必须实现从 QuoteID 到 OrderIncrementID 的转换。
在这种情况下,我可以在结帐页面中获取 OrderIncrementID ? 尤其是在付款方式选择
之后答案 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
请评论更好的解决方案