ezknock/ezknock-php-sdk

基于HTTPlug构建的EZ Knock API客户端

1.1.14 2022-03-09 19:04 UTC

This package is auto-updated.

Last update: 2024-09-10 00:52:25 UTC


README

packagist

官方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分支中拉取。

  • 每个功能一个拉取请求。如果您想做更多的事情,请发送多个拉取请求。

  • 发送连贯的历史记录。确保您的拉取请求中的每个单独提交都有意义。如果您在开发过程中不得不进行多个中间提交,请在发送给我们之前将它们压缩。