Rúben Martins Posted October 3, 2014 Share Posted October 3, 2014 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 errorThis 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 parametersdefine('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 onetry{$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 Titleecho "<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 errorif (!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 valuesforeach ($resources->children() as $nodeKey => $node){if($nodeKey=='ean13'){$resources->children()->ean13 = (int)'123456';}else{$resources->children()->$nodeKey = $node;}}// And call the web servicetry{$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 messageecho "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 Link to comment Share on other sites More sharing options...
selectshop.at Posted November 2, 2014 Share Posted November 2, 2014 Portuguese Forum, please write in Portuguese. Thank you. Link to comment Share on other sites More sharing options...
selectshop.at Posted November 2, 2014 Share Posted November 2, 2014 (edited) Para analisar a entrada e saída de pacotes e aonde se encontram erros, vc. deveria checkar os log de erro do servidor, ou entao usar uma software que analisa o envio de pacotes como por ex. wireshark (gratuíto) ou similar. Já que a API está funcionando parciamente vc. deve ter algum erro no pacote que está enviando ou tentando escrever. Edited November 2, 2014 by selectshop.at (see edit history) 1 Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now