taocomp / php-sdicoop-client
一个用于连接意大利交换系统(也称SdI)Web服务的PHP包
Requires
- php: >=5.5
Requires (Dev)
- phpunit/phpunit: ^7
README
一个用于连接意大利交换系统(又称“SdI”)Web服务的PHP包。
(用于向SdI Web服务发送发票和通知的PHP包)。
请参考
- PHP SdICoop - Server以实现SdI所需的Web服务
- PHP E-invoice It用于管理意大利电子发票和通知XML格式
查看论坛意大利 - 电子发票以获取服务器配置、互操作性测试等。特别是
- Apache配置
- SDICoop认证:Apache上的SSL配置 - 电子发票...
- 互操作性测试
- 互操作性解决方案测试 - 电子发票 - 论坛意大利
入门
依赖项
- PHP >=5.5
php-curl
php-soap
安装
Composer
composer require taocomp/php-sdicoop-client
手动
- 克隆/下载存储库
require_once('/path/to/php-sdicoop-client/vendor/autoload.php');
命名空间
请注意命名空间已更改(v0.1.5),现在是Taocomp\Einvoicing\SdicoopClient
。
例如,要使用Client
类
use \Taocomp\Einvoicing\SdicoopClient\Client;
设置
根据意大利交换系统(也称SdI),您需要
- 客户端密钥
- 客户端证书
- CA证书
向SdI Web服务发送发票和通知。
此外,您必须提供要连接的端点和每个Web服务的对应WSDL。
您可以如下配置密钥和证书
Client::setPrivateKey('/path/to/client.key'); Client::setClientCert('/path/to/client.pem'); Client::setCaCert('/path/to/ca.pem');
您也可以根据需要配置代理
Client::setProxyUrl('proxy_url'); Client::setProxyAuth('username:password');
然后您可以通过提供端点/WSDL来实例化客户端。
Web服务SdIRiceviFile
(测试)用于发送发票
$client = new Client(array( 'endpoint' => 'https://testservizi.fatturapa.it/ricevi_file', 'wsdl' => '/path/to/php-sdicoop-client/assets/wsdl/SdIRiceviFile_v1.0.wsdl' ));
Web服务SdIRiceviNotifica
(测试)用于发送通知
$client = new Client(array( 'endpoint' => 'https://testservizi.fatturapa.it/ricevi_notifica', 'wsdl' => '/path/to/php-sdicoop-client/assets/wsdl/SdIRiceviNotifica_v1.0.wsdl' ));
或者您可以将所有参数(密钥、证书、wsdl、端点)传递给客户端构造函数
$client = new Client(array( 'key' => '/path/to/client.key', 'cert' => '/path/to/client.pem', 'ca_cert' => '/path/to/ca.pem', 'endpoint' => 'https://testservizi.fatturapa.it/ricevi_file', 'wsdl' => '/path/to/php-sdicoop-client/assets/wsdl/SdIRiceviFile_v1.0.wsdl' ));
向SdI发送发票(Web服务“SdIRiceviFile”)
$fileSdI = new FileSdIBase(); $fileSdI->load('/path/to/invoice.xml'); $response = new RispostaSdIRiceviFile($client->RiceviFile($fileSdI)); // Process response: // ----------------------------------------- // $id = $response->IdentificativoSdI; // $datetime = $response->DataOraRicezione; // $error = $response->Errore; // -----------------------------------------
请参见examples/invoice.php
以获取一个工作示例。
您还可以发送\Taocomp\Einvoicing\FatturaElettronica
对象:请参阅https://github.com/taocomp/php-e-invoice-it。
向SdI发送通知(Web服务“SdIRiceviNotifica”,端点测试)
$fileSdI = new FileSdI(); $fileSdI->load('/path/to/notice.xml'); $response = new RispostaSdINotificaEsito($client->NotificaEsito($fileSdI)); // Process response: // ---------------------------------- // $result = $response->Esito; // $discard = $response->ScartoEsito; // $discardFilename = $discard->NomeFile; // $discardFile = $discard->File; // ----------------------------------
请参见examples/notice.php
以获取一个工作示例。
您还可以发送\Taocomp\Einvoicing\EsitoCommittente
对象:请参阅https://github.com/taocomp/php-e-invoice-it。
鸣谢
我们想感谢论坛意大利 - 电子发票的所有贡献者,他们分享了他们的代码片段和任何可用的信息。
感谢Luca Cristofalo在他旧的PHP 5.5.38上测试代码。:-)
许可证
GPLv3。