Search the Community
Showing results for tags 'put product'.
-
Olá comunidade prestashop, Com isto recorro a vocês. Estou a ter um problema com o web service da prestashop e um software externo, encontro-me em desenvolvimento de um website desenvolvido através do prestashop e neste momento encontro-me a desenvolver uma interligação com o web service da prestashop que é disponibilizado através da página http://doc.prestashop.com/display/PS16/Using+the+PrestaShop+Web+Service onde já testei os exemplos e funciona perfeitamente com o recurso "customers" em adicionar/editar/visualizar. Contudo pretendo neste momento gerir os produtos através do web service que irá estar em ligação com um software externo de facturação onde contem todos os produtos e seu dados como stock e preços, para isso faço um pedido ao web service através de get com os seguintes parâmetros $opt = array('url' => PS_SHOP_PATH.'/api/products?display=full&filter[reference]=[XPTO]'); que me devolve os dados do producto com a referencia "XPTO" pois é o dado que existe em concordância no prestashop e software de facturação externo com isso pretendo verificar se o produto existe no prestashop através da referencia e isso funciona depois obtenho também os dados de produto e altero para os dados que obtenho do software externo mas ao tentar enviar o xml já com os dados editados devolve-me o erro "Other error This call to PrestaShop Web Services failed and returned an HTTP status of 400. That means: Bad Request." -------- Este é o codigo completo que estou a usar: <?php // Here we define constants /!\ You need to replace this parameters define('DEBUG', true); define('PS_SHOP_PATH', 'http://www.examplesite.com/prestashop'); define('PS_WS_AUTH_KEY', 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'); require_once('PSWebServiceLibrary.php'); //echo phpinfo(); // First : We always get the customer's list or a specific one try { $webService = new PrestaShopWebservice(PS_SHOP_PATH, PS_WS_AUTH_KEY, DEBUG); $opt = array('url' => PS_SHOP_PATH.'/api/products?display=full&filter[reference]=[FAC6.2454]'); $xml = $webService->get($opt); // Here we get the elements from children of customer markup which is children of prestashop root markup $resources = $xml->children()->children(); //$resources = $xml->children()->children()->children(); } catch (PrestaShopWebserviceException $e) { // Here we are dealing with errors $trace = $e->getTrace(); if ($trace[0]['args'][0] == 404) echo 'Bad Reference'; else if ($trace[0]['args'][0] == 401) echo 'Bad auth key'; else echo 'Other error - '.$e; } // We set the Title echo "<h1>Customer's List</h1>"; echo '<table border="5">'; // if $resources is set we can lists element in it otherwise do nothing cause there's an error if (!empty($resources)) { $data = array(); foreach ($resources->children() as $product => $resource) { echo '<tr><th>'.$product.'</th><td>'; echo '<input type="text" name="'.$product.'" value="'.$resource.'"/>'; echo '</td></tr>'; $data = array_merge($data, array($product => "".$resource)); } if (isset($data['id'])) // Here we check id cause in every resource there's an id { // Here we have XML before update, lets update XML with new values foreach ($resources->children() as $nodeKey => $node) { if($nodeKey=='ean13'){ $resources->children()->ean13 = (int)'123456'; } else{ $resources->children()->$nodeKey = $node; } } // And call the web service try { $opt = array('resource' => 'products'); $opt['putXml'] = $xml->asXML(); $opt['id'] = $data['id']; $xml = $webService->edit($opt); // if WebService don't throw an exception the action worked well and we don't show the following message echo "Successfully updated."; } catch (PrestaShopWebserviceException $ex) { // Here we are dealing with errors $trace = $ex->getTrace(); if ($trace[0]['args'][0] == 404) echo 'Bad ID'; else if ($trace[0]['args'][0] == 401) echo 'Bad auth key'; else echo 'Other error<br />'.$ex->getMessage(); } } } echo '</table>'; ?> --------------- Se possível me ajudem que já tentei varias situações e até ao momento ainda não consegui editar um produto através do web service, contudo os "customers" consigo fazer tudo dai acreditar que não seja problema do servidor/CURL/permissões. Ou me indiquem algum exemplo de como editar um produto através do web service. Obrigado, Rúben Martins
- 2 replies
-
- edit product
- web service
- (and 4 more)