1

I need to create product with SOAP API and JSON, here is my JSON input:

  {"sku":"tsett","name":"TEST","weight":"3.0000","qty":"18.0000","brand":"sample","category_ids":["107","108","109"],"pirce":"Rs. 1,500.00","description ":"sample disc"}

here is the create product api code, how to add the json request using values of request to create the product:

    $client = new SoapClient('http://magentohost/api/soap/?wsdl');
    $session = $client->login('apiUser', 'apiKey');
    $attributeSets = $client->call($session, 'product_attribute_set.list');
    $attributeSet = current($attributeSets);
  $result = $client->call($session, 'catalog_product.create', array('simple', $attributeSet['set_id'], 'product_sku', array(
'categories' => array(2),
'websites' => array(1),
'name' => 'Product name',
'description' => 'Product description',
'short_description' => 'Product short description',
'weight' => '10',
'status' => '1',
'url_key' => 'product-url-key',
'url_path' => 'product-url-path',
'visibility' => '4',
'price' => '100',
'tax_class_id' => 1,
'meta_title' => 'Product meta title',
'meta_keyword' => 'Product meta keyword',
'meta_description' => 'Product meta description'
   )));

      var_dump ($result);

1 Answer 1

1

Decode JSON data and assign values as per requirement

$myJsonData = '{"sku":"tsett","name":"TEST","weight":"3.0000","qty":"18.0000","brand":"sample","category_ids":["107","108","109"],"pirce":"Rs. 1,500.00","description":"sample disc"}';

$myJsonData= json_decode($myJsonData,1);

$client = new SoapClient('http://magentohost/api/soap/?wsdl');
$session = $client->login('apiUser', 'apiKey');
$attributeSets = $client->call($session, 'product_attribute_set.list');
$attributeSet = current($attributeSets);

$result = $client->call($session, 'catalog_product.create', array('simple', $attributeSet['set_id'], $myJsonData['sku'], array(
        'categories' => array_values($myJsonData['category_ids']),
        'websites' => array(1),
        'name' => $myJsonData['name'],
        'description' => $myJsonData['description'],
        'short_description' => 'Product short description',
        'weight' => $myJsonData['weight'],
        'status' => '1',
        'url_key' => 'product-url-key',
        'url_path' => 'product-url-path',
        'visibility' => '4',
        'price' => $myJsonData['pirce'],
        'tax_class_id' => 1,
        'meta_title' => 'Product meta title',
        'meta_keyword' => 'Product meta keyword',
        'meta_description' => 'Product meta description'
)));
var_dump ($result);   

UPDATE

For multiple product as per your request

 $myJsonData = '{"products":[{"sku":"tsett","name":"TEST","weight":"3.0000","qty":"18.0000","brand":"sample","category_ids":["107","108","109"],"pirce":"Rs. 1,500.00"},{"sku":"product_sku","name":"Product name","weight":"10.0000","qty":"0.0000","brand":null,"category_ids":["2"],"pirce":"Rs. 100.00"}]}';

 $myJsonData = json_decode($myJsonData,1); 

 foreach($myJsonData['products'] as $_product) {

      $result = $client->call($session, 'catalog_product.create', array('simple', $attributeSet['set_id'], $_product['sku'], array(
            'categories' => array_values($_product['category_ids']),
            'websites' => array(1),
            'name' => $_product['name'],
            'description' => $_product['description'],
            'short_description' => 'Product short description',
            'weight' => $_product['weight'],
            'status' => '1',
            'url_key' => 'product-url-key',
            'url_path' => 'product-url-path',
            'visibility' => '4',
            'price' => $_product['pirce'],
            'tax_class_id' => 1,
            'meta_title' => 'Product meta title',
            'meta_keyword' => 'Product meta keyword',
            'meta_description' => 'Product meta description'
    )));   
 }
3
  • Thanks for the reply, if it is multiple product how to change example here is my input {"products":[{"sku":"tsett","name":"TEST","weight":"3.0000","qty":"18.0000","brand":"sample","category_ids":["107","108","109"],"pirce":"Rs. 1,500.00"},{"sku":"product_sku","name":"Product name","weight":"10.0000","qty":"0.0000","brand":null,"category_ids":["2"],"pirce":"Rs. 100.00"}]} Mar 21, 2016 at 7:33
  • use foreach loop Mar 21, 2016 at 8:09
  • @vellaidurai added update for your new json data Mar 21, 2016 at 10:58

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.