Magento使用REST更新库存

时间:2013-04-30 16:01:05

标签: magento magento-1.7

我按照本页http://www.magentocommerce.com/api/rest/Resources/inventory.html#RESTAPI-Resource-StockItems-HTTPMethod-PUT-stockitems--id的说明操作,并且我有以下代码:

$oauthClient->setToken($_SESSION['token'], $_SESSION['secret']);
$resourceUrl = $apiUrl.'/stockitems/429';
$productData = json_encode(array(
        'qty'           => 982,
        'is_in_stock'   => 1
    ));
$headers = array('Content-Type' => 'application/json');
$oauthClient->fetch($resourceUrl, $productData, OAUTH_HTTP_METHOD_POST, $headers);
print_r($oauthClient->getLastResponseInfo());

但我得到了回报

[message:protected] => Invalid auth/bad request (got a 401, expected HTTP/1.1 20X or a redirect)

我尝试使用这样的XML:

$oauthClient->setToken($_SESSION['token'], $_SESSION['secret']);
$resourceUrl = $apiUrl.'/stockitems/429';
$productData = '<?xml version="1.0"?>
    <magento_api>
        <qty>99</qty>
    </magento_api>';
$headers = array('Content-Type' => 'text/xml');
$oauthClient->fetch($resourceUrl, $productData, OAUTH_HTTP_METHOD_POST, $headers);
print_r($oauthClient->getLastResponseInfo());

我收到错误:

[message:protected] => Invalid auth/bad request (got a 405, expected HTTP/1.1 20X or a redirect)

我不知道我做错了什么? 谢谢你的回复。

3 个答案:

答案 0 :(得分:1)

更新商品数量的另一种方法是使用以下有效内容调用/ products /:id API,method = PUT:

{"stock_data" : {"qty" : "123"}}

答案 1 :(得分:0)

您正在使用POST而不是PUT。 HTTP Post用于在Magento中创建项目,但如果您通过ID更新项目(或库存,图像等),则必须使用PUT。

答案 2 :(得分:0)

确保您已分配给管理员用户REST角色。

逐步配置权限:

  • 系统 - &gt;网络服务 - &gt; REST - 角色 - &gt;创建新角色
  • 系统 - &gt;网络服务 - &gt; REST - 消费者 - &gt;创建消费者 - &gt;复制密钥&amp;在您的应用程序中使用的秘密
  • 系统 - &gt;权限 - &gt;您的用户 - &gt; REST角色 - &gt;选择并保存您的角色