Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

HOW To Get Product Info Using REST API In Magento

How To Create REST API And How To Fetch The Magento Products Info..

Is there any demo available for above?

like image 695
jignesh prajapati Avatar asked Dec 04 '25 15:12

jignesh prajapati


1 Answers

Products Specific Magento REST API Requests
Retrieve the list of products, create, update, or delete a product. You will call Magento REST API like this:
http://www.my-magento-store.com/api/rest/products

Product Categories Retrieve the list of categories assigned to the product, assign, and unassign the category to/from the specific product. You will call Magento REST API like this:
http://www.my-magento-store.com/api/rest/products/:productId/categories

Product Images
Retrieve the list of images assigned to the product, add, update, and remove an image to/from the specific product. You will call Magento REST API like this:
http://www.my-magento-store.com/api/rest/products/:productId/images

Magento REST API examples:

$callbackUrl = "http://www.my-magento-store.com/oauth_admin.php";
$temporaryCredentialsRequestUrl = "http://www.my-magento-store.com/oauth/initiate?oauth_callback=" . urlencode($callbackUrl);
$adminAuthorizationUrl = 'http://www.my-magento-store.com/admin/oauth_authorize';
$accessTokenRequestUrl = 'http://www.my-magento-store.com/oauth/token';
$apiUrl = 'http://www.my-magento-store.com/api/rest';
$consumerKey = '{Consumer Key}';
$consumerSecret = '{Consumer Secret}';

session_start();
if (!isset($_GET['oauth_token']) && isset($_SESSION['state']) && $_SESSION['state'] == 1) {
    $_SESSION['state'] = 0;
}
try {
    $authType = ($_SESSION['state'] == 2) ? OAUTH_AUTH_TYPE_AUTHORIZATION : OAUTH_AUTH_TYPE_URI;
    $oauthClient = new OAuth($consumerKey, $consumerSecret, OAUTH_SIG_METHOD_HMACSHA1, $authType);
    $oauthClient->enableDebug();

    if (!isset($_GET['oauth_token']) && !$_SESSION['state']) {
        $requestToken = $oauthClient->getRequestToken($temporaryCredentialsRequestUrl);
        $_SESSION['secret'] = $requestToken['oauth_token_secret'];
        $_SESSION['state'] = 1;
        header('Location: ' . $adminAuthorizationUrl . '?oauth_token=' . $requestToken['oauth_token']);
        exit;
    } else if ($_SESSION['state'] == 1) {
        $oauthClient->setToken($_GET['oauth_token'], $_SESSION['secret']);
        $accessToken = $oauthClient->getAccessToken($accessTokenRequestUrl);
        $_SESSION['state'] = 2;
        $_SESSION['token'] = $accessToken['oauth_token'];
        $_SESSION['secret'] = $accessToken['oauth_token_secret'];
        header('Location: ' . $callbackUrl);
        exit;
    } else {
        $oauthClient->setToken($_SESSION['token'], $_SESSION['secret']);
        $resourceUrl = "$apiUrl/products";
        $productData = json_encode(array(
            'type_id'           => 'simple',
            'attribute_set_id'  => 4,
            'sku'               => 'simple' . uniqid(),
            'weight'            => 1,
            'status'            => 1,
            'visibility'        => 4,
            'name'              => 'My Product Name',
            'description'       => 'My Product Description',
            'short_description' => 'My Products Short Description',
            'price'             => 6.99,
            'tax_class_id'      => 0,
        ));
        $headers = array('Content-Type' => 'application/json');
        $oauthClient->fetch($resourceUrl, $productData, OAUTH_HTTP_METHOD_POST, $headers);
        print_r($oauthClient->getLastResponseInfo());
    }
} catch (OAuthException $e) {
    print_r($e);
}

As you can see in the code given above, at the top you have to declare your connection, authetication tokens. Since this example is using oAuth authentication you need to specify it’s location on your host, consumer and secret key before you make a call to http://www.my-magento-store.com/api/rest/. If everything is alright you can create a JSON array of your simple product ready to push live.

