#magento2
#magento2
Вопрос:
Я хочу создать bundle product через REST API в клиенте postman, но, похоже, я не могу найти подходящий API для создания такого же. Я могу добавить параметры пакета через REST API, но для добавления этих параметров мне нужен пакет продуктов.Итак, кто-нибудь может мне помочь с проблемой?
Ответ №1:
У меня возникла некоторая проблема при попытке создать bundle product с помощью Magento 2 API, но, наконец, я разобрался с этим, поскольку этот пост появляется каждый раз, когда я гуглю, я отвечу здесь запросом, который вам нужно сделать через postman, чтобы создать bundle product. Используя URL http://{{host}}/rest/default /V1/products с методом POST и заголовок авторизации с токеном, полученным с http://{{host}}/rest/default /V1 /integration /admin /token, вам нужно будет отправить следующее тело в формате JSON, чтобы создать пакет продуктов со связанными продуктами:
{
"product": {
"sku": "some-bundle-sku",
"name": null,
"attribute_set_id": 4,
"price": 1000,
"status": 1,
"visibility": 1,
"type_id": "bundle",
"created_at": "2018-01-01 00:00:00",
"updated_at": "2018-01-01 00:00:00",
"extension_attributes": {
"stock_item": {
"qty": 100
},
"website_ids": [
1
],
"category_links": [],
"bundle_product_options": [
{
"option_id": 0,
"position": 1,
"sku": "bundle-option-sku",
"title": "Bundle products",
"type": "select",
"required": true,
"product_links": [
{
"sku": "some prod 1 sku",
"option_id": 1,
"qty": 1,
"position": 1,
"is_default": false,
"price": null,
"price_type": null,
"can_change_quantity": 0
},
{
"sku": "some prod 2 sku",
"option_id": 1,
"qty": 1,
"position": 2,
"is_default": false,
"price": null,
"price_type": null,
"can_change_quantity": 0
}
]
}
]
},
"custom_attributes": [
{
"attribute_code": "price_view",
"value": "0"
}
]
},
"saveOptions": true
}
Убедитесь, что продукты, которые вы добавляете в «product_links», существуют, иначе продукт bundle не будет создан. Обратите внимание на «bundle_product_options», это должен быть массив опций, моя ошибка заключалась в том, что я пытался создать одну опцию, и я не передавал ее в массив.
Ответ №2:
Как создать Bundle Product в Magento 2 с помощью REST API:
//API URL for authentication
$apiURL="http://{host}/rest/V1/integration/admin/token";
//parameters passing with URL
$data = array("username" => "<username>", "password" => "<password>");
$data_string = json_encode($data);
$ch = curl_init($apiURL);
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);
//decoding generated token and saving it in a variable
$token = json_decode($token);
print_r($token);
//Using above token into header
$headers = array("Content-Type: application/json", "Authorization: Bearer ".$token);
//API URL to Add Product(s) in Magento
$requestUrl='http://{host}/rest/default/V1/products';
$toBeAdded = '{
"product": {
"sku": "some-bundle-sku",
"name": Demo-Bundle,
"attribute_set_id": 4,
"price": 1000,
"status": 1,
"visibility": 1,
"type_id": "bundle",
"created_at": "2019-04-28 00:00:00",
"updated_at": "2019-04-28 00:00:00",
"extension_attributes": {
"stock_item": {
"qty": 100
},
"website_ids": [
1
],
"category_links": [],
"bundle_product_options": [
{
"option_id": 0,
"position": 1,
"sku": "bundle-option-sku",
"title": "Bundle products",
"type": "select",
"required": true,
"product_links": [
{
"sku": "Sample",
"option_id": 1,
"qty": 1,
"position": 1,
"is_default": false,
"price": 20,
"price_type": null,
"can_change_quantity": 0
},
{
"sku": "Demo",
"option_id": 1,
"qty": 1,
"position": 2,
"is_default": false,
"price": 30,
"price_type": null,
"can_change_quantity": 0
}
]
}
]
},
"custom_attributes": [
{
"attribute_code": "price_view",
"value": "0"
}
]
},
"saveOptions": true
}';
$ch = curl_init();
$ch = curl_init($requestUrl);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
$options = array(
CURLOPT_POSTFIELDS=>$toBeAdded
);
curl_setopt_array($ch, $options);
$result = curl_exec($ch);
$result= json_decode($result);
echo "<pre>";
print_r($result);
Это должно решить ваши проблемы. Также убедитесь, что назначенный пользователь имеет доступ к желаемым ресурсам, и продукт, который вы добавляете в качестве параметров пакета, должен завершиться в вашей среде Magento.
Удачного кодирования! Приветствия!
Ответ №3:
Чтобы создать bundle product в Magento 2 с помощью REST API, нам будет выполнен некоторый шаг, см. ниже:
ШАГ 1- Сначала давайте напишем конфигурации (URL, имя пользователя, пароль)
// данные конфигурации
$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)
);
ШАГ 2- Затем давайте получим токен доступа
//Аутентификация rest API magento2, получение токена доступа
$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);
ШАГ 3- Нет, давайте подготовим данные продукта
// Создать настраиваемый продукт
$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));
ШАГ 4- В конце мы отправим данные продукта в magento для создания продукта
$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);