Добавленный продукт через REST API OAuth не получен и не может обновляться через REST API
После добавления продукта в Magento запустите http://mymagentohost/api/rest/products/40
, он вернет Resource not found
, но если просто открыть продукт из Magento и нажать save
(ничего не меняя), чем (запустите http://mymagentohost/api/rest/products/40
), он вернет продукт в представлении xml.
Некоторый код для сохранения продукта с использованием REST OAuth, как показано ниже
$this->productData = array(
'type_id' => 'activities',
'attribute_set_id' => 4,
'sku' => 'activities' . uniqid(),
'status' => 1,
'visibility' => 4,
'name' => 'Activities Product',
'description' => 'Activities Description',
'price' => 10.00,
'sm_product_vendor_id' => 23,
'category_id' => 1,
'tax_class_id' => 0,
........);
function saveProduct(){
try {
$oauthClient = new OAuth($this->consumerKey, $this->consumerSecret, OAUTH_SIG_METHOD_HMACSHA1, $this->authType);
$oauthClient->enableDebug();
$oauthClient->setToken($this->token, $this->secret);
$headers = array('Content-Type' => 'application/json');
$oauthClient->fetch($this->resourceUrl, $this->productData, "POST", $headers);
$this->responceInfo = $oauthClient->getLastResponseInfo();
$this->responce = $oauthClient->getLastResponse();
} catch (OAuthException $e) {
$this->oauthError=$e;
}
}
$this->saveProduct();
Информация об ответе
....
[headers_recv] => HTTP/1.1 200 OK
Date: Wed, 14 Aug 2013 03:15:59 GMT
Server: Apache/2.2.22 (Win32) mod_ssl/2.2.22 OpenSSL/0.9.8o
X-Powered-By: PHP/5.3.14 ZendServer
Set-Cookie: ZDEDebuggerPresent=php,phtml,php3; path=/
Set-Cookie: PHPSESSID=rrom4add03f0ikrt6d51ej9gi5; expires=Wed, 14-Aug-2013 04:16:00 GMT; path=/magento; domain=localhost; HttpOnly
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
/api/rest/products/40
.....
Когда я пытаюсь бежать http://mymagentohost/api/rest/products/40
Он вернет Ресурс не найден
<magento_api><messages><error><data_item><code>404</code><message>Resource not found.</message></data_item></error></messages></magento_api>
Редактировать
пока добавление продукта через REST API следующие данные, не вставленные в таблицу (2 таблицы).
если я вручную добавлю следующие данные в таблицу, они будут получены через REST API.
как добавить эти записи с помощью REST API
magento_catalog_product_index_price
magento_catalog_product_website
1 answers
Смог решить эту проблему, создав пользовательский модуль REST API, который в значительной степени делает это;
$resource = Mage::getSingleton('core/resource');
$writeConnection = $resource->getConnection('core_write');
$table = $resource->getTableName('catalog/product_website');
$query = "insert into {$table} values (" .$data['product_id']. ", 1)";
$writeConnection->query($query);
Замените 1 на website_id, который необходим. Я вызываю это после сохранения продукта в виде отдельного вызова API. Он может быть вставлен в REST API в ядре, конечно, сразу после $product->save();
Я не счел нужным что-либо добавлять к magento_catalog_product_index_price
Жаль, что Magento CE на самом деле не является открытым исходным кодом, поэтому не может выполнить запрос на извлечение - это больше похоже на "dumpsourceware".