Добавленный продукт через 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

enter image description heremagento_catalog_product_website
enter image description here

Author: RavatSinh Sisodiya, 2013-08-14

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".

 1
Author: jaywink, 2014-04-25 10:44:21