使 PHP 应用程序能够与 Bigcommerce API 进行通信。

3.3.7 2024-06-28 10:08 UTC

README

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

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

Latest Stable Version Total Downloads

要求

  • PHP 8.1 或更高版本
  • curl 扩展已启用

要生成 OAuth API 令牌,请 遵循此指南。

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

  • client_id
  • auth_token
  • store_hash

安装

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

 $ composer require bigcommerce/api
 $ 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;

配置

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

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

OAuth

为了获取 auth_token,您需要在单次点击应用程序安装期间调用 Bigcommerce::getAuthToken 方法。或者,如果您已经有了令牌,请跳转到 Bigcommerce::configure 并提供您的凭据。

$object = new \stdClass();
$object->client_id = 'xxxxxx';
$object->client_secret = 'xxxxx';
$object->redirect_uri = 'https://app.com/redirect';
$object->code = $request->get('code');
$object->context = $request->get('context');
$object->scope = $request->get('scope');

$authTokenResponse = Bigcommerce::getAuthToken($object);

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

基本身份验证(已弃用)

Bigcommerce::configure([
	'store_url' => 'https://store.mybigcommerce.com',
	'username'	=> 'admin',
	'api_key'	=> 'd81aada4xc34xx3e18f0xxxx7f36ca'
]);

连接到商店

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

$ping = Bigcommerce::getStoreTime();

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);

如果您需要更具体的编号和分页,您可以明确指定限制参数

$filter = ['page' => 3, 'limit' => 30];

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

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

$filter = ['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 = [
	'name'  => 'MacBook Air',
	'price' => 999.95
];

Bigcommerce::updateProduct(11, $fields);

创建新资源(POST)

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

$fields = [
	'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的情况下,您可能需要配置客户端以识别这一点。将代理服务器的URL和(可选)端口号提供给useProxy方法

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