2015-06-16 3 views
1

Так что я должен отправить переменные на партнерский веб-сайт, и им нужен идентификатор заказа, цена, двухбуквенная аббревиатура штата и аббревиатура страны. У меня уже есть цена и страна abbr. но мне все еще нужен идентификатор заказа и 2-буквенная аббревиатура. Код я прямо сейчас выглядит следующим образом:Magento - Как получить идентификатор заказа и 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 

Я смотрел на весь код здесь для идентификатора заказа, но ничего не возвращается ничего. Поэтому мне интересно, что я делаю неправильно с этим/почему он ничего не распечатывает.

Во-вторых, мне интересно, есть ли простой способ получить аббревиатуру состояния 2-leter? Я также попытался «region_id» вместо „регион“, но это просто дает мне код (а не буква кода).

ответы на любой из этих проблем, было бы весьма признателен.

+1

В каком контексте вы показываете эту информацию? Идентификатор заказа не присваивается цитате до тех пор, пока она не будет преобразована в заказ. – fantasticrice

+0

У меня просто это в заголовке. –

+0

Если я понимаю вас правильно, это будет работать, когда кто-то завершит проверку, но $ order будет пустым до тех пор? –

ответ

0

Лучший способ для отправки этой информации через файл success.phtml, так как только в этом файле вы получите эту информацию и не отправляете идентификаторы заказа для незавершенных заказов (неудачные транзакции в PayPal и т. д.)

1) в зависимости от способа выписки вы можете или не можете введите код состояния в свои данные.

Итак, если вы получили название stat эс по

$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(); 

должен работать.

+0

Когда я помещал этот код на страницу success.phtml, OrderId работал, но тогда мои другие переменные (количество, stateId и countryId) были пустыми. Есть ли способ заставить всех четырех работать? –

+0

'$ order = Mage :: getModel ('sales/order') -> loadByIncrementId ($ orderId); $ total = $ order-> getGrandTotal(); $ subtotal = $ order-> getSubtotal(); 'все это должно работать –

1

Как только вы загрузили заказ, вы можете позвонить 'region_code' или getRegionCode(). Я использую magento 1.9. Не уверен, что он доступен в предыдущих версиях.