Magento: Create Product Using SOAP with Additional Attributes

attributessoap

I want to include additional attributes to be included when I create magento product using SOAP.

I'm using Magento ver. 1.9.2.4

I tried with the following code

$result = $client->call($session, 'catalog_product.create', array('simple', $product_data['attr_id'], $product_data['sku'], array(
        'categories' => array(2),
        'websites' => array(1),
        'name' => $product_data['name'],
        'description' => $product_data['description'],
        'short_description' => $product_data['short_description'],
        'weight' => $product_data['weight'],
        'status' => '2',
        'visibility' => '4',
        'price' => $product_data['price'],
        'tax_class_id' => 1,
        'meta_title' => '',
        'meta_keyword' => '',
        'meta_description' => '',
        'additional_attributes' => array(
            array('key'=>'brand', 'value'=>'HTC'),
            array('key'=>'model', 'value'=>'Desire'),
        )
    )));

You can also have a look at a part of the following file I have located at /public_html/app/code/core/Mage/Catalog/Model/Product/Api/V2.php

if (property_exists($productData, 'additional_attributes')) {
    if (property_exists($productData->additional_attributes, 'single_data')) {
        foreach ($productData->additional_attributes->single_data as $_attribute) {
            $_attrCode = $_attribute->key;
            $productData->$_attrCode = $_attribute->value;
        }
    }
    if (property_exists($productData->additional_attributes, 'multi_data')) {
        foreach ($productData->additional_attributes->multi_data as $_attribute) {
            $_attrCode = $_attribute->key;
            $productData->$_attrCode = $_attribute->value;
        }
    }
    if (gettype($productData->additional_attributes) == 'array') {
        foreach ($productData->additional_attributes as $k => $v) {
            $_attrCode = $k;
            $productData->$_attrCode = $v;
        }
    }
    unset($productData->additional_attributes);
}

I was only able to create product with no additional attribute!
Can anyone help with this parameter additional_attributes? What mistake did I make here?

Best Answer

you called v1 function ->call and looking into soap api v2. try to use my following code

$client = new SoapClient('http://yourmagentohost.com/index.php/api/v2_soap?wsdl=1');
$session = $client->login('yourapiusername','yourapipassword');

$client->catalogProductCreate($session, 'simple', $set, $sku, array(
    'categories' => array(2),
    'websites' => array(1),
    'name' => $product_data['name'],
    'description' => $product_data['description'],
    'short_description' => $product_data['short_description'],
    'weight' => $product_data['weight'],
    'status' => '2',
    'visibility' => '4',
    'price' => $product_data['price'],
    'tax_class_id' => 1,
    'meta_title' => '',
    'meta_keyword' => '',
    'meta_description' => '',
    'additional_attributes' => array(
        'single_data' => array(
            array('key'=>'brand', 'value'=>'HTC'),
            array('key'=>'model', 'value'=>'Desire'),
        ),
    )
));