在prestashop中获取当前购物车ID

时间:2014-03-23 18:38:29

标签: web-services api prestashop cart

我正忙于建立在Code Igniter上的网站,需要与Prestashop集成。在网站中,在创建用户帐户时,我保存了一个" shop_id"到数据库,然后在登录时将其作为会话变量检索。

我使用Prestashop API成功检索客户(使用上面的" shop_id")

$xml = $this->PSWebService->get(
    array('resource' => 'customers', 'id' => (int)$this->user['shop_id'])
);

这会成功返回相关用户,但此结果中没有购物车ID。

登录我店铺的后端,我发现有多个购物车与登录用户相关联。

我的问题是:如何使用API​​检索最新的购物车ID?

2 个答案:

答案 0 :(得分:3)

$userId = (int) $this->user['shop_id'];
$opt['resource'] = 'carts';
$xml = $this->PSWebService->get($opt);
$carts = $xml->carts->children();
foreach ($carts as $cart) {
    $cartIds[] = $cart['id'];
}
for ($i = count($cartIds) - 1; $i > -1; $i--) {
  $opt['id'] = $cartIds[$i];
  $xml = $this->PSWebService->get($opt);
  //since cart ids are descending the first found will be the latest
  if ($xml->cart->id_customer == $userId) {
    $latestCartId = $cartIds[$i];
    break;
  }
}

答案 1 :(得分:3)

有点晚了,但我在同样的问题上有点挣扎,并且根据yenshirak的提示找到了一种方法来执行此操作(因为购物车ID正在下降,所以第一次发现将是最新的)。

我直接使用postman查询API:

获取所有购物车:

GET webserver/api/carts

获取客户购物车:

GET webserver/api/carts?filter[id_customer]=1

获取最新信息:

GET webserver/api/carts?filter[id_customer]=1&sort=[id_DESC]&limit=1

对于漂亮的印刷品,您还可以添加参数:

display=full&output_format=JSON

你可以在php中执行此操作,我没有测试语法是否正确,但基于文档它看起来像这样:

$opt = array( 'resource' => 'carts', 'filter[id_customer]' => '[1]', 'sort' => '[id_DESC]', 'limit' => '1' ); $xml = $webService->get($opt);