2014-01-07 133 views
0

我試圖將轉換跟蹤添加到我的magento商店。我知道我需要添加以下代碼並對其進行自定義,以便magento將與CA共享信息。我需要幫助從magento獲取訂單詳細信息

<script type="text/javascript"> 
var _caq = _caq || []; 
var products = []; 
products.push({Sku: 'ProductID', UnitPrice: 'item price here', Quantity: 'quantity here'}); 
products.push({Sku: 'ProductID', UnitPrice: 'item price here', Quantity: 'quantity here'}); 
_caq.push(["Order", {OrderId: 'OrderID', Revenue: 'oVal', CurrencyCode: '3 letter currency code here', Products: products}]); 

到目前爲止,我一直在嘗試用下面的代碼,以獲得從訂單數據:

<?php $orderId = $this->getOrderId(); 
$order = Mage::getModel('sales/order')->load($orderId); 
$items = $order->getAllItems(); 
$_grand = $order->getGrandTotal(); 
$custname = $order->getCustomerName(); 
$itemcount=count($items); 
foreach ($items as $itemId => $item) 
{ 
    $sObject2->Item_name__c = $item->getName(); 
    $sObject2->Unit_price__c = $item->getPrice(); 
    $sObject2->Sku__c = $item->getSku(); 
    $sObject2->Quantity__c = $item->getQtyToInvoice(); 
} 

echo $_grand; 
echo $custname; 
?> 

當我嘗試呼應客戶的名稱和總計,我得到了一個空白的總數和來賓的客戶名稱。即使我使$ orderId發生了這樣的命令。

回答

1

?通常你在管理中看到的數字將是increment_id。查看瀏覽器的地址欄以選擇entity_id。

$order = Mage::getModel('sales/order')->load($orderId); // $ orderId應該是entity_id。

嘗試取回訂單,而不是這種方法(工程成功頁):

$orderId = Mage::getSingleton('checkout/session')->getLastRealOrderId(); 
$order = Mage::getModel("sales/order")->loadByIncrementId($orderId); 

此外,請確保調用正確的方法獲得總計:

$_grand = $order->getGrandTotal(); //獲取在商店貨幣總計。

$_grand = $order->getBaseGrandTotal(); //以基準貨幣獲得總計。

這對於您的跟蹤目的使用基準貨幣可能更有用。如果您只有一家商店,或者使用一種貨幣,則可能不會有任何區別。但是,如果您曾經使用過多種貨幣,那麼您需要做到這一點。

-1

我使用這些功能,請看看:當你傳遞你傳遞ENTITY_ID或increment_id訂單數量

function get_all_orders($fromdate,$todate) 
{ 
$getsales = mysql_query("SELECT * FROM `sales_flat_order` WHERE `created_at`>='$fromdate' AND `created_at`<='$todate'"); 
if(mysql_num_rows($getsales)> 0) 
return $getsales; 
else 
return FALSE; 
} 

function num_items_under_order($order_entity_id) 
{ 
$getorder_num = mysql_query("SELECT * FROM `sales_flat_order_item` WHERE `order_id`='$order_entity_id'"); 
if(mysql_num_rows($getorder_num) == 1) 
return TRUE; 
elseif(mysql_num_rows($getorder_num) > 1) 
return FALSE; 
} 

function get_order_item_details($order_entity_id) 
{ 
$getsales = mysql_query("SELECT * FROM `sales_flat_order_item` WHERE `order_id`='$order_entity_id'"); 
if(mysql_num_rows($getsales) == 1) 
{ 
return mysql_fetch_object($getsales); 
} 
elseif(mysql_num_rows($getsales) > 1) 
{ 
return $getsales; 
} 
else 
return FALSE; 
} 

感謝

+0

這並沒有什麼幫助。我需要此代碼才能進入成功頁面。我需要它來跟蹤某些廣告系列的轉化次數。 –

+0

這在很多層面都是錯誤的。你不應該直接在Magento中使用SQL查詢。您可以通過使用相應的集合對象和過濾器來實現相同的目的。你不應該使用mysql_函數(請參閱http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php) - 他們打開你的代碼來注入sql注入的可能性。 –

+0

是的,這是錯誤的方式..但如果你想做的事情更快,更容易,那麼這是唯一的方法,如果你正在處理1000年的訂單...與mage.php非常慢 –

相關問題