scholtz / eet
PHP 版 EET (电子销售记录) 客户端 API
1.2.5
2017-03-09 09:14 UTC
Requires
- php: >=5.6.0
- ramsey/uuid: ^3
- robrichards/wse-php: *
- robrichards/xmlseclibs: *
This package is auto-updated.
Last update: 2024-08-29 04:31:17 UTC
README
此代码是 EET ("elektronická evidence tržeb") 在 PHP 中的实现。请注意,如果您的计算机连接到互联网,则此库即使在您的本地主机上也能正常工作。
安装
composer require "fritak/eet"
要求
最低要求是您的 Web 服务器上安装 PHP 5.6。以下库和 php 扩展是必需的:
- robrichards/wse-php
- robrichards/xmlseclibs
- ramsey/uuid
- Soap 客户端。请参阅 https://php.ac.cn/manual/en/soap.setup.php
- OpenSSL。请参阅 https://php.ac.cn/manual/en/openssl.setup.php
设置
配置示例
{ "certificate": { "path": "./certificate/01000003.p12", "password": "eet" }, "wsdlPath": "./soapFiles/EETServiceSOAP.wsdl", "defaultValues": { "dic_popl": "CZ1212121218", "id_provoz": "273", "id_pokl": "1" }, "timeout": 10, "connectionTimeout": 3 }
- 将证书(PKCS#12)移动到您的路径。有关如何获取证书的信息,或使用 "/example/certificate" 目录中的证书进行测试(仅限测试)。
- 设置 EET 的 wsdl 文件路径(您还需要包括 XSD 模式)。
注意
- 用于测试的示例文件(EETServiceSOAP.wsdl)来自 http://www.etrzby.cz,XSD 来自 http://www.etrzby.cz
基本用法
use Fritak\eet\Sender; $sender = new Sender(__DIR__ . '/config.json'); // load Sender with configuration $sender->addReceipt(['uuid_zpravy' => 'b3a09b52-7c87-4014-a496-4c7a53cf9125', 'porad_cis' => 68, 'celk_trzba' => 546]); // You can let uuid_zpravy empty, it will be automatically generated $sender->addReceipt(['porad_cis' => 69, 'celk_trzba' => 748]); foreach($sender->sendAllReceipts() AS $response) { $response->Potvrzeni->fik; // Your FIK - Fiscal Identification Code ("Fiskální identifikační kód") }
稍后更改证书或默认值
$sender->changeCertificate($certificate, $password); $sender->changeDefaultValues($dic, $workshopId, $cashRegisterId);
高级用法 - 收据
use Fritak\eet\Sender; use Fritak\eet\Receipt; $sender = new Sender(__DIR__ . '/config.json'); // load Sender with configuration $receipt = new Receipt(); $receipt->uuid_zpravy = 'b3a09b52-7c87-4014-a496-4c7a53cf9125'; // Or empty, it will be automatically generated $receipt->porad_cis = '68'; $receipt->celk_trzba = 546; $receipt->dic_popl = 'CZ1212121218'; $receipt->id_provoz = '273'; $receipt->id_pokl = '1'; $receipt->dat_trzby = new \DateTime(); // Now we try dry run. Returns boolean TRUE/FALSE if ($sender->dryRunSend($receipt)) { // Send receipt $fik = $sender->send($receipt)->Potvrzeni->fik; }
Nette 集成
Nette 框架是一个开源框架,用于使用 PHP 5 和 7 创建 Web 应用程序。您的应用程序中已有基本集成。
将库包含到项目中。将配置文件包含到您的参数.neon 中。
parameters: senderEetParameters: certificate: path: '' password: '' wsdlPath : '' defaultValues: dic_popl: '' id_provoz: '' id_pokl: '' services: senderEet: Fritak\eet\Sender(%senderEetParameters%)
就这样!现在您可以使用它,例如在 presenter 的动作中,如上所述。
$sender = $this->context->getService('senderEet'); $sender->addReceipt(['porad_cis' => 85, 'celk_trzba' => 9875]); foreach($sender->sendAllReceipts() AS $response) { $response->Potvrzeni->fik; }
信息
- eTrzby 信息
- eTrzby - 如何获取证书
- technicka-specifikace 技术规范
- soap
- openssl