dokobit / gateway-php-sdk
Dokobit Gateway API 客户端
Requires
- php: ^7.2.5|^8.0
- guzzlehttp/guzzle: ^7.0
- symfony/validator: ~3.4|~4.4|~5.2
Requires (Dev)
- monolog/monolog: ~1.0
- phpunit/phpunit: ^6.5.14 || ^7.5.20 || ^8.5.13 || ^9.5
- psr/log: ~1.0
This package is auto-updated.
Last update: 2024-09-03 16:16:51 UTC
README
这个库通过将所有 Gateway API 调用和响应封装在 PHP 对象中,使在 PHP 应用程序中集成 Dokobit Gateway API 更加容易。
如何开始?
-
实例化客户端对象
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);
-
使用上面实例化的客户端进行所需的 API 调用。要做到这一点,实例化相应的请求对象并将其传递给客户端的
get()
方法。例如,要将文件上传到 Gatewayuse 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() )
这些方法对所有异常类都可用,除了 UnexpectedError
和 QueryValidator
。
开发
包括集成测试在内的整个测试套件
phpunit
不要忘记在 phpunit.xml 中定义 SANDBOX_API_KEY
。
仅运行单元测试
phpunit --testsuite=Unit
仅运行集成测试
phpunit --testsuite=Integration
运行单个测试用例
phpunit tests/Integration/CheckTest.php