Magento2 Create Bundle Product via Rest in PHP

Product bundles are several individual goods or services that are sold to consumers as one combined package. Sometimes called "package deals," product bundles are generally made up of complementary items or, less frequently, similar items. When retailers offer multiples of the exact same item, this is generally referred to as a "multipack," not a product bundle (1). Examples of product bundles would be a fixed-price meal at a restaurant or a beach kit that includes sunscreen, sand toys, flip flops and towels as one saleable item.

 

In this wiki we will see how can we create new bundle product using rest in magento2.

- First let us write the configurations (URL's,username,password)

// configuration Data
$url="http://www.example.com/index.php/";
$token_url=$url."rest/V1/integration/admin/token";
$product_url=$url. "rest/V1/products";
$username="your admin username";
$password="your admin password";

$product_links = array(
                        array("sku"=>"cpu1","qty"=>1)
                    );



- Then let us get access token

//Authentication rest API magento2, get access token
$ch = curl_init();
$data = array("username" => $username, "password" => $password);
$data_string = json_encode($data);

$ch = curl_init($token_url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    'Content-Type: application/json',
    'Content-Length: ' . strlen($data_string))
    );
$token = curl_exec($ch);
$adminToken=  json_decode($token);

 

- No let us prepare the Product data

// Create the Configurable Product
$configProductData = array(
        
        'sku'               => 'bundle'. uniqid(),
        'name'              => 'Bundle' . uniqid(),
        'visibility'        => 4, /*'catalog',*/
        'type_id'           => 'bundle',
        'price'             => 99.95,
        'status'            => 1,
        'attribute_set_id'  => 4,
        'weight'            => 1,
        'custom_attributes' => array(
                array( 'attribute_code' => 'category_ids', 'value' => ["42","41","32"] ),
                array( 'attribute_code' => 'description', 'value' => 'Description' ),
                array( 'attribute_code' => 'short_description', 'value' => 'Short Description' ),
                array( 'attribute_code' => 'price_view', 'value' => '0' ),
                array( 'attribute_code' => 'price_type', 'value' => '0' ),
        ),
        'extension_attributes' => array("bundle_product_options"=>array(
            array("title"=>"CPU","type"=>"select","product_links"=>$product_links),
        ),
        )
);
$productData = json_encode(array('product' => $configProductData));

 

- At the end we will send the product data to magento to create the product

 

$setHaders = array('Content-Type:application/json','Authorization:Bearer '.$adminToken);

$ch = curl_init();
curl_setopt($ch,CURLOPT_URL, $product_url);
curl_setopt($ch,CURLOPT_POSTFIELDS, $productData);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_HTTPHEADER, $setHaders);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
var_dump($response);

you can download the file from github