您会在OpenCart的最新主要版本中看到许多激动人心的功能,从前端和后端的完全响应式设计到事件通知系统,等等。 其中最强大的功能之一就是REST API的引入。
在这个由两部分组成的系列文章中,我们将探索大多数可用的API,并使用它们来完成订单创建过程。 在第一部分中,我们将了解如何创建API用户凭证以及一些基本的API用法。
REST API允许第三方系统与OpenCart商店无缝交互。 如何使用iOS / Android应用在您的商店中下订单? 实际上,您可以考虑任何系统,而无需考虑其所基于的技术! 现在可以使用OpenCart 2.0提供的一组API进行集成。
在这一部分中,我将使用PHP cURL库演示API的用法。 因此,您需要安装PHP cURL库才能运行示例。 显然,您还将需要最新版本的OpenCart,即2.0!
创建API用户凭证
在开始使用API之前,我们需要为此设置“ API用户”。 否则,您将无法访问它,并且会收到权限被拒绝的错误。 因此,让我们进行设置。 导航到系统>用户> API ,它将列出所有可用的API用户。
单击右上角的+按钮以添加新的API用户。
如您所见,您需要输入Username , Password和Status 。 您也可以使用“ 生成”按钮来创建复杂的密码字符串,就像我所做的一样! 另外,请确保将状态设置为Enabled 。 保存更改,您就可以开始了!
现在我们已经设置了API用户,我们可以开始探索API!
设置通用文件
正如我们将在本系列文章中看到的基本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, '/tmp/apicookie.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE, '/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;
}
如您所见,它仅包含一个函数do_curl_request
,它将对$url
参数传递的URL进行CURL调用。 第二个参数是一个参数数组,以防您需要对数据进行POST。
要注意的其他重要事项是CURLOPT_COOKIEJAR
和CURLOPT_COOKIEFILE
设置。 这些设置将在其中存储和读取Cookie的文件。 因为我们需要进行经过身份验证的呼叫,所以这是必须的! 当然,您要根据系统设置更改路径/tmp/apicookie.txt
。 确保它也可被Web服务器写入!
最后,该函数通过CURL请求返回响应!
如何登入
显然,要做的第一件事是启动会话,您将需要使用login
方法。 让我们看一个例子。 继续并创建具有以下内容的login.php
文件。
<?php
require "common.php";
// set up params
$url = 'http://your-opencart-store-url/index.php?route=api/login';
$fields = array(
'username' => 'demo_api_user',
'password' => '5fbYF8oDteYSJhMQnXuxGB7jx7Ujk7zjJxuCwDSmZx3NJ47ARxW8Je70bYQrfpsfVamVXaMJ4GtHPxnu1ZX41JQN5Vy6V2XwaS6u5dMO6QDArRBc7P7RnriYyancCowlKVTNVUelIKGKmsTBZiPdcYAHX8n6pnSPvNa1wqfQaieKWux6fFZxIYlCstATe02UtFxvhzF82St2Cw0EhfC2rcFwDjQVAowMG1tGDAsIhz8EZa6ngSreD2qZQnqxg8Lm',
);
$json = do_curl_request($url, $fields);
$data = json_decode($json);
var_dump($data);
首先,我们包含了上一部分中创建的common.php
文件。 接下来, $url
变量定义OpenCart商店的API登录URL。 接下来, $fields
数组保存先前创建的API用户凭证。 最后,我们调用do_curl_request
方法登录。
如果一切设置正确,您将看到“成功:API会话成功启动!” 消息中的响应。
恭喜你! 您刚刚在OpenCart中使用了登录REST API!
如何在购物车中添加产品
因此,既然我们已经登录,我们就开始在购物车中添加产品! 创建具有以下内容的文件add_product.php
。
<?php
require "common.php";
// set up params
$url = 'http://your-opencart-store-url/index.php?route=api/cart/add';
$fields = array(
'product_id' => '51',
'quantity' => '1'
);
$json = do_curl_request($url, $fields);
$data = json_decode($json);
var_dump($data);
同样,这里的东西很简单! 您需要传递product_id
和quantity
参数以将产品添加到购物车中。 您应该看到“成功:您已经修改了购物车!” 消息成功的话!
如何在购物车中编辑产品
在继续进行之前,让我们尝试了解OpenCart如何将产品信息存储在购物车对象中。 这是购物车对象的外观。
stdClass Object
(
...
[products] => Array
(
[0] => stdClass Object
(
[key] => YToxOntzOjEwOiJwcm9kdWN0X2lkIjtpOjUwO30=
[product_id] => 51
[name] => Demo Product
[model] => demoproduct
[option] => Array
(
)
[quantity] => 1
[stock] => 1
[shipping] => 1
[price] => $10.00
[total] => $20.00
[reward] => 0
)
)
...
)
如您所见,它存储为products
键引用的数组。 key
也已加密,因此要编辑对象中的任何产品条目,您首先需要使用product_id
来获取关联的key
!
现在,让我们看看如何编辑购物车中产品的数量。 创建文件edit_product.php
并将以下内容粘贴到该文件中。
<?php
require "common.php";
// get list of products from the "Cart"
$url = 'http://your-opencart-store-url/index.php?route=api/cart/products';
$json = do_curl_request($url);
$products_data = json_decode($json);
// fetch "key" of the product we want to edit
$product_key = $products_data->products[0]->key;
// edit the product in the "Cart" using "key"
$url = 'http://your-opencart-store-url/index.php?route=api/cart/edit';
$fields = array(
'key' => $product_key,
'quantity' => '2'
);
$json = do_curl_request($url, $fields);
$data = json_decode($json);
var_dump($data);
在上面的示例中,我们进行了两次CURL调用。 第一个是获取购物车中的所有产品,第二个是更新购物车中已有产品的数量!
要编辑任何产品,您需要该产品的$key
,并且可以通过从购物车会话中获取完整的产品数组来找到它。
为了简单起见,我直接使用0
索引获取了密钥。 但是,当然,您需要使用product_id
进行查找。
$product_key = $products_data->products[0]->key;
其余的很简单:我们只是传递key
和我们要为产品更新的quantity
! 同样,您应该看到“成功:您已经修改了购物车!” 在响应中,以确保正确更新数量。
今天就这样。 在本教程的下一部分,我们将看到其余示例来创建订单!
结论
今天,我们研究了OpenCart中重要的“ REST API”功能。 我们经历了创建API用户的过程,随后我们探索了一些动手示例来了解API的用法。 我很想听听您对这个令人兴奋的功能的想法!
翻译自: https://code.tutsplus.com/tutorials/explore-rest-apis-in-opencart-20-part-one--cms-25122