Opencart 2 API会话问题

时间:2016-01-05 12:52:53

标签: php api session curl opencart

我正在尝试使用OpenCart 2 API,但我并不完全熟悉它,也不是普通TBH中的Opencart。

我在管理区域创建了一个API密钥,通过传递用户名,密码和API密钥本身,我可以成功地从外部源与API通信,并获得成功消息。

示例:

$url = "http://opencart.local:8888/index.php?route=api/login";
$postData = array(
        "username" => $username,
        "password" => $password,
        "key" => $key
    );

$handle = curl_init($url);
curl_setopt($handle, CURLOPT_HEADER, true);
curl_setopt($handle, CURLOPT_RETURNTRANSFER, true);
curl_setopt($handle, CURLOPT_POST, true);
curl_setopt($handle, CURLOPT_POSTFIELDS, http_build_query($postData));

$response = curl_exec($handle);

$header_size = curl_getinfo($handle, CURLINFO_HEADER_SIZE);
$headers = substr($response, 0, $header_size);
$response = substr($response, $header_size);

curl_close($handle);

$return = json_decode($response, true);

返回响应如下:

  

array(2){[“success”] => string(42)“成功:API会话   成功启动!“[”token“] =>字符串(32)   “rfjOIzMWobWSvKvdy2LnWsekp9v1qoQQ”}

然后,在此之后,我调用API中的购物车/添加功能,将产品(按ID)添加到购物车:

$url = "http://opencart.local:8888/index.php?route=api/cart/add";
$cartData = array(
        "product_id" => '47',
        "quantity" => '1'
    );

我以相同的方式使用CURL,但是我从OpenCart获得的响应是​​:

  

array(1){[“error”] => array(1){       [ “警告”] =>       string(54)“警告:您无权访问API!” }}

当我检查问题时,似乎缺少opencart为了授予权限而需要的api_id:

$this->session->data['api_id']

即使在通过API登录时设置了此项。当我第二次调用将产品添加到购物车时,它会以某种方式丢失此会话数据。请记住,当这个实时启动时,我将无法访问OpenCart代码,因为这是一个外部CRM,只能通过API与用户名,密码和API密钥进行通信。

有什么想法吗?我很感激任何帮助,因为我是OpenCart的菜鸟!

谢谢

2 个答案:

答案 0 :(得分:0)

我有类似的经历;我不小心删除了API密钥并创建了一个新密钥,但API才停止工作。

我发现$this->config->get('config_api_id');总是返回'1'。因此,在数据库中将我新创建的API密钥api_id值更改为1并且它可以正常工作。

我使用的是版本2.1.0.1

答案 1 :(得分:0)

您需要在curl选项中传递Cookie的文件。几乎所有的认证都需要它来编写和阅读:curl_setopt($ handle,CURLOPT_COOKIEJAR,' cookie_file.txt');