3
votes

When I try to add a product to a cart in Magento through the soap API I get this error: SoapFault:Call to a member function setFinalPrice() on a non-object

I take the following steps:

  • Creating a cart($this->call($this->_session, 'cart.create', array($store));)
  • Setting customer address and information(cart_customer.set, cart_customer.addresses)

This results in the following array when 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] => [email protected]
    [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] => 
    )
)

But when I try to execute(cart_product.add) with the following array:

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

I get the error about the setFinalPrice.

The problem is that, I do not have access to this Magento installation(only API account). I used the site(http://www.magentocommerce.com/api/soap/checkout/cartProduct/cart_product.add.html) for all the example code.

Using product_id instead of sku worked. Somehow this does not work but is documented in their API

1

1 Answers

4
votes

Please refer this link and here

It might help you ..i have also tired in my magento with product_id in place of sku for execute(cart_product.add) . It is working fine.

Please check my request

 <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>

and my response is

    <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>

I am using SOAP CLient for testing soap.

Best of luck