tmoldri / gateway-php-sdk
Dokobit Gateway API 的客户端
Requires
- php: >=7.2.0
- guzzlehttp/guzzle: ^7.0.1
- symfony/intl: ^5.2
- 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-15 19:31:04 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 请求并返回一个结果对象,该对象为所有响应字段提供 getter。如果请求因任何原因失败,将抛出一个异常,这有助于您调试问题。
请求(查询)和响应(结果)类与 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