2014-06-12 19 views
5

Tôi đang cố gắng tạo một đơn đặt hàng với Magento SOAP API v1 và gặp vấn đề khi thêm sản phẩm đi kèm vào giỏ hàng. Tôi có thể nhận được đơn đặt hàng thông qua một cách chính xác với các sản phẩm đơn giản nhưng tôi nhầm lẫn về việc thêm các sản phẩm đi kèm.API xà phòng Magento Thêm sản phẩm bó vào giỏ

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

Tôi đã thử nhiều định dạng khác nhau và nhận lỗi

Selected required options are not available 

Please specify product option(s). 

Bất kỳ sự trợ giúp hoặc gợi ý sẽ được đánh giá rất nhiều.

+1

Cố gắng "bundle_option" ở đây http://inchoo.net/ecommerce/magento/programatically-add-bundle -product-to-cart-n-magento/Bạn có phương thức PHP API nhưng mảng phải tương tự –

Trả lời

6

Tôi đã tìm ra cách thêm sản phẩm bó vào giỏ hàng qua SOAP.

Các giá trị trong khóa bundle_option phải là id của các mô hình cho các tùy chọn (gói/lựa chọn) (không phải là id sản phẩm). Các phím phải id cho các tùy chọn (tôi giả sử đó là đã đúng trong ví dụ của bạn)

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

Ngoài ra chìa khóa cho số lượng bó nên bundle_option_qty thay vì bundle_qty.

Chắc chắn tính khả dụng của các sản phẩm đi kèm sẽ làm phiền quá trình của bạn, vì vậy hãy đảm bảo tất cả các sản phẩm đều có thể bán được.


Tôi đã thử nó thành công với các dữ liệu mẫu của magento và đoạn này

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

tôi thử lại câu trả lời của tôi và tìm thấy một điểm quan trọng cần nhận ra.

SELECT A CỬA HÀNG ;-)

Chỉ cần sử dụng

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

thay vì

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

(để biết thêm chi tiết xin vui lòng kiểm tra thông số kỹ thuật API: http://www.magentocommerce.com/api/soap/checkout/cart/cart.create.html)

Sau khi thay đổi này, nó là đơn giản để thêm bất kỳ sản phẩm bó, làm thế nào mô tả ở trên thay đổi "tùy chọn"

+0

Xin chào, cảm ơn vì điều này, tôi sẽ kiểm tra nó càng sớm càng tốt! không biết về yêu cầu bundle_option_qty. – adamS

+0

@adamS: Tôi đã cập nhật bài đăng của mình, chỉ cần thử với lựa chọn cửa hàng, như mô tả ở trên ;-) – bukart

+0

cảm ơn vì điều này! Điều này làm việc cho tôi bây giờ. – adamS

Các vấn đề liên quan