我正在尝试使用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的菜鸟!
谢谢
答案 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');