Php Opencart API:会话应用程序id问题(如何获取API id)
我正在开发Opencart API(Opencart v2.3),并遵循此链接获取文档()。但是没有关于opencart api以及如何使用它的数据,所以我遵循其他网站的步骤,并使用这些代码在调用登录api时收到此消息,Success:api会话成功启动强> 但每当我使用另一个API在购物车中添加产品、查看购物车或添加订单时,我都会收到权限问题。我调试代码,发现它需要会话应用程序id,当我检查时,它只存储令牌,而不存储应用程序id 我使用谷歌搜索到的以下代码。Php Opencart API:会话应用程序id问题(如何获取API id),php,api,session,opencart,opencart2.3,Php,Api,Session,Opencart,Opencart2.3,我正在开发Opencart API(Opencart v2.3),并遵循此链接获取文档()。但是没有关于opencart api以及如何使用它的数据,所以我遵循其他网站的步骤,并使用这些代码在调用登录api时收到此消息,Success:api会话成功启动 但每当我使用另一个API在购物车中添加产品、查看购物车或添加订单时,我都会收到权限问题。我调试代码,发现它需要会话应用程序id,当我检查时,它只存储令牌,而不存储应用程序id 我使用谷歌搜索到的以下代码。 common.php <?php
common.php
<?php
function do_curl_request($url, $params=array()) {
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_COOKIEJAR, 'E:\practice\oc2.3\tmp\apicookie.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE, 'E:\practice\oc2.3\tmp\apicookie.txt');
$params_string = '';
if (is_array($params) && count($params)) {
foreach($params as $key=>$value) {
$params_string .= $key.'='.$value.'&';
}
rtrim($params_string, '&');
curl_setopt($ch,CURLOPT_POST, count($params));
curl_setopt($ch,CURLOPT_POSTFIELDS, $params_string);
}
//execute post
$result = curl_exec($ch);
//close connection
curl_close($ch);
return $result;
}
<?php
require "common.php";
// set up params
$url = 'http://opencart2_3.local/index.php?route=api/restopencart/addproduct';
$fields = array(
'product_id' => '32',
'quantity' => '1',
'option[226]' => '15'
);
$json = do_curl_request($url, $fields);
$data = json_decode($json);
var_dump($data);
<?php
require "common.php";
// set up params
$url = 'http://opencart2_3.local/index.php?route=api/restopencart/addproduct&token=KYMmXA4Bcj8nL9WD3nl0oalaJOL1KSKo';
$fields = array(
'product_id' => '32',
'quantity' => '1',
'option[226]' => '15'
);
$json = do_curl_request($url, $fields);
$data = json_decode($json);
var_dump($data);
将令牌放在您的请求URL之后,这样它就可以工作了
假设api/login
返回的令牌是KYMmXA4Bcj8nL9WD3nl0oalaJOL1KSKo
add_product.php
<?php
function do_curl_request($url, $params=array()) {
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_COOKIEJAR, 'E:\practice\oc2.3\tmp\apicookie.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE, 'E:\practice\oc2.3\tmp\apicookie.txt');
$params_string = '';
if (is_array($params) && count($params)) {
foreach($params as $key=>$value) {
$params_string .= $key.'='.$value.'&';
}
rtrim($params_string, '&');
curl_setopt($ch,CURLOPT_POST, count($params));
curl_setopt($ch,CURLOPT_POSTFIELDS, $params_string);
}
//execute post
$result = curl_exec($ch);
//close connection
curl_close($ch);
return $result;
}
<?php
require "common.php";
// set up params
$url = 'http://opencart2_3.local/index.php?route=api/restopencart/addproduct';
$fields = array(
'product_id' => '32',
'quantity' => '1',
'option[226]' => '15'
);
$json = do_curl_request($url, $fields);
$data = json_decode($json);
var_dump($data);
<?php
require "common.php";
// set up params
$url = 'http://opencart2_3.local/index.php?route=api/restopencart/addproduct&token=KYMmXA4Bcj8nL9WD3nl0oalaJOL1KSKo';
$fields = array(
'product_id' => '32',
'quantity' => '1',
'option[226]' => '15'
);
$json = do_curl_request($url, $fields);
$data = json_decode($json);
var_dump($data);
将令牌放在您的请求URL之后,这样它就可以工作了
假设api/login
返回的令牌是KYMmXA4Bcj8nL9WD3nl0oalaJOL1KSKo
add_product.php
<?php
function do_curl_request($url, $params=array()) {
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_COOKIEJAR, 'E:\practice\oc2.3\tmp\apicookie.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE, 'E:\practice\oc2.3\tmp\apicookie.txt');
$params_string = '';
if (is_array($params) && count($params)) {
foreach($params as $key=>$value) {
$params_string .= $key.'='.$value.'&';
}
rtrim($params_string, '&');
curl_setopt($ch,CURLOPT_POST, count($params));
curl_setopt($ch,CURLOPT_POSTFIELDS, $params_string);
}
//execute post
$result = curl_exec($ch);
//close connection
curl_close($ch);
return $result;
}
<?php
require "common.php";
// set up params
$url = 'http://opencart2_3.local/index.php?route=api/restopencart/addproduct';
$fields = array(
'product_id' => '32',
'quantity' => '1',
'option[226]' => '15'
);
$json = do_curl_request($url, $fields);
$data = json_decode($json);
var_dump($data);
<?php
require "common.php";
// set up params
$url = 'http://opencart2_3.local/index.php?route=api/restopencart/addproduct&token=KYMmXA4Bcj8nL9WD3nl0oalaJOL1KSKo';
$fields = array(
'product_id' => '32',
'quantity' => '1',
'option[226]' => '15'
);
$json = do_curl_request($url, $fields);
$data = json_decode($json);
var_dump($data);
确保将服务器的IP地址添加到允许的IP地址中
要检查,请转到系统→ 使用者→ API
然后编辑默认值
到达后,单击IP地址
选项卡并插入服务器IP地址
要获取服务器IP地址,可以使用以下命令行:
$ curl ipinfo.io/ip
确保将服务器的IP地址添加到允许的IP地址中
要检查,请转到系统→ 使用者→ API
然后编辑默认值
到达后,单击IP地址
选项卡并插入服务器IP地址
要获取服务器IP地址,可以使用以下命令行:
$ curl ipinfo.io/ip
我已经这样做了,但我仍然得到错误。我想,不知怎么的,在某个地方,会话被刷新或删除了。你还有其他想法吗?我得到了权限错误,但我已经通过复制opencart的新版本如何处理会话解决了这个问题。@GellieAnn我也有同样的问题。你还记得你是如何解决这个问题的吗?@Aris,就像我说的,我复制了新版本的opencart处理会话的方式。它涉及编辑system/library/session.php和catalog/controller/startup/session.php。您只需在最新的opencart上复制代码。我已经做了很多测试,但是我不能让旧版本工作,因此我决定只使用新版本。我已经做了,但是我仍然得到了错误。我想,不知怎么的,在某个地方,会话被刷新或删除了。你还有其他想法吗?我得到了权限错误,但我已经通过复制opencart的新版本如何处理会话解决了这个问题。@GellieAnn我也有同样的问题。你还记得你是如何解决这个问题的吗?@Aris,就像我说的,我复制了新版本的opencart处理会话的方式。它涉及编辑system/library/session.php和catalog/controller/startup/session.php。您只需在最新的opencart上复制代码。我已经做了很多测试,但是我不能让旧版本工作,因此我决定只使用新版本。