Now, let’s look at another example

$callbackUrl = "http://www.my-magento-store.com/oauth_customer.php";
$temporaryCredentialsRequestUrl = "http://www.my-magento-store.com/oauth/initiate?oauth_callback=" . urlencode($callbackUrl);
$adminAuthorizationUrl = 'http://www.my-magento-store.com/oauth/authorize';
$accessTokenRequestUrl = 'http://www.my-magento-store.com/oauth/token';
$apiUrl = 'http://www.my-magento-store.com/api/rest';
$consumerKey = '{Consumer Key}';
$consumerSecret = '{Consumer Secret}';

session_start();
if (!isset($_GET['oauth_token']) && isset($_SESSION['state']) && $_SESSION['state'] == 1) {
    $_SESSION['state'] = 0;
}
try {
    $authType = ($_SESSION['state'] == 2) ? OAUTH_AUTH_TYPE_AUTHORIZATION : OAUTH_AUTH_TYPE_URI;
    $oauthClient = new OAuth($consumerKey, $consumerSecret, OAUTH_SIG_METHOD_HMACSHA1, $authType);
    $oauthClient->enableDebug();

    if (!isset($_GET['oauth_token']) && !$_SESSION['state']) {
        $requestToken = $oauthClient->getRequestToken($temporaryCredentialsRequestUrl);
        $_SESSION['secret'] = $requestToken['oauth_token_secret'];
        $_SESSION['state'] = 1;
        header('Location: ' . $adminAuthorizationUrl . '?oauth_token=' . $requestToken['oauth_token']);
        exit;
    } else if ($_SESSION['state'] == 1) {
        $oauthClient->setToken($_GET['oauth_token'], $_SESSION['secret']);
        $accessToken = $oauthClient->getAccessToken($accessTokenRequestUrl);
        $_SESSION['state'] = 2;
        $_SESSION['token'] = $accessToken['oauth_token'];
        $_SESSION['secret'] = $accessToken['oauth_token_secret'];
        header('Location: ' . $callbackUrl);
        exit;
    } else {
        $oauthClient->setToken($_SESSION['token'], $_SESSION['secret']);
        $resourceUrl = "$apiUrl/products";
        $oauthClient->fetch($resourceUrl);
        $productsList = json_decode($oauthClient->getLastResponse());
        print_r($productsList);
    }
} catch (OAuthException $e) {
    print_r($e);
}


The above code will retrieve the list of all products as a customer via Magento REST API. Keep in mind that authorization headers are required for Admin and Customer user types. If you are enabling REST for guests you can do like this:
http://www.my-magento-store.com/api/rest/products?limit=1

This will result in the following XML output

<?xml version="1.0"?>
    <magento_api>
      <data_item>
        <entity_id>18</entity_id>
        <type_id>simple</type_id>
        <sku>SKU Number</sku>
        <description>Your Product Description
    </description>
        <meta_keyword>Meta Keywords </meta_keyword>
        <short_description>Short Description</short_description>
        <name>Product Name</name>
        <meta_title>Product Title</meta_title>
        <meta_description>Meta Desciption</meta_description>
        <regular_price_with_tax>Regular Price of the product </regular_price_with_tax>
        <regular_price_without_tax>Price without Tax</regular_price_without_tax>
        <final_price_with_tax>Final Price With Tax</final_price_with_tax>
        <final_price_without_tax>Final Price without Tax</final_price_without_tax>
        <is_saleable>1</is_saleable>
        <image_url>Path of the product image</image_url>
      </data_item>
  </magento_api>

Similarly, you can call REST API URL’s to get specific XML data with limit parameter, default is 10 products per request but one request can only request a maximum of 100 products. To get the next set of results call like this:
http://www.my-magento-store.com/api/rest/products?page=2&limit=10
I hope this is enough to get started with Magento REST API.

like image 157
Deep Zalavadiya Avatar answered Dec 07 '25 11:12

Deep Zalavadiya



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!