dokobit/gateway-php-sdk

Dokobit Gateway API 客户端

v1.3.0 2023-01-06 09:45 UTC

This package is auto-updated.

Last update: 2024-09-03 16:16:51 UTC


README

Build Status Scrutinizer Code Quality Code Coverage Build Status

这个库通过将所有 Gateway API 调用和响应封装在 PHP 对象中,使在 PHP 应用程序中集成 Dokobit Gateway API 更加容易。

如何开始?

  1. 实例化客户端对象

    use Dokobit\Gateway\Client;
    
    // <...>
    $client = Client::create([
        'apiKey' => 'xxxxxx',
        'sandbox' => true,
    ]);

    如果您想记录请求,只需将 PSR-3 LoggerInterface 兼容的记录器(如 Monolog 实例)作为第二个参数传递给 create() 方法,如下所示

    use Dokobit\Gateway\Client;
    use Monolog\Handler\StreamHandler;
    use Monolog\Logger;
    
    // <...>
    $log = new Logger('requests');
    $log->pushHandler(new StreamHandler(__DIR__ . '/path/to/info.log', Logger::INFO));
    
    $client = Client::create([
        'apiKey' => 'xxxxxx',
        'sandbox' => true,
    ], $log);
  2. 使用上面实例化的客户端进行所需的 API 调用。要做到这一点,实例化相应的请求对象并将其传递给客户端的 get() 方法。例如,要将文件上传到 Gateway

    use Dokobit\Gateway\Query\File\Upload;
    
    // <...>
    $request = new Upload('/path/to/your/document.pdf');
    $result = $client->get($request);
    echo $result->getStatus(); // Request status
    echo $result->getToken(); // Uploaded file token

    客户端执行 HTTP 请求并返回一个结果对象,该对象具有所有响应字段的获取器。如果请求因任何原因失败,将抛出异常,这有助于您调试问题。

请求(查询)和响应(结果)类与 API 调用非常相似,这些调用在 https://gateway-sandbox.dokobit.com/api/doc 上有文档。

为了使下载已签名的文件更加方便,Client 类还提供了 downloadFile() 方法。要下载一个签名的文件,只需像这样调用此方法

$client->downloadFile($signedFileUrl, $downloadedFilePath);

注意:此方法会自动将您的访问令牌附加到 URL 上,因此您可以将从 Gateway 的 postbacks 收到的 URL 以原始形式传递,无需任何更改。如果需要,此方法也可以用于从其他位置下载任意文件。如果需要这样做,只需将 false 作为第三个参数传递以避免附加访问令牌,如下所示

$client->downloadFile($signedFileUrl, $downloadedFilePath, false);

有关进一步的代码使用示例,请查看 tests/Integration 下的集成测试。

调试

要深入了解发生错误,请使用以下方法

echo (string) $exception->getMessage()
echo (string) $exception->getPrevious()->getResponse()
var_dump( $exception->getResponseData() )

这些方法对所有异常类都可用,除了 UnexpectedErrorQueryValidator

开发

包括集成测试在内的整个测试套件

phpunit

不要忘记在 phpunit.xml 中定义 SANDBOX_API_KEY

仅运行单元测试

phpunit --testsuite=Unit

仅运行集成测试

phpunit --testsuite=Integration

运行单个测试用例

phpunit tests/Integration/CheckTest.php