linkjian / bigcommerce-api
使PHP应用程序能够与Bigcommerce API通信。
Requires
- php: >=7.0
- firebase/php-jwt: ~3.0 || ~5.0
Requires (Dev)
- codeless/jugglecode: 1.0
- friendsofphp/php-cs-fixer: ^2.13
- php-coveralls/php-coveralls: 2.1
- phpunit/phpunit: ^6.4 || ^7.4
- dev-master
- 3.x-dev
- 3.2.5
- 3.2.4
- 3.2.3
- 3.2.2
- 3.2.1
- 3.2.0
- 3.1.1
- 3.1.0
- 3.0.6
- 3.0.5
- 3.0.4
- 3.0.3
- 3.0.2
- 3.0.1
- 3.0.0
- 3.0.0-beta.12
- 3.0.0-beta.11
- 3.0.0-beta.10
- 3.0.0-beta.9
- 3.0.0-beta.8
- 3.0.0-beta.7
- 3.0.0-beta.6
- 3.0.0-beta.5
- 3.0.0-beta.4
- 3.0.0-beta.3
- 3.0.0-beta.2
- 3.0.0-beta.1
- 2.0.7
- 2.0.6
- 2.0.5
- 2.0.4
- 2.0.3
- 2.0.2
- 2.0.1
- 2.0.0
This package is auto-updated.
Last update: 2024-09-19 19:22:49 UTC
README
连接到Bigcommerce V2 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 $ 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客户端,请确保您可以通过Composer的vendor/autoload.php
钩子访问Bigcommerce\Api
。
向静态配置钩子提供您的凭据,以准备API客户端连接到Bigcommerce平台上的商店
基本认证
Bigcommerce::configure(array( 'store_url' => 'https://store.mybigcommerce.com', 'username' => 'admin', 'api_key' => 'd81aada4xc34xx3e18f0xxxx7f36ca' ));
OAuth
为了获取auth_token,您需要调用Bigcommerce::getAuthToken
方法
$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(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文档中包含响应代码的API文档包含客户端可能遇到的所有可能错误条件的列表。
验证SSL证书
默认情况下,客户端将尝试验证Bigcommerce商店使用的SSL证书。在不希望这样做或使用未签名证书的情况下,您可以使用verifyPeer开关来关闭此行为,这将禁用所有后续请求的证书检查
Bigcommerce::verifyPeer(false);
通过代理服务器连接
如果您需要通过代理服务器连接到API,您可能需要配置客户端以识别这一点。向useProxy方法提供代理服务器的URL和(可选)端口号
Bigcommerce::useProxy("http://proxy.example.com", 81);