1

我按照此页面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)

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

4

3 回答 3

1

更新商品数量的另一种方法是调用 /products/:id API,方法 = PUT,使用以下负载:

{"stock_data" : {"qty" : "123"}}
于 2015-10-09T13:53:00.297 回答
0

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

于 2013-10-07T22:48:05.087 回答
0

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

逐步配置权限:

  • 系统 -> Web 服务 -> REST - 角色 -> 创建新角色
  • System -> Web Services -> REST - Consumers -> Create a Consumer -> Copy Key & Secret to use in your App
  • 系统 -> 权限 -> 您的用户 -> REST 角色 -> 选择并保存您的角色
于 2016-03-03T15:56:42.847 回答