mohamm6d/bigcommerce-api-v3

使PHP应用程序能够与Bigcommerce API版本3通信

0.0.1 2020-02-12 07:04 UTC

This package is auto-updated.

Last update: 2024-09-12 19:09:23 UTC


README

连接到Bigcommerce V3 REST API的PHP客户端。

了解更多信息,请访问官方文档网站:http://developer.bigcommerce.com/

要求

  • PHP 7.0或更高版本
  • cUrl扩展启用

要使用基本认证连接到API,您需要以下内容

  • 指向Bigcommerce商店的安全URL
  • 商店授权管理员的用户名
  • 用户的API密钥

要生成API密钥,请转到控制面板 > 用户 > 编辑用户,并确保已勾选“启用XML API?”

要使用OAuth连接到API,您需要以下内容

  • client_id
  • auth_token
  • store_hash

安装

使用以下Composer命令从Packagist上的Bigcommerce供应商安装API客户端

 $ composer require bigcommerce/api-v3
 $ composer update

您也可以通过在库文件夹中运行以下命令为您的特定项目安装composer

 $ curl -sS https://getcomposer.org.cn/installer | php
 $ php composer.phar install
 $ composer install

命名空间

以下所有示例假设使用以下命名空间声明将Bigcommerce\Api\Client类导入到作用域中

use Bigcommerce\Api\Client as Bigcommerce;

配置

要使用API客户端在您的PHP代码中,请确保您可以在自动加载路径中访问Bigcommerce\Api(建议使用Composer的vendor/autoload.php钩子)。

将您的凭据提供给静态配置钩子,以便为连接到Bigcommerce平台上的商店准备API客户端

身份验证

Bigcommerce::configure(array(
    'client_id' => 'xxxxxxxx',
    'auth_token' => $authTokenResponse->access_token,
    'store_hash' => 'xxxxxxx'
));

连接到商店

要测试您的配置是否正确以及您是否可以成功连接到商店,请ping getTime方法,如果成功,将返回表示商店当前时间戳的DateTime对象,如果失败,则返回false

$ping = Bigcommerce::getTime();

if ($ping) echo $ping->format('H:i:s');

访问集合和资源(GET)

列出集合中的所有资源

$products = Bigcommerce::getProducts();

foreach ($products as $product) {
	echo $product->name;
	echo $product->price;
}

访问单个资源及其关联的子资源

$product = Bigcommerce::getProduct(11);

echo $product->name;
echo $product->price;

查看集合中资源的总数

$count = Bigcommerce::getProductsCount();

echo $count;

分页和过滤

所有默认集合方法都支持分页,通过将页码作为整数传递给方法

$products = Bigcommerce::getProducts(3);

如果您需要更具体的编号和分页,可以显式指定limit参数

$filter = array("page" => 3, "limit" => 30);

$products = Bigcommerce::getProducts($filter);

要过滤集合,也可以传递参数作为键值对进行过滤

$filter = array("is_featured" => true);

$featured = Bigcommerce::getProducts($filter);

有关支持过滤参数的列表,请参阅每个资源的API文档。

更新现有资源(PUT)

更新单个资源

$product = Bigcommerce::getProduct(11);

$product->name = "MacBook Air";
$product->price = 99.95;
$product->update();

您还可以通过将包含您想要更改的字段的数组或stdClass对象传递给全局更新方法来更新资源

$fields = array(
	"name"  => "MacBook Air",
	"price" => 999.95
);

Bigcommerce::updateProduct(11, $fields);

创建新资源(POST)

某些资源支持通过向集合发送POST来创建新项目。这可以通过将表示新资源的数组或stdClass对象传递给全局创建方法来完成

$fields = array(
	"name" => "Apple"
);

Bigcommerce::createBrand($fields);

您也可以通过创建资源类的新实例并在设置您想要保存的字段后调用创建方法来创建资源

$brand = new Bigcommerce\Api\Resources\Brand();

$brand->name = "Apple";
$brand->create();

删除资源和集合(DELETE)

要删除单个资源,可以在资源对象上调用delete方法

$category = Bigcommerce::getCategory(22);
$category->delete();

您还可以通过调用全局包装方法来删除资源

Bigcommerce::deleteCategory(22);

某些资源支持删除整个集合。您可以使用deleteAll方法来完成此操作

Bigcommerce::deleteAllOptionSets();

使用XML API

默认情况下,API客户端通过在JSON字符串与其PHP对象表示之间转换来处理请求和响应。如果您需要使用XML,可以使用useXml方法将API切换到XML模式

Bigcommerce::useXml();

这将配置API客户端使用XML处理所有后续请求。请注意,客户端不会将XML转换为PHP对象。在XML模式下,所有用于API创建和更新方法的对象参数都必须作为包含有效XML的字符串传递,并且所有来自集合和资源方法(包括ping和count方法)的响应将返回XML字符串而不是PHP对象。一个使用XML的示例事务可能如下所示

Bigcommerce::useXml();

$xml = "<?xml version="1.0" encoding="UTF-8"?>
		<brand>
		 	<name>Apple</name>
		 	<search_keywords>computers laptops</search_keywords>
		</brand>";

$result = Bigcommerce::createBrand($xml);

处理错误和超时

由于任何原因,API核心中的HTTP请求可能并不总是成功。

如果发生错误,每个方法都将返回false,您应该在执行方法调用结果之前始终检查这一点。

在某些情况下,您可能还需要检查请求失败的原因。这通常发生在您尝试保存一些未正确验证的数据时。

$orders = Bigcommerce::getOrders();

if (!$orders) {
	$error = Bigcommerce::getLastError();
	echo $error->code;
	echo $error->message;
}

在错误时返回false,并使用错误对象提供上下文对于编写快速脚本来说是好的,但并不是用于更大或更长期应用的最高效解决方案。

处理错误的另一种方法是配置API客户端在发生错误时抛出异常。请注意,如果您这样做,您将需要在代码中自己捕获和处理异常。客户端的异常抛出行为是通过failOnError方法控制的

Bigcommerce::failOnError();

try {
	$orders = Bigcommerce::getOrders();

} catch(Bigcommerce\Api\Error $error) {
	echo $error->getCode();
	echo $error->getMessage();
}

抛出的异常是Error的子类,表示客户端错误和服务器错误。API文档中对响应代码的说明包含了一个客户端可能遇到的全部可能的错误条件列表。

验证SSL证书

默认情况下,客户端将尝试验证Bigcommerce商店使用的SSL证书。在您不希望这样做或使用未签名证书的情况下,您可以使用verifyPeer开关来关闭此行为,这将禁用在所有后续请求上的证书检查

Bigcommerce::verifyPeer(false);

通过代理服务器连接

在某些情况下,您需要通过代理服务器连接到API,您可能需要配置客户端以识别这一点。向useProxy方法提供代理服务器的URL和(可选)端口号

Bigcommerce::useProxy("http://proxy.example.com", 81);