ezknock / ezknock-php-sdk
基于HTTPlug构建的EZ Knock API客户端
Requires
- php: >= 7.1
- ext-json: *
- php-http/client-common: ^1.9 || ^2.0
- php-http/client-implementation: *
- php-http/discovery: ^1.4
- php-http/httplug: ^1.0 || ^2.0
- php-http/message: ^1.7
- php-http/multipart-stream-builder: ^1.1
- psr/http-message: ^1.0
Requires (Dev)
- guzzlehttp/psr7: ^1.7.0
- lodev09/php-util: ^2.0
- php-http/guzzle7-adapter: ^1.0
- php-http/mock-client: ^1.4
- phpunit/phpunit: ^7.5 || ^8.5 || ^9.3
- squizlabs/php_codesniffer: ^3.1
README
官方PHP绑定EZ Knock API
项目更新
安装
此库支持PHP 7.3及更高版本
此库使用HTTPlug作为HTTP客户端。HTTPlug是一个抽象,允许此库支持许多不同的HTTP客户端。因此,您需要提供一个适配器,用于您偏好的HTTP库。您可以在Packagist中找到所有可用的适配器此处。此文档假定您使用Guzzle7客户端,但您可以用您偏好的任何适配器替换它。
安装ezknock-php-sdk的推荐方式是通过Composer
composer require ezknock/ezknock-php-sdk php-http/guzzle7-adapter
客户端
使用您的访问令牌初始化客户端
use EZKnock\Client as EZKClient; $client = new EZKClient('<insert_token_here>');
对于大多数用例,上面的代码片段应该足够。但是,如果需要,您可以按以下方式自定义EZKnock客户端
使用自定义HTTP客户端
此客户端需要实现Psr\Http\Client\ClientInterface
$client->setHttpClient($yourHttpClient);
使用自定义请求工厂
此工厂需要实现Http\Message\RequestFactory
$client->setRequestFactory($yourRequestFactory);
使用自定义URI工厂
此工厂需要实现Http\Message\UriFactory
$client->setUriFactory($yourUriFactory);
覆盖率
通过邮政编码获取覆盖率信息。
try { $data = $client->buyers->coverage('73301'); print_r($data); } catch (Exception $ex) { print_r($ex->getMessage()); print_r($ex->getDebug()); }
创建订单
创建订单
$data = [ 'recipients' => [ [ 'firstname' => 'Ryann', 'lastname' => 'Ullrich', 'company' => 'Romaguera, Yundt and Marvin', 'email' => 'nikita67@kihn.com' ] ], 'address' => '2453 W Vita Locks Rapids', 'address_2' => 'BLDG 377', 'city' => 'Austin', 'state' => 'TX', 'zip' => '78749', 'return_type' => 'default', 'originals' => false, 'witnessfees' => true, 'instructions' => 'Aut perferendis et necessitatibus. Vel tempore molestiae ut nihil dolore. Rem dolor sed nulla cupiditate.', 'min_attempts' => 3, 'documents' => 'ORDER FOR ALTERNATIVE SERVICE AND TO EXTEND TIME FOR SERVICE OF PROCESS; SUMMONS; COMPLAINT; EXHIBIT; NOTICE TO DEFENDANT', 'attempt_by' => '2021-05-10', 'diligence_by' => '2021-05-15', 'complete_by' => '2021-05-20', 'service_files' => [fopen('/path/to/file.pdf', 'r')], 'other_files' => [fopen('/path/to/file.pdf', 'r')], 'return_file' => fopen('/path/to/file.pdf', 'r'), 'qualifications' => [1, 2, 3], 'costs' => [ [ 'name' => 'delivery', 'amount' => 50 ], [ 'name' => 'rush', 'amount' => 20 ] ] ]; try { $order = $client->buyers->createOrder($data); print_r($order); } catch (Exception $ex) { print_r($ex->getMessage()); print_r($ex->getDebug()); }
速率限制
速率限制信息通过速率限制头传递。您可以按以下方式访问此信息
$rate_limit = $client->getRateLimit(); print("{$rate_limit['remaining']} {$rate_limit['limit']} \n"); print_r($rate_limit['reset_at']->format(DateTime::ISO8601));
有关速率限制和这些头部的更多信息,请参阅API参考文档
分页
在列表时,EZ Knock API可能会返回分页对象
{ "pages": { "next": "..." } }
您可以使用客户端获取下一页的结果
$client->nextPage($response->pages);
异常
异常由HTTPlug处理。每个抛出的异常都实现了Http\Client\Exception
。请参阅http客户端异常和客户端和服务器错误。EZ Knock API可能会返回不成功的HTTP响应,例如当资源未找到时(404)。如果您想捕获错误,可以将您的API调用包裹在一个try/catch块中
try { $user = $client->buyers->coverage('73301'); } catch(Http\Client\Exception $e) { if ($e->getCode() == '404') { // Handle 404 error return; } else { throw $e; } }
拉取请求
-
添加测试! 如果您的补丁没有测试,它不会被接受。
-
记录任何行为变化。确保README和任何其他相关文档保持最新。
-
创建主题分支。不要要求我们从您的master分支中拉取。
-
每个功能一个拉取请求。如果您想做更多的事情,请发送多个拉取请求。
-
发送连贯的历史记录。确保您的拉取请求中的每个单独提交都有意义。如果您在开发过程中不得不进行多个中间提交,请在发送给我们之前将它们压缩。