ferjul17 / sellsy-api
PHP 库,用于调用 Sellsy 的 API
Requires
- guzzlehttp/guzzle: ^6.0
- psr/log: ^1.0
Requires (Dev)
- phpunit/phpunit: ^4.0
README
PHP 库,用于调用 Sellsy 的 API
$client = new Client(['userToken' => 'xxx', 'userSecret' => 'xxx', 'consumerToken' => 'xxx', 'consumerSecret' => 'xxx', ]); var_dump($client->getService('Infos')->call('getInfos', [])); $promise = $client->getService('Infos')->callAsync('getInfos', [])->then(function($res) { var_dump($res); }); $promise->wait();
如何安装
首先您需要 Composer
php -r "readfile('https://getcomposer.org.cn/installer');" | php
然后添加 Sellsy API 作为您项目的依赖项
php composer.phar require ferjul17/sellsy-api
如何使用
设置库
库提供了一个名为 Service
的类,该类代表 Sellsy API 的一部分。该服务允许您调用与此模块相关的 API。例如,服务 Accountdatas
允许调用以 Accountdatas 开头的所有 Sellsy API 方法,如 Accountdatas.getTaxe 或 Accountdatas.updateUnit。
服务由一个名为 Client
的工厂创建。因此,在获得 Service
之前,您首先需要创建一个 Client
。要创建客户端,只需调用其构造函数。其第一个参数是一个包含配置的数组。您必须提供调用 API 的凭证,包括用户令牌和密钥,以及您可以在 Sellsy 界面中找到的消费者令牌和密钥。
require 'path/to/vendor/autoload.php'; use SellsyApi\Client; $client = new Client(['userToken' => 'xxx', 'userSecret' => 'xxx', 'consumerToken' => 'xxx', 'consumerSecret' => 'xxx', ]);
调用 API
一旦您有了客户端,您可以通过调用方法 getService($serviceName)
来检索 Service
。
$service = $client->getService('Accountdatas');
最后,您可以通过方法 call($methodName, $params)
来调用 API。
$response = $service->call('createUnit', ['unit' => ['value' => 'Kg']);
还有一个方法 callAsync($methodName, $params)
,它发送异步请求并返回一个 Promise
。
$promise = $service->callAsync('createUnit', ['unit' => ['value' => 'Kg']); $response = $promise->wait();
有关 Promise
的更多信息,请参阅 此处。
处理错误
为了处理错误,您应该使用先前方法的可重试版本:retryableCall($callable)
和 retryableCallAsync($callable)
。如果库可以处理错误,它将尝试通过调用 $callable
再次发送请求。
$callable
必须是一个函数,该函数返回要提供给 call()
和 callAsync()
方法的参数。
$callable
接受 3 个参数
- 用于发送调用的
ServiceInterface
实例 - 重试次数。第一次此值为 0。
- 接收到的错误
var_dump($client->getService('Infos')->retryableCall(function (ServiceInterface $service, $retry, $e) { if ($retry > 3) { throw $e; } return ['getInfos', []]; })); $promise = $client->getService('Infos')->retryableCallAsync(function (ServiceInterface $service, $retry, $e) { if ($retry > 3) { throw $e; } return ['getInfos', []]; })->then(function ($res) { var_dump($res); }); $promise->wait();
如何运行测试
如果您想测试此库,可以克隆此存储库运行测试套件
git clone https://github.com/ferjul17/Sellsy-api.git
然后安装依赖项
composer update
然后运行测试
vendor/phpunit/phpunit/phpunit
许可证
Sellsy API 是一个开源项目,在 MIT 许可证下发布。有关更多信息,请参阅 LICENSE
文件。