2010-10-13 4 views
5

Je veux ajouter la jonction de la Commission sur mon site client, en ce qu'ils ont demandé pour chaque produit UGS et le prix. Après la page de confirmation/page de succès seulement, nous devons transmettre ces valeurs. Mais voici comment je peux obtenir tous les détails du produit. Y compris Sku, le prix que je dois passer. Est-il possible d'obtenir les détails de chaque produit séparément.Magento Commander succès Page prix du produit et SKU Retrival

Merci Suresh

Répondre

7

Oui, vous avez raison @leek

Mais si vous voulez ajouter la configuration avancée avec CJ alors suivez cette méthode.

<!-- Start of CJ Integration Part --> 
<?php 
    $_customerId = Mage::getSingleton('customer/session')->getCustomerId(); 
    $lastOrderId = Mage::getSingleton('checkout/session')->getLastOrderId(); 
    $order = Mage::getSingleton('sales/order'); 
    $order->load($lastOrderId); 
    $_totalData =$order->getData(); 
    $_sub = $_totalData['subtotal'];//USD ==> global_currency_code,base_currency_code order_currency_code 
    // Incase if it is simple do this ==> https://www.emjcd.com/u?AMOUNT= $_sub; 
    //print_r($order); print_r($_totalData); 

    $_order = $this->getOrder(); 
    $allitems = $order->getAllItems(); 
    $index = 1; 
    $cjData = "";//Needed format ==> &ITEM1=3214sku&AMT1=13.49&QTY1=1&ITEM2=6577sku&AMT2=7.99&QTY2=2& 
    foreach($allitems as $item) 
    { 
     $cjData.="&ITEM".$index."=".$item->getSku()."&AMT".$index."=".$item->getPrice()."&QTY".$index."=".$item->getQtyToShip(); 
     $index++; 
    } 
?> 
<div style="display:none;"> 
    <img src="https://www.emjcd.com/u?CID=id&OID=<?php echo $this->getOrderId(); ?>&TYPE=type<?php echo $cjData; ?>&CURRENCY=USD&METHOD=IMG" height="1" width="20"> 
</div> 
<!-- End of CJ Integration Part --> 

Cela a fonctionné parfaitement.

6

montre pendant une event comme ceci:

<config> 
    <global> 
     <events> 
      <sales_order_place_after> 
       <observers> 
        <yourmodule_order_place_after> 
         <class>yourmodule/observer</class> 
         <method>onSalesOrderPlaceAfter</method> 
        </yourmodule_order_place_after> 
       </observers> 
      </sales_order_place_after> 
     </events> 
    </global> 
</config> 

Ensuite, vous besoin de quelque chose pour gérer l'événement.

app/code/local/votreentreprise/Yourmodule /Model/Observer.php

<?php 

class Yourcompany_Yourmodule_Model_Observer { 

    public function onSalesOrderPlaceAfter($observer) { 
     $order = $observer->getOrder(); 
     /* @var $item Mage_Sales_Model_Order_Item */ 
     foreach ($order->getItemsCollection() as $item) { 
      // Do something with $item here... 
      $name = $item->getName(); 
      $price = $item->getPrice(); 
      $sku = $item->getSku(); 
     } 
    } 

} 

Voir la table de base de données "sales_flat_order_item" ou faire un var_dump($item->debug()) pour voir quel type de valeurs sont disponibles. Comme il est une table à plat la seule façon de trouver plus d'informations sur un produit est comme ceci:

$product = Mage:getModel('catalog/product')->load($item->getProductId()); 
$product->getDescription(); 
0

Note: Ce n'est pas la meilleure méthode! Vous devriez créer un nouveau bloc/modèle pour cela et transmettre les données par un autre moyen. Vous ne devez également jamais instancier une connexion Db dans la vue/le modèle.

Cela dit - voici comment je Commission Junction sur mis en œuvre un magasin de Magento longtemps avant que j'appris comment remplacer les modules/templates/etc.

app \ conception \ frontend \ entreprise \ default \ template \ checkout \ success.phtml

<?php 
$orderId  = $this->getOrderId(); 
$order   = Mage::getModel('sales/order')->loadByIncrementId($orderId); 
$orderTotal = $order->subtotal; 
$orderEntityId = $order->entity_id; 

$db = Mage::getModel('Core/Mysql4_Config')->getReadConnection(); 

// Retrieve ordered products 
$sql = sprintf(" 
    SELECT * 
    FROM `sales_flat_order_item` 
    WHERE (order_id = %d);", 
     $orderEntityId 
); 
$orderedProducts = $db->fetchAll($sql); 

// Loop through each product in order 
foreach ($orderedProducts as $orderedProduct) { 
    $productId = (int) $orderedProduct['product_id']; 
    $quantity = (int) $orderedProduct['qty_ordered']; 
} 
?> 

<!-- Commission Junction -->  
<img src="https://www.emjcd.com/u?AMOUNT=<?php echo $orderTotal; ?>&CID=<INSERT_CID_HERE>&OID=<?php echo $orderId; ?>&TYPE=339032&CURRENCY=USD&METHOD=IMG" height="1" width="20">  
<!-- Commission Junction --> 
Questions connexes