将产品添加到购物车magento soap时出错

时间:2013-01-15 09:30:16

标签: magento soap

当我尝试通过soap API将产品添加到Magento中的购物车时,我收到此错误: SoapFault:在非对象上调用成员函数setFinalPrice()

我采取以下步骤:

  • 创建cart($this->call($this->_session, 'cart.create', array($store));)
  • 设置客户地址和信息(cart_customer.set,cart_customer.addresses)

这会在calling(cart.info)

时生成以下数组
Array
(
    [store_id] => 0
    [created_at] => 2013-01-15 09:19:49
    [updated_at] => 2013-01-15 09:19:51
    [converted_at] => 
    [is_active] => 0
    [is_virtual] => 0
    [is_multi_shipping] => 0
    [items_count] => 0
    [items_qty] => 0.0000
    [orig_order_id] => 0
    [store_to_base_rate] => 1.0000
    [store_to_quote_rate] => 1.0000
    [base_currency_code] => EUR
    [store_currency_code] => EUR
    [quote_currency_code] => EUR
    [grand_total] => 0.0000
    [base_grand_total] => 0.0000
    [checkout_method] => guest
    [customer_id] => 
    [customer_tax_class_id] => 3
    [customer_group_id] => 1
    [customer_email] => test@test.nl
    [customer_prefix] => 
    [customer_firstname] => Test
    [customer_middlename] => 
    [customer_lastname] =>  TestLasname
    [customer_suffix] => 
    [customer_dob] => 
    [customer_note] => 
    [customer_note_notify] => 1
    [customer_is_guest] => 0
    [remote_ip] => 
    [applied_rule_ids] => 
    [reserved_order_id] => 
    [password_hash] => GkV4mSKHqgQ=
    [coupon_code] => 
    [global_currency_code] => EUR
    [base_to_global_rate] => 1.0000
    [base_to_quote_rate] => 1.0000
    [customer_taxvat] => 
    [customer_gender] => 0
    [subtotal] => 0.0000
    [base_subtotal] => 0.0000
    [subtotal_with_discount] => 0.0000
    [base_subtotal_with_discount] => 0.0000
    [is_changed] => 1
    [trigger_recollect] => 0
    [ext_shipping_info] => 
    [gift_message_id] => 
    [is_persistent] => 0
    [quote_id] => 4506
    [shipping_address] => Array
    (
        [address_id] => 
        [quote_id] => 4506
        [created_at] => 2013-01-15 09:19:51
        [updated_at] => 2013-01-15 09:19:51
        [customer_id] => 
        [save_in_address_book] => 0
        [customer_address_id] => 
        [address_type] => shipping
        [email] => 
        [prefix] => 
        [firstname] => Test
        [middlename] => 
        [lastname] =>  TestLastname
        [suffix] => 
        [company] => 
        [street] => street 24
        [city] => Amsterdam
        [region] => 
        [region_id] => 
        [postcode] => 3454 BM
        [country_id] => NL
        [telephone] => 565765765765
        [fax] => 
        [same_as_billing] => 0
        [free_shipping] => 0
        [collect_shipping_rates] => 1
        [shipping_method] => 
        [shipping_description] => 
        [weight] => 0.0000
        [subtotal] => 0.0000
        [base_subtotal] => 0.0000
        [subtotal_with_discount] => 0.0000
        [base_subtotal_with_discount] => 0.0000
        [tax_amount] => 0.0000
        [base_tax_amount] => 0.0000
        [shipping_amount] => 0.0000
        [base_shipping_amount] => 0.0000
        [shipping_tax_amount] => 0.0000
        [base_shipping_tax_amount] => 0.0000
        [discount_amount] => 0.0000
        [base_discount_amount] => 0.0000
        [grand_total] => 0.0000
        [base_grand_total] => 0.0000
        [customer_notes] => 
        [applied_taxes] => a:0:{}
        [discount_description] => 
        [shipping_discount_amount] => 
        [base_shipping_discount_amount] => 
        [subtotal_incl_tax] => 0.0000
        [base_subtotal_total_incl_tax] => 
        [gift_message_id] => 
        [hidden_tax_amount] => 
        [base_hidden_tax_amount] => 
        [shipping_hidden_tax_amount] => 
        [base_shipping_hidden_tax_amnt] => 
        [shipping_incl_tax] => 0.0000
        [base_shipping_incl_tax] => 0.0000
    )

[billing_address] => Array
    (
        [address_id] => 
        [quote_id] => 4506
        [created_at] => 2013-01-15 09:19:51
        [updated_at] => 2013-01-15 09:19:51
        [customer_id] => 
        [save_in_address_book] => 0
        [customer_address_id] => 
        [address_type] => billing
        [email] => 
        [prefix] => 
        [firstname] => Test
        [middlename] => 
        [lastname] =>  TestLastname
        [suffix] => 
        [company] => 
        [street] => street 24
        [city] => Amsterdam
        [region] => 
        [region_id] => 
        [postcode] => 3454 BM
        [country_id] => NL
        [telephone] => 565765765765
        [fax] => 
        [same_as_billing] => 0
        [free_shipping] => 0
        [collect_shipping_rates] => 0
        [shipping_method] => 
        [shipping_description] => 
        [weight] => 0.0000
        [subtotal] => 0.0000
        [base_subtotal] => 0.0000
        [subtotal_with_discount] => 0.0000
        [base_subtotal_with_discount] => 0.0000
        [tax_amount] => 0.0000
        [base_tax_amount] => 0.0000
        [shipping_amount] => 0.0000
        [base_shipping_amount] => 0.0000
        [shipping_tax_amount] => 0.0000
        [base_shipping_tax_amount] => 0.0000
        [discount_amount] => 0.0000
        [base_discount_amount] => 0.0000
        [grand_total] => 0.0000
        [base_grand_total] => 0.0000
        [customer_notes] => 
        [applied_taxes] => a:0:{}
        [discount_description] => 
        [shipping_discount_amount] => 
        [base_shipping_discount_amount] => 
        [subtotal_incl_tax] => 0.0000
        [base_subtotal_total_incl_tax] => 
        [gift_message_id] => 
        [hidden_tax_amount] => 
        [base_hidden_tax_amount] => 
        [shipping_hidden_tax_amount] => 
        [base_shipping_hidden_tax_amnt] => 
        [shipping_incl_tax] => 0.0000
        [base_shipping_incl_tax] => 0.0000
    )

[items] => Array
    (
    )

[payment] => Array
    (
        [quote_id] => 4506
        [payment_id] => 
    )
)

