7
votes

Panier Magento API PAS VOIR LES PRIX DES PRIX

J'essaie d'utiliser l'API de Magento Enterprise 1.10 XML-RPC pour gérer les fonctions de chariot / catalogue en dehors de l'installation de Magento. La question que j'ai eu est quand j'ajoute au panier. Je peux connecter simplement bien au point d'extrémité de l'API, à la connexion et à la récupération de données. Ce qui suit est le code que j'utilise pour découvrir les fonctionnages de l'API Magento.

[product_id] => 5
[sku] => product1
[set] => 9
[type] => virtual
[categories] => Array
    (
    )

[websites] => Array
    (
        [0] => 1
    )

[type_id] => virtual
[name] => product
[description] => Test
[short_description] => Test
[news_from_date] => 
[old_id] => 
[news_to_date] => 
[status] => 1
[visibility] => 4
...
[created_at] => 2011-05-25 15:11:34
[updated_at] => 2011-05-25 15:11:34
...
[price] => 10.0000


3 commentaires

Solution trouvée, MagentOcommerce.com/boards/viewthread/227044 J'ai passé deux jours à chercher Pour cela, et aujourd'hui proposer un terme de recherche obscur pour essayer de trouver la solution.


Vous pouvez répondre à vos propres questions et fermer cela, FYI.


Je n'ai pas une contribution assez élevée, je ne peux pas y répondre pendant 4 heures de plus. = \


3 Réponses :


6
votes

Juste pour que cela puisse être une question de réponse officielle, voici la solution trouvée, http: // magentamperce. com / planches / viewthread / 227044 J'ai passé deux jours à la recherche de cela, et aujourd'hui proposer un terme de recherche obscur pour essayer de trouver la solution


1 commentaires

Le lien de votre réponse a été modifié et ne pointe plus la solution. Celui-ci fait: web.archive. Org / Web / 20120624021427 / http: // ...



1
votes

Je regarde ce problème depuis quelques jours maintenant. Cela n'a pas de sens pour moi que si vous ajoutez un produit à votre panier via l'interface Web normale [IE Mage_Checkout_cartcontroller :: Addaction () ]. Il connaît le prix sans vous fournir une adresse. J'ai finalement trouvé la différence entre les deux. Dans Addaction () Ils créent une instance de mage_checkout_model_cart , ajoutez le produit à cela et enregistrez-le. Dans l'API, ils utilisent mage_sales_model_quote à la place. Si vous regardez mage_checkout_model_cart :: Enregistrer () Vous verrez ces deux lignes: xxx

ces deux lignes créent effectivement mage_sales_model_quote_address objets qui est enregistré dans la base de données.

Si vous êtes prêt / capable de modifier le code de Magento, vous pouvez modifier Mage_checkout_model_cart_api :: créer () et ajouter un appel à ces deux méthodes avant $ Quote-> Enregistrer () et l'API et l'interface Web fonctionneront de la même manière.

Je n'ai testé qu'un peu, mais je pense vraiment que ceci est un bug et non une fonctionnalité. Je verrai d'obtenir cela devant le Magento Devs et peut-être qu'ils l'incluront dans la prochaine version.


0 commentaires

0
votes

Magento Frontend et API les deux sont différents. Dans FronTender après avoir enregistré le client, il crée une citation pour le client et définit également l'adresse avec cet identifiant de devis créé. Mais dans API, cela ne crée qu'une citation uniquement en utilisant shoppingcartcreate code>. Pour bien, nous devons personnaliser Créer un service. J'ai fait et ça a fonctionné pour moi.

Ici fournit la solution: P>

Modifier la fonction dans Fichier - Mage / Checkout / Modèle / Panier / API.PHP CODE> P>

public function create($store = null)
{
    $storeId = $this->_getStoreId($store);

    try {
        /*@var $quote Mage_Sales_Model_Quote*/
        $quote = Mage::getModel('sales/quote');
        $quote->setStoreId($storeId)
                ->setIsActive(false)
                ->setIsMultiShipping(false)
                ->save();

/* Customized this for saving default address for quote and it will show price in cart info*/
 $quote->getBillingAddress();
    $quote->getShippingAddress()->setCollectShippingRates(true);
    $quote->collectTotals();
    $quote->save();

/* End cart here */

    } catch (Mage_Core_Exception $e) {
        $this->_fault('create_quote_fault', $e->getMessage());
    }
    return (int) $quote->getId();
}


0 commentaires