Magneto:将可配置产品添加到购物车失败:请指定产品的选项

时间:2016-03-28 23:42:51

标签: java php api magento xml-rpc

使用Magento 1.7.0.2

我可以将简单的产品添加到购物车中,没有任何问题 但是,当我尝试将可配置产品添加到购物车时,它会抛出XmlRpcException。

org.apache.xmlrpc.XmlRpcException: Please specify the product's option(s).
at org.apache.xmlrpc.client.XmlRpcStreamTransport.readResponse(XmlRpcStreamTransport.java:197)
at org.apache.xmlrpc.client.XmlRpcStreamTransport.sendRequest(XmlRpcStreamTransport.java:156)
at org.apache.xmlrpc.client.XmlRpcHttpTransport.sendRequest(XmlRpcHttpTransport.java:143)
at org.apache.xmlrpc.client.XmlRpcSunHttpTransport.sendRequest(XmlRpcSunHttpTransport.java:69)
at org.apache.xmlrpc.client.XmlRpcClientWorker.execute(XmlRpcClientWorker.java:56)
at org.apache.xmlrpc.client.XmlRpcClient.execute(XmlRpcClient.java:167)
at org.apache.xmlrpc.client.XmlRpcClient.execute(XmlRpcClient.java:158)
at org.apache.xmlrpc.client.XmlRpcClient.execute(XmlRpcClient.java:147)  

此xml-rpc调用的API文档http://devdocs.magento.com/guides/m1x/api/soap/checkout/cartProduct/cart_product.add.html

Magento API doc没什么用处。所以遵循https://stackoverflow.com/a/19925338/12641给出的建议。

以下是XML-RPC调用的方法参数

[25f6d3a4606a18d24cdeb7ad6ad58a, cart_product.add, [25, [{product_id=126, quantity=2, options=[[{value=1, key=862}], [{value=65, key=501}], [{value=1, key=526}], [{value=100, key=525}], [{value=1, key=274}], [{value=1, key=273}]]}]]]

我仍然在控制台中收到org.apache.xmlrpc.XmlRpcException: Please specify the product's option(s).错误。

我有兴趣知道如何将可配置产品添加到购物车,当它需要传递选项时。

1 个答案:

答案 0 :(得分:0)

在调试Magento php代码后,我意识到Magento正在期待" super_attribute"而不是"选项"键。

这是我传递的Java数组,用于添加具有超级属性的自定义产品

[
  8bd5ea08fc5c6f5d17445f10db593d4f, 
  cart_product.add, 
  [
    51, 
    [
      {
        product_id=3051, 
        super_attribute={
          272=22, 
          525=100
        }, 
        quantity=2
      }
    ]
  ]
]

通过这些调用参数,我可以将产品添加到购物车中。

从Magneto管理控制台,我知道哪些超级属性需要作为超级属性传递。

但是如何通过Magento XML-RPC / SOAP api为自定义产品获取这些超级属性?

在PHP中获取超级属性是我发现人们正在使用的。

$productAttributeOptions = $product->getTypeInstance(true)->getConfigurableAttributesAsArray($product);

我无法使用此代码,因为我只依赖API才能执行此操作。

非常感谢任何帮助。