Php Magento-如何获取订单ID和订单的两个字母的状态缩写

Php Magento-如何获取订单ID和订单的两个字母的状态缩写,php,magento,checkout,magento-1.9,Php,Magento,Checkout,Magento 1.9,所以我必须把变量发送到附属网站,他们需要订单id、价格、两个字母的州缩写和国家缩写。我已经得到了价格和国家缩写。但我仍然需要订单id和两个字母的州缩写。我现在掌握的代码如下: $order = Mage::getSingleton('checkout/session')->getLastRealOrderId();//doesnt work $amount = Mage::getModel('checkout/cart')->getQuote()->getSubtotal();

所以我必须把变量发送到附属网站,他们需要订单id、价格、两个字母的州缩写和国家缩写。我已经得到了价格和国家缩写。但我仍然需要订单id和两个字母的州缩写。我现在掌握的代码如下:

$order = Mage::getSingleton('checkout/session')->getLastRealOrderId();//doesnt work
$amount = Mage::getModel('checkout/cart')->getQuote()->getSubtotal();//works
$stateId = Mage::getSingleton('checkout/session')->getQuote()->getShippingAddress()->getData('region');//Gives full name of State
$countryId = Mage::getSingleton('checkout/session')->getQuote()->getShippingAddress()->getData('country_id');//works

echo " display: $order $amount $stateId $countryId";//prints out the variables
我一直在这里查看订单id的所有代码,但没有返回任何内容。所以我想知道我的错误在哪里/为什么它没有打印出任何东西

第二件事是,我想知道是否有一个简单的方法来获得2-leter状态缩写?我也试过用“region_id”代替“region”,但那只会给我数字代码(不是字母代码)


如果您能回答以上任何一个问题,我们将不胜感激。

最好的方法是通过
success.phtml
文件发送此信息,因为只有在该文件中,您才能获得该信息,并避免发送未完成订单的订单ID(失败的贝宝交易等)

1) 根据您的签出方法,您的数据中可能有州代码,也可能没有州代码

所以如果你通过

$stateId = Mage::getSingleton('checkout/session')->getQuote()->getShippingAddress()->getData('region');
然后在后面添加此代码:

$states = Mage::getModel('directory/country')->load('US')->getRegions();//get list of states 
    foreach($states as $state){
        if($state[default_name] == $stateId){ //check if the names match
            echo $state[code]; //get code
        } 
    }   
2) 在成功页面

$orderId = $this->getOrderId();

应该可以工作。

加载订单后,可以调用“区域代码”或getRegionCode()。我正在使用magento 1.9。不确定以前的版本中是否有此功能。

显示此信息的上下文是什么?只有在将报价转换为订单后,才会将订单ID分配给报价。我只是将其放在标题中。如果我理解正确,当有人完成结账时,此功能才起作用但是$order在此之前是空的?你应该如何将数据发送给你的分支机构,何时需要发送?一旦下了订单,数据就会发送。他们给了我我已经输入的代码,我只需要获得与订单对应的实际值。当我将此代码放入success.phtml页面时,OrderId确实有效但是我的其他变量(amount、stateId和countryId)是空的。有没有办法让这四个变量都起作用呢?
$order=Mage::getModel('sales/order')->>loadByIncrementId($orderId);$total=$order->getGrandTotal();$subtotal=$order->getSubtotal();
所有这些都应该起作用