2014-06-12 11 views
5

Ich versuche eine Bestellung mit Magento SOAP API v1 zu erstellen und habe Probleme beim Hinzufügen von gebündelten Produkten zum Einkaufswagen. Ich bin in der Lage, mit einfachen Produkten richtig zu bestellen, aber ich bin verwirrt über das Hinzufügen von gebündelten Produkten.Magento Soap API Produktpaket zum Warenkorb hinzufügen

// The Products Array with Bundle 
$products = array(
     array(
      "product_id" => "38914", 
      "qty" => "1", 
      "bundle_option" => array(
       "18194" => "20360", 
      ), 
      "related_product" => null, 
      "bundle_qty" => array("20360" => "1"), 
      "options" => array(
       "0" => array(
        "key" => "3328", 
        "value" => "4494", 
       ), 
       "1" => array(
        "key" => "3329", 
        "value" => null, 
       ), 
       "2" => array(
        "key" => "3339", 
        "value" => null, 
       ), 

      ) 
     ) 
    ); 

// Get an API session 
$client = new \SoapClient('magentoinstallation/index.php/api/soap/?wsdl'); 
$session = $client->login('user', 'password'); 

//Create the Cart 
$cart = $client->call($session, 'cart.create'); 

// add the products 
$resultCartProductsAdd = $client->call($session, "cart_product.add", array( $cart, $products)); 

Ich habe versucht, viele verschiedene Formate und immer Fehler

Selected required options are not available 

Please specify product option(s). 

Jede Hilfe oder Anregungen wäre sehr dankbar.

+1

Try change „Optionen“ auf „bundle_option“ hier beschrieben http://inchoo.net/ecommerce/magento/programatically-add-bundle -product-to-cart-n-magento/Sie haben PHP-API-Methode, aber Array sollte ähnlich sein –

Antwort

6

Ich habe herausgefunden, wie man ein Paketprodukt über SOAP in den Warenkorb legen kann.

Die Werte innerhalb des Schlüssels müssen die IDs der Modelle für die Optionen (Bündel/Auswahl) sein (nicht die Produkt-IDs). Die Tasten müssen die ID für die Option (ich nehme an, das ist schon richtig in Ihrem Beispiel)

$products = array(
    array(
     "product_id" => "38914", 
     "qty" => "1", 
     "bundle_option" => array(
      "18194" => "20360", // <-- THE VALUE MUST BE THE ID OF THE CORRESPONDING "bundle/selection" MODEL, INSTEAD OF THE PRODUCT'S ID 
     ), 
// ... 
); 

auch der Schlüssel für die Bündel Mengen bundle_option_qty statt bundle_qty sein sollte.

Möglicherweise wird die Verfügbarkeit der gebündelten Produkte Ihren Prozess stören, also stellen Sie sicher, dass alle Produkte verkaufsfähig sind.


Ich versuchte es erfolgreich mit den Beispieldaten von magento und dieses Snippet

$client = new \SoapClient('magentoinstallation/index.php/api/soap/?wsdl'); 
$session = $client->login('testuser', 'password'); 

$products = array(
    array(
     "product_id" => 158, 
     "qty"   => "1", 
     "bundle_option" => array(
      1    => 2, // 1 is the option id, 2 is the bundle/selection id 
     ), 
    ) 
); 

$cart = $client->call($session, 'cart.create', array('default')); 
$resultCartProductsAdd = $client->call($session, "cart_product.add", array($cart, $products)); 

ich meine Antwort erneut versucht und fand einen wichtigen Punkt zu erkennen.

SELECT A STORE ;-)

Gerade

$cart = $client->call($session, 'cart.create', array('default'));

statt

$cart = $client->call($session, 'cart.create');

(für weitere Einzelheiten bitte überprüfen Sie die API-Spezifikationen: http://www.magentocommerce.com/api/soap/checkout/cart/cart.create.html) verwenden

Danach ändern, es war einfach, jedes Bündel Produkt hinzuzufügen, wie oben

+0

Hey, danke dafür, ich werde es so bald wie möglich testen! wusste nicht über die bundle_option_qty-Anforderung. – adamS

+0

@adamS: Ich habe meinen Post aktualisiert, versuche es einfach mit der Auswahl eines Shops, wie oben beschrieben ;-) – bukart

+0

danke dafür! Das funktioniert jetzt für mich. – adamS

Verwandte Themen