2014-06-12 9 views
5

Sto provando a creare un ordine con l'API SOAP Magento v1 e ho riscontrato problemi con l'aggiunta di prodotti in bundle al carrello. Sono in grado di ottenere un ordine attraverso correttamente con prodotti semplici, ma sono confuso sull'aggiunta di prodotti in bundle.Magento Soap API Aggiungi pacchetto al carrello

// 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)); 

Ho provato molti formati differenti e ottenere gli errori

Selected required options are not available 

Please specify product option(s). 

Qualsiasi aiuto o suggerimento sarebbe molto apprezzato.

+1

Try Change "opzioni" a "bundle_option" qui http://inchoo.net/ecommerce/magento/programatically-add-bundle -product-to-cart-n-magento/Hai un metodo API PHP ma array dovrebbe essere simile –

risposta

6

Ho trovato un modo per aggiungere un prodotto bundle al carrello tramite SOAP.

I valori all'interno della chiave bundle_option devono essere gli ID dei modelli per le opzioni (pacchetto/selezione) (non gli ID prodotto). Le chiavi devono essere l'id per l'opzione (suppongo che è già corretto nel tuo esempio)

$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 
     ), 
// ... 
); 

anche la chiave per le quantità di bundle dovrebbe essere bundle_option_qty invece di bundle_qty.

La disponibilità dei prodotti in bundle può disturbare il processo, pertanto accertarsi che i prodotti siano tutti vendibili.


ho provato con successo con i dati di esempio di Magento e questo frammento

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

ho ritentato la mia risposta e trovato un punto importante da riconoscere.

selezionare un archivio ;-)

Basta usare

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

invece di

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

(per maggiori dettagli si prega di controllare le specifiche API: http://www.magentocommerce.com/api/soap/checkout/cart/cart.create.html)

Dopo aver modificato questa, era semplice aggiungere qualsiasi prodotto bundle, come descritto in precedenza

+0

Ehi, grazie per questo, lo testerò al più presto! non sapeva del requisito bundle_option_qty. – adamS

+0

@adamS: ho aggiornato il mio post, basta provarlo con la selezione di un negozio, come descritto sopra ;-) – bukart

+0

grazie per questo! Questo funziona per me ora. – adamS

Problemi correlati