但是当我尝试使用以下数组execute(cart_product.add)时:

Array
(
     'sku' => '44567788855',
     'quantity' => 1
 )

我收到有关setFinalPrice的错误。

问题在于,我无法访问此Magento安装(仅限API帐户)。我使用该网站(http://www.magentocommerce.com/api/soap/checkout/cartProduct/cart_product.add.html)获取所有示例代码。

使用product_id代替sku工作。不知何故,这不起作用,但在其API中有记录

1 个答案:

答案 0 :(得分:4)

请参阅此linkhere

它可能会帮助你..我也用我的magento用product_id来代替sku execute(cart_product.add)。它工作正常。

请检查我的请求

 <soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:Magento" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">
   <soapenv:Header/>
   <soapenv:Body>
      <urn:shoppingCartProductAdd soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
         <sessionId xsi:type="xsd:string">d77fdb68c787871ce1373001120b1520</sessionId>
         <quoteId xsi:type="xsd:int">1</quoteId>
         <products xsi:type="urn:shoppingCartProductEntityArray" soapenc:arrayType="urn:shoppingCartProductEntity[]">
<product_id xsi:type="xsd:string">2</product_id>
</products>
         <storeId xsi:type="xsd:string">0</storeId>
      </urn:shoppingCartProductAdd>
   </soapenv:Body>
</soapenv:Envelope>

我的回答是

    <SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="urn:Magento" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
   <SOAP-ENV:Body>
      <ns1:shoppingCartProductAddResponse>
         <result xsi:type="xsd:boolean">true</result>
      </ns1:shoppingCartProductAddResponse>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

我正在使用SOAP CLient来测试soap。

祝你好运