【问题标题】:Magento2 rest api how to add product?Magento2 rest api如何添加产品?
【发布时间】:2016-04-28 13:26:20
【问题描述】:
<?
//Authentication rest API magento2.Please change url accordingly your url
    $adminUrl='http://localhost/magento/index.php/rest/V1/integration/admin/token';
$ch = curl_init();
$data = array("username" => "", "password" => "");                                                                    
$data_string = json_encode($data);                       
$ch = curl_init($adminUrl); 
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);
$token=  json_decode($token);

//Use above token into header
$headers = array('Authorization=> Bearer $token'); 

$requestUrl='http://127.0.0.1/magento/index.php/rest/V1/products';
//Please note 24-MB01 is sku

$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);
$post ='{
  "product": {
    "sku": "MY_SKU",
    "name": "My Product",
    "attributeSetId": "4",
    "price": 20,
    "status": 1,
    "visibility": 4,
    "typeId": "virtual",
    "weight": 0,
    "extensionAttributes": {
      "stockItem": {
        "stockId": 1,
        "qty": 20,
        "isInStock": true,
        "isQtyDecimal": false,
        "useConfigMinQty": true,
        "minQty": 0,
        "useConfigMinSaleQty": 0,
        "minSaleQty": 0,
        "useConfigMaxSaleQty": true,
        "maxSaleQty": 0,
        "useConfigBackorders": false,
        "backorders": 0,
        "useConfigNotifyStockQty": true,
        "notifyStockQty": 20,
        "useConfigQtyIncrements": false,
        "qtyIncrements": 0,
        "useConfigEnableQtyInc": false,
        "enableQtyIncrements": false,
        "useConfigManageStock": true,
        "manageStock": true,
        "lowStockDate": "string",
        "isDecimalDivided": true,
        "stockStatusChangedAuto": 0,
        "extensionAttributes": {}
      }
    },
    "options": [],
    "tierPrices": [],
    "customAttributes": [
    ]
  },
  "saveOptions": true
}';

$options = array(
    CURLOPT_URL=>$toURL,
    CURLOPT_HTTPHEADER=>array(                                                                          
    'Content-Type: application/json',                                                                                
    'Content-Length: ' . strlen($post)),
    CURLOPT_VERBOSE=>0,
    CURLOPT_RETURNTRANSFER=>true,
    CURLOPT_USERAGENT=>"Mozilla/4.0 (compatible;)",
    CURLOPT_POST=>true,
    CURLOPT_POSTFIELDS=>$post,

);
curl_setopt_array($ch, $options);
$result = curl_exec($ch);
$result=  json_decode($result);
print_r($result);


?>

上面的代码无法添加产品,我尝试了很多方法,仍然无法通过rest api添加产品,有人知道如何通过rest api添加产品吗?请帮助,谢谢。

上面的代码无法添加产品,我尝试了很多方法,仍然无法通过rest api添加产品,有人知道如何通过rest api添加产品吗?请帮助,谢谢。

【问题讨论】:

    标签: magento2


    【解决方案1】:
    <?
    $url = domainname;
    $token_url=$url."rest/V1/integration/admin/token";
    $product_url=$url. "rest/V1/products";
    $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);
    
    $sampleProductData = array(
        'sku'               => $isbn13,
        'name'              => $name,
        'visibility'        => 4,
        'type_id'           => 'simple',
        'price'             => $price,
        'status'            => 1,
        'attribute_set_id'  => 4,
        'weight'            => $product_weight,
        'extension_attributes' => array(
                "stock_item"=>array(
                        'qty' => $inventory_stock,'is_in_stock' => 1,'manage_stock' => 1,'use_config_manage_stock' => 1,'min_qty' => 0,'use_config_min_qty' => 1,'min_sale_qty' => 1,'use_config_min_sale_qty' => 1,'max_sale_qty ' => 10,'use_config_max_sale_qty' => 1,'is_qty_decimal' => 0,'backorders' => 0,'use_config_backorders' => 1,'notify_stock_qty' => 1,'use_config_notify_stock_qty' => 1
                ),
        ),
        'custom_attributes' => array(
            array( 'attribute_code' => 'category_ids', 'value' => ["43"] ),
            array( 'attribute_code' => 'description', 'value' => $description ),
            array( 'attribute_code' => 'short_description', 'value' => $short_description ),
            array( 'attribute_code' => 'meta_title', 'value' => $meta_title),
            array( 'attribute_code' => 'meta_keyword', 'value' => $meta_keyword),
            array( 'attribute_code' => 'meta_description', 'value' => $meta_description),
        ),
    );
    
    $productData = json_encode(array('product' => $sampleProductData));
    
    $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);
    

    这是用于在 magento 2 thorugh api 上上传产品描述 = 仅复制代码并将代码放入一个 php 文件中,并将域名更改为 (https://--------.com/) 以及在 magento 2 中创建用户和角色之后 (https://www.youtube.com/watch?v=hMN-ZoeODlQ)并将该用户名放入此代码和密码中的用户名字段并运行此代码替换所有动态变量。(如 $isbn13,$name...etc 与您的产品详细信息)查看产品是在 magento 2 中创建或更新的

    【讨论】:

    • 请提供一些描述和答案
    • 是的,请,问题是最重要的,所以我只放置了解决方案。
    • 虽然这段代码 sn-p 可以解决问题,但它没有解释为什么或如何回答这个问题。请包括对您的代码的解释,因为这确实有助于提高您的帖子的质量。请记住,您是在为将来的读者回答问题,而这些人可能不知道您提出代码建议的原因
    【解决方案2】:
        $adminUrl = 'http://localhost/magento2.1.2/index.php/rest/V1/integration/admin/token/';
        $ch = curl_init();
        $data = array("username" => "", "password" => "");
        $ch = curl_init($adminUrl);
        curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
        curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type=> application/json'));
        $token = curl_exec($ch);
        $token = json_decode($token);
    

    使用您的 magento 管理员用户名和密码并获取令牌 ID。

    将 $post json 变量传递给此 cURL 调用。

           $curl = curl_init();
           curl_setopt_array($curl, array(
           CURLOPT_URL => "http://localhost/magento2.1.2/index.php/rest/V1/products",
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_POSTFIELDS => $post,
            CURLOPT_ENCODING => "",
            CURLOPT_MAXREDIRS => 10,
            CURLOPT_TIMEOUT => 30,
            CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
            CURLOPT_CUSTOMREQUEST => "POST",
            CURLOPT_HTTPHEADER => array(
                "authorization: Bearer $token",
                "content-type: application/json"
            ),
        ));
        $response = curl_exec($curl);
        $err = curl_error($curl);
        curl_close($curl);
        if ($err) {
            echo "cURL Error #:" . $err;
        } else {
            echo $response;
        }
    

    【讨论】:

      【解决方案3】:

      在请求 URL $requestUrl='http://127.0.0.1/magento/index.php/rest/V1/products' 中将“产品”更改为产品并尝试。

      【讨论】:

        猜你喜欢
        • 2019-12-02
        • 2021-08-29
        • 2015-06-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-07-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多