A PHP package for connecting to Italian Exchange System (aka “SdI”) web services.
(Pacchetto PHP per inviare fatture e notifiche ai webservices del SdI).
Please refer to
- PHP SdICoop - Server to implement your web services required by SdI
- PHP E-invoice It for managing italian e-invoice and notice XML formats
See Forum Italia - Fatturazione Elettronica for server configuration, interoperability tests, etc. In particular:
- Apache configuration
- Accreditamento SDICoop: configurazione SSL su Apache - Fatturazione Elettroni…
- Interoperability tests
- Test Interoperabilità Soluzioni - Fatturazione Elettronica - Forum Italia
- PHP >=5.5
php-curl
php-soap
composer require taocomp/php-sdicoop-client
- Clone/download the repository
require_once('/path/to/php-sdicoop-client/vendor/autoload.php');
Please note namespace is changed (v0.1.5), it is now Taocomp\Einvoicing\SdicoopClient
.
So to use e.g. Client
class:
use \Taocomp\Einvoicing\SdicoopClient\Client;
According to Italian Exchange System (aka SdI), you need:
- a client key
- a client certificate
- a CA certificate
to send invoices and notices to SdI web services.
Additionally you must provide an endpoint to connect to and the correspondent WSDL for each web service.
You can configure key and certs as follow:
Client::setPrivateKey('/path/to/client.key'); Client::setClientCert('/path/to/client.pem'); Client::setCaCert('/path/to/ca.pem');
You can also configure a proxy if needed:
Client::setProxyUrl('proxy_url'); Client::setProxyAuth('username:password');
And then you can instantiate the client by providing endpoint/WSDL.
Web service SdIRiceviFile
(test) for sending invoices:
$client = new Client(array( 'endpoint' => 'https://testservizi.fatturapa.it/ricevi_file', 'wsdl' => '/path/to/php-sdicoop-client/assets/wsdl/SdIRiceviFile_v1.0.wsdl' ));
Web service SdIRiceviNotifica
(test) for sending notices:
$client = new Client(array( 'endpoint' => 'https://testservizi.fatturapa.it/ricevi_notifica', 'wsdl' => '/path/to/php-sdicoop-client/assets/wsdl/SdIRiceviNotifica_v1.0.wsdl' ));
Or you can pass all parameters (key, certs, wsdl, endpoint) to client constructor:
$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' ));
$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; // -----------------------------------------
See examples/invoice.php
for a working example.
You can also send \Taocomp\Einvoicing\FatturaElettronica
objects: see https://github.com/taocomp/php-e-invoice-it.
$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; // ----------------------------------
See examples/notice.php
for a working example.
You can also send \Taocomp\Einvoicing\EsitoCommittente
objects: see https://github.com/taocomp/php-e-invoice-it.
We want to thank all contributors of Forum Italia - Fatturazione Elettronica who have shared their snippets and any available info.
Thanks to Luca Cristofalo for testing the code on his old PHP 5.5.38. :-)
GPLv3.