所以我必须将变量发送到联盟网站,他们需要订单ID,价格,2个字母的状态abbriviation和国家/地区缩写。我已经得到了价格和国家。但我仍然需要订单ID和2个字母的州名缩写。我现在的代码如下:
$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级州的缩写?我也尝试了'region_id'而不是'region',但它只给了我数字代码(不是字母代码)。
非常感谢对这两个问题的答案。
答案 0 :(得分:2)
加载订单后,您可以调用'region_code'或getRegionCode()。我正在使用magento 1.9。不确定它是否在以前的版本中可用。
答案 1 :(得分:0)
最好的方法是通过success.phtml
文件发送此信息,因为只有在该文件中您才能获得该信息,并避免发送未完成订单的订单ID(PayPal交易失败等)。
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();
应该有用。