2014-02-04 7 views
0

У меня есть основной веб-сайт php, где клиент создает различные типы виджетов для получения отчетов в виде диаграмм. Я хочу разработать виджет для этой цели, чтобы показывать отчеты о заказах Magento, отчеты о продажах и т. Д. На сайте php с использованием API-магазина Magento. Кто-нибудь знает о magento Api, чтобы получить информацию о продукте, пожалуйста, скажите мне.Получите фид продукта magento, используя Mangento rest api, но ошибка OAuth

Я использую этот код

<?php 

    $callbackUrl = "https://air.co.uk/oauth_customer.php"; 
    $temporaryCredentialsRequestUrl = "https://air.co.uk/oauth/initiate?oauth_callback=" . urlencode($callbackUrl); 
    $adminAuthorizationUrl = 'https://air.co.uk/oauth/authorize'; 
    $accessTokenRequestUrl = 'https://air.co.uk/oauth/token'; 
    $apiUrl = 'https://air.co.uk/api/rest'; 
    $consumerKey = 'xb4up56a4f95ewl4l5s6xp097wi6g4uwv'; 
    $consumerSecret = 'ust6oh4t63fw5wcjo8gkqdpgc4tw0iscx'; 
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); 
} 

?> 

Но я столкнулся этой ошибке

Fatal error: Class 'OAuth' not found in /home/air/public_html/mapiuse/index.php on line 18 

Plese помощи, где из класса добавить OAuth. И что будет лучшим решением для моей работы. спасибо

ответ

1

Используйте мыло Api, чтобы показать продукты из магазина Magento, это так легко и боль меньше.

<?php 

$mage_url = 'https://domain.com/index.php/api/soap/index/wsdl/1'; 
$mage_user = 'Mohammad'; 
$mage_api_key = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'; 

$soap = new SoapClient($mage_url); 
$session_id = $soap->login($mage_user, $mage_api_key); 
$resources = $soap->resources($session_id); 

// array to store product IDs 
$productIDs = array(); 
$productIndex = array(); 

// counters 
$i = 0; 
$s = 0; 

// API call to get full product list 
$productList = $soap->call($session_id, 'catalog_product.list'); 

// Sort through returned array and index what array entry relates to each varient code 
if(is_array($productList) && !empty($productList)) { 
    foreach($productList as $productListSingle) { 

    $sku = $productListSingle['sku']; 
    $productIndex[$sku] = $s; 

    $s++; 

    } 
} 

// Sort through the returned product list and populate an array with product IDs 
if(is_array($productList) && !empty($productList)) { 
foreach($productList as $productListSingle2) { 
    $productIDs[$i] = $productListSingle2['product_id']; 
    $i++; 
    } 
} 

// API call for stock levels of product IDs collected above 
$productStock = $soap->call($session_id, 'product_stock.list', array($productIDs)); 

echo "<table border=\"1\">"; 
echo "<tr>"; 
echo "<th width=150>Varient code</th>"; 
echo "<th width=350>Varient name</th>"; 
echo "<th width=25>Quantity</th>"; 
echo "<th width=25>Active</th>"; 
echo "</tr>"; 

echo "<tr>"; 


if(is_array($productStock) && !empty($productStock)) { 
    foreach($productStock as $productStockSingle) { 

    echo "<tr"; 

    if ($productStockSingle['qty'] <= 5) 
     echo " style=\"color:#FF0000;\""; 

    echo ">"; 

    //Varient code 
    echo "<td>" . $productStockSingle['sku'] . "</td>"; 

    //Variables to look up the varient name in the index created above 
    $skuindex = $productStockSingle['sku']; 
    $idindex = $productIndex[$skuindex]; 

    //print varient name using index look up values above 
    echo "<td>" . $productList[$idindex]['name'] . "</td>"; 

    // varient Quantity in stock 
    echo "<td>" . $productStockSingle['qty'] . "</td>";  

    // Is product marked as in stock (active)? 
    echo "<td>" . $productStockSingle['is_in_stock'] . "</td>"; 

    echo "</tr>"; 
    } 
} 

echo "</tr>"; 
echo "</table>"; 

$soap->endSession($session_id); 
    ?> 

это очень полезно