2014-06-12 18 views
5

Próbuję utworzyć zamówienie z Magento SOAP API v1 i mam problem przy dodawaniu produktów do koszyka do koszyka. Potrafię poprawnie zrealizować zamówienie za pomocą prostych produktów, ale nie jestem pewien, czy dodać produkty w pakiecie.API mydła Magento Dodaj paczkę Produkt do koszyka

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

Próbowałem wielu różnych formatów i coraz błędy

Selected required options are not available 

Please specify product option(s). 

Każda pomoc lub sugestie będą bardzo mile widziane.

+1

starają się „bundle_option” tu http://inchoo.net/ecommerce/magento/programatically-add-bundle -produkt-to-cart-n-magento/Masz metodę PHP API, ale tablica powinna być podobna –

Odpowiedz

6

Wymyśliłem sposób na dodanie produktu do koszyka za pośrednictwem SOAP.

Wartości w kluczu bundle_option muszą być identyfikatorami modeli dla opcji (pakiet/wybór) (nie identyfikatory produktu). Klawisze muszą być identyfikator dla opcji (zakładam, że już jest poprawne w swoim przykładzie)

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

także kluczem do ilości wiązek powinna być bundle_option_qty zamiast bundle_qty.

Prawdopodobnie dostępność produktów w pakiecie zakłóci proces, więc upewnij się, że wszystkie produkty są dostępne do sprzedaży.


próbowałem go z powodzeniem z przykładowych danych Magento i tym fragmencie

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

I ponowiona moją odpowiedź i znajdując ważny punkt do rozpoznania.

wybrać sklep ;-)

Wystarczy użyć

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

zamiast

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

(więcej szczegółów proszę sprawdzić specyfikacje API: http://www.magentocommerce.com/api/soap/checkout/cart/cart.create.html)

Po zmianie tego, to było proste, aby dodać dowolny produkt wiązki, jak opisano powyżej „Opcje” zmiana

+0

Hej, dziękuję za to, przetestuję to jak najszybciej! nie wiedział o wymaganiu bundle_option_qty. – adamS

+0

@adamS: Zaktualizowałem swój post, spróbuj z wyborem sklepu, jak opisano powyżej ;-) – bukart

+0

dzięki za to! To działa teraz dla mnie. – adamS

Powiązane problemy