Jump to content

Ao atualizar o prestashop paro de funcionar o webservice


Recommended Posts

Criei um script para adicionar ou atualizar produtos para o meu prestashop. Eu tenho feito com o webservice.
Eu atualizei meu prestashop para a versão 1.6.1.0 e parou de funcionar meu script.
Eu vi PSWebServiceLibrary.php precisa de outra nova biblioteca, então eu a baixei.
O que acontece é que agora eu recebo o seguinte erro:
 
"Node no longer exists"
 
Este é o código onde da o erro:
 
function getProductByEan($ean){


 global $webService;
$opt['resource'] = 'products';
$opt['filter']['ean13'] = $ean;
$xml = $webService->get($opt);
var_dump($xml);
if($xml){
$x = ($xml->products[0]->product->attributes());
$ProductId = $x['id'];
return $ProductId;
}
else
return null;
}

 

Obrigada por tudo

Link to comment
Share on other sites

Se você utilizava a versão 1.4.X ou anterior do PrestaShop e atualizou para a versão atual, deve revisar a função, pois muitas coisas mudaram no webservice.

Não sei todos os detalhes de cabeça mas, pelo seu código, pode ser que não tenha mais a variável global $webService, pois desde a versão 1.5.X não são mais utilizadas variáveis globais, que foram substituídas por Contextos.

Link to comment
Share on other sites

no modo debug é quando me sai esse erro: "Node no longer exists"

ja apaguei os global webservice e adicionei: $webService = new PrestaShopWebservice(PS_SHOP_PATH, PS_WS_AUTH_KEY, DEBUG);

Mas continua a sair o mesmo erro: "Node no longer exists" tenha o não tenho resultado  a consulta gerada

Edited by gamdev (see edit history)
Link to comment
Share on other sites

este é o code sosinho:

<?php
define('PS_SHOP_PATH', 'http://127.0.0.1/XXX');
define('PS_WS_AUTH_KEY', 'XXXXXXXXXX');
require_once('./PSWebServiceLibrary.php');
define('DEBUG', true);
$webService = new PrestaShopWebservice(PS_SHOP_PATH, PS_WS_AUTH_KEY, DEBUG);
 
$opt['resource'] = 'combinations';
$opt['filter']['ean13'] = 0000008;
 
$xml = $webService->get($opt);
 
if($xml){
$x = ($xml->combinations[0]->combination->attributes());
if(isset($x) && count($x) >0){
$ProductId = $x['id'];
}else{
$ProductId ="";
}
echo $ProductId;
}else{
echo "NULL";
}
?>
 
 ESTE É A RESPOSTA:

HTTP REQUEST HEADER
GET /central/api/combinations?filter%5Bean13%5D=0 HTTP/1.1
Host: 127.0.0.1
Authorization: Basic VURFNzEzSFpYWkJBSVRWSDIxVjhNR0IzSjdUQ1JLUUY6
Accept: */*





HTTP RESPONSE HEADER
HTTP/1.1 200 OK
Date: Wed, 30 Sep 2015 14:35:46 GMT
Server: Apache/2.4.12 (Win32) OpenSSL/1.0.1m PHP/5.6.11
Vary: Host
X-Powered-By: PrestaShop Webservice
Access-Time: 1443623746
PSWS-Version: 1.6.1.0
Execution-Time: 0.25
Content-Sha1: 43128015913feebbed1464670a8824ab32b4f9a3
Set-Cookie: PrestaShop-41c26d3e69d460a47d5f865508d7c4c9=XCCvareGDpt4WNb1jmALWP3a0d%2F8pxBw3Xzmpkpiqx5ZAWRn1zoJNB0B%2BZfNMhzKm7FBc0nzXlmUi0WFrAQD8zzh4%2FjzZ2%2F%2Bfg96NzcQ2Mg%3D000079; expires=Tue, 20-Oct-2015 14:35:46 GMT; Max-Age=1728000; path=/central/; httponly
Content-Length: 140
Content-Type: text/xml;charset=utf-8



RETURN HTTP BODY
<?xml version="1.0" encoding="UTF-8"?>
<prestashop xmlns:xlink="http://www.w3.org/1999/xlink">
<combinations>
</combinations>
</prestashop>



Warning: count(): Node no longer exists in C:\xampp\htdocs\central\scripts\prueba2.php on line 15

Link to comment
Share on other sites

Sim pelo fato de que global variables nao mais atendem a versao prestashop em uso, isto já tentamos explicar-lhe em todos os tópicos que eu o Daniel adicionamos por aqui.

 

Veja aqui uma lista atual dos global variables: http://www.maximelebreton.com/labs/memo-des-variables-prestashop/

 

e a lista de contextos: https://www.prestashop.com/forums/topic/442971-use-of-globals-is-forbidden/

e

https://www.prestashop.com/forums/topic/471102-creat-global-variable-in-module/

 

A dica para o seu segundo erro, foi dada somente em relacao ao fato que uma máquina local em geral nao troca dados em multiplos sentidos (send <-> get), por falta de protocolos apropriados. Servicos emulados (Wampp/Xampp) sao emulados e nao possuem a mesma configuracao e valor do que um servico live no servidor. Emulacoes sao para testar, só que também possuem limites.

Edited by selectshop.at (see edit history)
Link to comment
Share on other sites

este é o code sosinho:

<?php

define('PS_SHOP_PATH', 'http://127.0.0.1/XXX');

define('PS_WS_AUTH_KEY', 'XXXXXXXXXX');

require_once('./PSWebServiceLibrary.php');

define('DEBUG', true);

$webService = new PrestaShopWebservice(PS_SHOP_PATH, PS_WS_AUTH_KEY, DEBUG);

 

$opt['resource'] = 'combinations';

$opt['filter']['ean13'] = 0000008;

 

$xml = $webService->get($opt);

 

if($xml){

$x = ($xml->combinations[0]->combination->attributes());

if(isset($x) && count($x) >0){

$ProductId = $x['id'];

}else{

$ProductId ="";

}

echo $ProductId;

}else{

echo "NULL";

}

?>

 

Warning: count(): Node no longer exists in C:\xampp\htdocs\central\scripts\prueba2.php on line 15

A mensagem "No longer exists" pode ser por conta do filtro:

$opt['filter']['ean13'] = 0000008;

Tem certeza que existe um produto com este EAN13 ?

Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...