fiskaly / fiskaly-sdk-php
此包已被弃用且不再维护。未建议替代包。
fiskaly Cloud-TSE SDK for PHP
1.2.200
2021-05-12 16:38 UTC
Requires
- php: >=7.1
- ext-json: *
- datto/json-rpc-http: *
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.16
- phpunit/phpunit: ^9.1
README
fiskaly SDK 包含一个 HTTP 客户端,该客户端需要1 访问 kassensichv.io API,该 API 实现了一个基于云的、虚拟的 CTSS(认证技术安全系统)/ TSE(技术安全设备),这是根据德国 KassenSichV(《现金安全规定》)定义的。
支持的版本
- PHP 7.1+
特性
- 自动处理身份验证(获取/刷新 JWT 并在 401 错误时重新认证)。
- 自动在失败时重试(服务器错误或网络超时/问题)。
- 自动解析和序列化请求和响应体。
- 未来:[1] 遵循关于 BSI CC-PP-0105-2019 的合规性,该合规性要求本地执行 SMA 组件以创建签名日志消息。
- 未来:自动离线处理(根据 第 146a 条 AO 应用条例 收集和记录)
集成
Composer
PHP SDK 可以通过 Composer 下载。
Packagist - 包仓库。
在项目目录的 shell 中执行此命令
$ composer require fiskaly/fiskaly-sdk-php
或者,您可以手动将包添加到您的 composer.json
文件中
"require": { "fiskaly/fiskaly-sdk-php": "*" }
然后运行
$ composer install
最后,请确保在您的代码中包含自动加载器
<?php require_once('vendor/autoload.php');
服务
除了 SDK 之外,您还需要 fiskaly 服务。按照以下步骤将服务集成到您的项目中
- 访问 https://developer.fiskaly.com/downloads#service
- 下载适合您平台的相应服务构建版本
- 启动服务
用法
示例
<?php require __DIR__ . '\\vendor\\autoload.php'; use FiskalyClient\FiskalyClient; /** initialize the fiskaly API client class using credentials */ try { $client = FiskalyClient::createUsingCredentials('https://:8080/invoke', $_ENV["FISKALY_API_KEY"], $_ENV["FISKALY_API_SECRET"], 'https://kassensichv.io/api/v1'); } catch (Exception $e) { exit($e); } /** get version of client and SMAERS */ try { $version = $client->getVersion(); echo "Version: ", $version, "\n\n"; } catch (Exception $e) { exit($e); }
创建 FiskalyClient 对象的另一种方法是使用 context
字符串。您可以通过 getContext
方法获取它,并通过 $_SESSION 变量或持久化到缓存或数据库中保存它。
<?php /** initialize the fiskaly API client class using context */ try { $client = FiskalyClient::createUsingContext('https://:8080/invoke', $_SESSION["FISKALY_CONTEXT"]); } catch (Exception $e) { exit($e); }
客户端配置
该SDK基于fiskaly Client构建,该Client可以通过SDK进行配置。
这样做的一个原因是启用调试模式。
启用调试模式
以下代码片段展示了如何在客户端中启用调试模式。
<?php /** configure client */ try { $config_params = array( 'debug_level' => 4, 'debug_file' => __DIR__ . '../../fiskaly.log', 'client_timeout' => 5000, 'smaers_timeout' => 2000, ); $config = $client->configure($config_params); echo "Configuration: ", $config, "\n\n"; } catch (Exception $e) { exit($e); }