我正忙于建立在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?
答案 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);