elkadrey / fiskaly-laravel
fiskaly SDK for PHP for API v2
1.0.1
2022-12-20 08:53 UTC
Requires
- php: >=8.0
- ramsey/uuid: ^4.6
README
fiskaly SDK是一个HTTP Laravel客户端,用于访问kassensichv.io API v2,该API实现了一个基于云的、虚拟的CTSS(认证技术安全系统)/ TSE(技术安全设备),这是根据德国KassenSichV(Kassensichererungsverordnung)规定的。
要求
PHP 8.0+ Laravel或Lumen 8+
集成
Composer
PHP SDK可以通过Composer下载。
Packagist - 包仓库.
只需在项目目录的shell中执行此命令
$ composer require elkadrey/fiskaly-laravel
或者您可以手动将包添加到您的composer.json
文件中
"require": { "elkadrey/fiskaly-laravel": "*" }
然后运行
$ composer update
服务
除了SDK之外,您还需要fiskaly服务。按照以下步骤将其集成到您的项目中
- 访问https://developer.fiskaly.com/downloads#service
- 下载适用于您的平台的适当服务构建版本
- 启动服务
开始使用
示例 1:建立连接并创建一个初始化TSS
<?php namespace App\Http\Controllers; use Illuminate\Routing\Controller as BaseController; //include the client library use elkadrey\FiskalyLaravel\FiskalyLaravelClient; use Exception; use Illuminate\Http\Request; use Illuminate\Http\Resources\Json\JsonResource; use Illuminate\Support\Facades\Cache; class Controller extends BaseController { private ?FiskalyLaravelClient $client = null; public function __construct() { //Make the connection $this->client = FiskalyLaravelClient::create([ "api_key" => env("TSE_API_KEY"), "api_secret" => env("TSE_API_SECRET"), "baseUrl" => env("TSE_API_URL", null), "token" => Cache::get("tse_token"), "token_expire_at" => Cache::get("tse_token_expire_at"), ]); //Set debug level (2 is default) /** Debug levels list * 0 = errors only * 1 = errors and warning * 2 = all with info for each API response */ $this->client->setLog(2); //make Auth with token in case empty token or expired $token = $this->client->MakeAuth(); //Also you can use getToken //$token = $this->client->getToken(); Cache::put("tse_token", $token->access_token); Cache::put("tse_token_expire_at", $token->access_token_expires_at); } public function createTSS(Request $request) { $this->validate($request, [ "metadata" => "nullable|array" ]); try { //create a ready INITIALIZED TSS (5 steps in one) set_time_limit(0); $results = $this->client->createTSS($request->metadata); return JsonResource::make($results); } catch(Exception $e) { //Your exception code here } } }
自定义API使用
例如,要调用像"/tss/{{tssId}}/client/{{$guid}}"这样的API,方法为put,只需在第一个函数中调用该方法,然后使用"_"来转义API斜杠"/"并提供参数数据作为数组、请求或集合,如果想要自动添加GUID,则排列为布尔值
$this->client->put_tss_95a03ad9-61ad-4757-8a1d-57daf47db25c_client($params, true);
示例 2:建立连接并创建一个手动TSS
public function createManuallyTSS(Request $request) { $this->validate($request, [ "metadata" => "nullable|array" ]); try { //create a ready INITIALIZED TSS (5 steps in one) set_time_limit(0); //API => method:put /tss/{$guid} $tss = $this->client->put_tss($request->metaData, true); //return laravel collection if($tss->state == "CREATED") { //1- Change state to UNINITIALIZED //API => method:patch /tss/{tssid} $this->client->{"patch_tss_$tss->_id"}(["state" => "UNINITIALIZED"]); $tss->put("state", "UNINITIALIZED"); //2 - Set admin pin $adminPin = uniqid(); //change admin pin api $this->client->changeAdminPin($tss->_id, $tss->admin_puk, $adminPin); $tss->put("adminpin", $adminPin); //3- Make admin auth //make admin auth $this->client->adminAuth($tss->_id, $adminPin); //4- Change state to INITIALIZED //API => method:patch /tss/{tssid} $this->client->{"patch_tss_$tss->_id"}(["state" => "INITIALIZED"]); $tss->put("state", "INITIALIZED"); return JsonResource::make($tss); } } catch(Exception $e) { //Your exception code here } }
示例 3:将客户端添加到TSS
public function addClient(string $tssid, Request $request) { $this->validate($request, [ "metadata" => "nullable|array" ]); try { $guid = $this->client->getUUID(); $serial_number = "ERS $guid"; $info = compact('serial_number', 'metadata'); //API => method:PUT /tss/{tssid}/client/{guid} $results = $this->client->{"put_tss_$tssid"."_client_$guid"}($info); return JsonResource::make($results); } catch(Exception $e) { //Your exception code here } }
示例 4:开始交易
public function startTransaction(string $tssid, string $clientid) { try { //API => method:PUT /tss/{{tssId}}/tx/{{$guid}}?tx_revision=1 $results = $this->client->{"put_tss_$tssid"."_tx?tx_revision=1"}(["state" => "ACTIVE", "client_id" => $clientid], true); return JsonResource::make($results); } catch(Exception $e) { //Your exception code here } }