Мне нужно автоматически обновить значение prestashop-> clients-> customer-> id_default_group с помощью PHP через веб-сервис Prestashop. Сценарий знает новое значение и выполняется до/при загрузке страницы.Prestashop 1.5 Webservice Обновление клиента id_default_group PHP
Я могу получить запись клиента, или я могу получить только «id_default_group» записи клиента, но у меня возникают проблемы при попытке изменить значение записи и обновление веб-службы. Я возвращаю «HTTP/1.1 400 Bad Request».
Похоже, что я неправильно пытаюсь обновить xml или объект.
Было бы предпочтительнее делать все это, только получая и обновляя «id_default_group» и не получая полную запись клиента.
у меня есть:
define('DEBUG', true);
define('PS_SHOP_PATH', 'http://www.site.com/');
define('PS_WS_AUTH_KEY', 'yuyiu');
require_once('../PSWebServiceLibrary.php');
// 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('resource' => 'customers'); // Full customer record
//$opt = array('resource'=>'customers','display'=> '[id_default_group]','filter[id]' => '['.$_SESSION["iemIdCustomer"].']'); // Customer id_default_group value
if (isset($_SESSION['iemIdCustomer'])){
$opt['id'] = $_SESSION['iemIdCustomer'];
}
$xml = $webService->get($opt);
// The elements from children
$resources = $xml->children()->children();
// $resources = $xml->children()->children()->children(); // If just getting id_default_group
}
catch (PrestaShopWebserviceException $e)
{
// Here we are dealing with errors
$trace = $e->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';
}
// Second : We update the data and send it to the web service
if (isset($_SESSION['iemIdCustomer'])){
// Update XML with new values
$xml->customers->customer->id_default_group = 4;
//$resources = $xml->children()->children()->children();
// And call the web service
try
{
$opt = array('resource' => 'customers');
//$opt = array('resource'=>'customers','display'=> '[id_default_group]','filter[id]' => '['.$_SESSION["iemIdCustomer"].']');
$opt['putXml'] = $xml->asXML();
$opt['id'] = $_SESSION['iemIdCustomer'];
//$opt['display'] = 'id_default_group';
$xml = $webService->edit($opt);
// if WebService succeeds
echo "Successfully updated.";
}
catch (PrestaShopWebserviceException $ex)
{
// 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();
}
}
Это является основным для тех, кто в курсе, так что я надеюсь, что вы можете помочь.
Спасибо заранее, Lance
Благодарим за предложение. Я исправил проблему, прежде чем увидел, что она пропустила уведомление по электронной почте. Исправлено с помощью $ xml-> children() -> children() -> id_default_group = 4; – IeM