gamebay / rksv
奥地利RKSV实现,与PrimeSign在线证书签名服务相结合
Requires
- php: ^8.0
- ext-openssl: *
- chillerlan/php-qrcode: ^3.1.1
- guzzlehttp/guzzle: ^7
Requires (Dev)
- phpunit/phpunit: ^8
This package is auto-updated.
Last update: 2024-09-15 11:39:08 UTC
README
请注意,此仓库仍在积极开发中,如果您计划在生产环境中使用它。
在奥地利,税务化过程被称为Registrierkassensicherheitsverordnung (RKSV)。
在这个仓库中,我们使用了PrimeSign在线签名功能(通过Cryptas)。
我们从他们那里获得了一个简单的服务,该服务接受RKSV有效载荷,然后为您提供正确加密和签名的响应。无需担心,签名收据更简单。因此,要使此包正常工作,您需要以下内容
- PHP
- PrimeSign远程签名SaaS服务用于RKSV(例如:我们采用了这个服务)
工作原理
首先,您必须创建一个包含用于签名的数据的收据
$receiptData = ReceiptData::withData( $receipt->cashBoxId->id, // Cash register ID $receipt->cashBoxId->daily_income, // Daily register income sum $receipt->number, // Receipt number \DateTime::createFromFormat('Y-m-d H:i:s', $receipt->created_at), [ [ 'brutto' => 123, 'tax' => 20 ], [ 'brutto' => 224, 'tax' => 20 ] ], $receipt->previous_receipt->signature );
使用创建的ReceiptData
,将其传递给ReceiptSigner
和其他PrimeSign参数,并调用所需的签名方法
$primeSignBaseCertificateURL = 'Insert Prime Sign base certificate URL'; $primeSignReceiptSignURL = 'Insert Prime Sign receipt sign URL'; $primeSignTokenKey = 'Insert Prime Sign token key'; $encryptionKey = 'Insert Prime Sign encryption key'; $primeSignCertificateNumber = 'Insert Prime Sign certificate number'; $taxRates = ['20', '10', '13', '0', 'special']; $locationId = 'Insert location ID'; $receiptSigner = new ReceiptSigner( $primeSignBaseCertificateURL, $primeSignReceiptSignURL, $primeSignTokenKey, $primeSignCertificateNumber, $encryptionKey, $taxRates, $locationId, $receiptData ); if ($this->gross > 0) { $receiptSigner->normalSign(); }
获取签名结果
$signature = $receiptSigner->getSignature(); $QR = $receiptSigner->getQR();
除了正常的签名者外,您还可以调用
- 取消收据签名
$receiptSigner->cancelSign();
- 培训收据签名
$receiptSigner->trainingSign();
空签名将使用cashBoxId
生成链值。这是您初始化收据序列时创建的第一个收据。该包将接受项目,但会忽略它们并用零值覆盖。
$receiptSigner->nullSign();
贡献
如果您发现任何错误,请创建一个新的问题,这样我们就可以讨论并尽快修复它。
请记住,这是一个开源项目,任何人都可以通过打开拉取请求来贡献,因此请随意修复错误,以便它们能够更快地合并。如果您想添加功能,请创建一个新问题,然后我们可以进一步讨论。如果没有打开新问题,我们将忽略任何新的功能拉取请求。
在新的功能中,请描述您在拉取请求中做出的更改,并将链接放到与您的拉取请求相关的开放问题中。
许可
该项目在GNU v3.0公共许可证下开源。
TODO 和一般
- 实现适当的单元测试,应涵盖散列、加密、二维码生成和其他主要影响主题
- 实现整个过程的单元测试 - 正常签名、培训签名和取消签名 + 所有这些的链式操作
- 实现一个命令,可以生成也可以使用的空收据
- 代码和RKSV过程的文档
- 完全移除签名服务工厂,并在SignService类中实现所有逻辑。
- 审查所有异常,并通过单元测试正确测试它们
- 审查所有验证器,并查看需要哪些和可以添加哪些
- 扩展有关如何将其纳入其他项目的信息(如果需要,进行讨论)
更新此包的工作方式如下
- 提交
- 推送到master
- 创建标签
- 推送标签
- 触发webhook将标签发送到PHP包仓库
- 将标签转换为发布 - 示例github操作在其他仓库中
使用此包的其他仓库需要更新其包条目以使用最新版本。
关于我们
Gamebay是一个管理游戏竞技场、提供运行游戏全面支持和提供收银解决方案的综合性软件平台。
我们是与Friendly Fire 电子竞技馆的合作伙伴。