Il pacchetto non ufficiale per integrare facilmente la Carta del Docente in un progetto PHP.
Se utilizzate il framework Laravel ho creato anche un pacchetto ad hoc datomatic/laravel-carta-del-docente.
- PHP >= 8.0
- ext-soap
Puoi installare il pacchetto via composer:
composer require datomatic/carta-del-docentePer poter utilizzare il pacchetto bisogna leggere la documentazione ufficiale che spiega tutto il processo della Carta del Docente.
Per la parte di test è già tutto pronto senza dover generare nessun certificato (l'ho già fatto io per voi); basta solo richiedere dei voucher di test tramite email a docenti@sogei.it.
Attenzione: Per la parte di produzione, invece, va generato un certificato seguendo la guida.
Per prima cosa bisogna inizializzare il client con i dati relativi al certificato e la password del certificato.
Per l'ambiente di test il certificato e la password sono già inclusi nel pacchetto (essendo uguali per tutti).
//Test
$testClient = new Datomatic\CartaDelDocente\CartaDelDocenteClient();Per l'ambiente di produzione è necessario fornire il path al certificato (possibilmente non mettetelo accessibile esternamente) e la relativa password.
//Produzione
$client = new Datomatic\CartaDelDocente\CartaDelDocenteClient('../path/certificate.pem', 'passwordCertificato');Una volta ottenuto il client è possibile utilizzare le poche funzionalità necessarie.
Questa operazione va fatta solo una volta all'inizio ed è disponibile solo per la produzione in quanto in ambiente di test non è necessaria.
$client->merchantActivation();La funzione ritorna un oggetto CartaDelDocenteResponse oppure una eccezione RequestException in caso di errore.
Se tutto è andato a buon fine verrà ritornato il seguente oggetto:
Datomatic\CartaDelDocente\CartaDelDocenteResponse {
+name: "Attivazione effettuata"
+vatId: "12345678901" // p.IVA esercente attivato
+scope: "-"
+good: "-"
+amount: 0
}Per effettuare il Check del voucher basta chiamare la funzione check passando il tipo di operazione (1,2,3) e il codice del voucher.
$result = $client->check(1, 'voucher');La funzione ritorna un oggetto CartaDelDocenteResponse in caso di esito positivo oppure una eccezione RequestException in caso di errore.
L'oggetto CartaDelDocenteResponse è composto dalle seguenti proprietà:
$result->name // CF o nominativo del beneficiario
$result->vatId // partita IVA esercente
$result->scope // l'ambito del voucher (cinema, teatro, libreria,...)
$result->good // il tipo di bene (libri, spettacoli,...)
$result->amount // importo totale del buonoPer effettuare il Confirm del voucher basta chiamare la funzione confirm passando il tipo di operazione (1), il codice del voucher e l'importo da confermare.
$result = $client->confirm(1, 'Codice Voucher', 52.50);Per generare correttamente un certificato è necessario eseguire delle operazioni da terminale Linux / Mac OS oppure WSL di Windows.
NB:Se ottenete un errore di comando non valido potrebbe essere necessario scrivere a mano il comando intero invece che fare copia incolla.
Per prima cosa dobbiamo andare a creare la richiesta di certificato da usare sul sito cartadeldocente.
Per fare questo prima creiamo il file req.cer da caricare nel sito:
openssl req -newkey rsa:2048 -keyout key.der -out req.der -outform DERUna volta premuto invio dovremmo per prima cosa inserire una password (PEM pass) due volte, e Poi andare a compilare i seguenti campi:
- Country Name (2 letter code) [AU]: // la nazione in due cifre es: IT
- State or Province Name (full name) [Some-State]: // la provincia es: Vicenza
- Locality Name (eg, city) []: // la città es: Valdagno
- Organization Name (eg, company) [Internet Widgits Pty Ltd]: // l'organizzazione es: Acme srl
- Organizational Unit Name (eg, section) []: // sezione dell'organizzazione es: Shop
- Common Name (e.g. server FQDN or YOUR name) []: // nome del richiedente es: Mario Rossi
- Email Address []: // indirizzo email
- A challenge password []: // una nuova password che per comodità metteremo uguale a quella già inserita
Ottenuto il file req.der lo possiamo caricare sul sito cartadeldocente nella form di richiesta certificato ed dopo qualche secondo/minuto possiamo scaricare il file [PIVA-azienda].cer sempre dal sito online (comparirà un pulsante con scritto qualcosa tipo 'scarica certificato' dove prima c'era il pulsante per richiedere il certificato).
Questo certificato lo mettiamo nella stessa cartella dove abbiamo gli altri file sopra creati.
Andiamo a convertire il certificato .cer in un file .pem (i files per comodità li chiamo XXXXX ma voi avrete il numero della partita iva aziendale).
openssl x509 -inform DER -in XXXXX.cer -out XXXXX.pemPoi lo convertiamo in un file .p12 combinandolo con la chiave generata nel primo passaggio:
openssl pkcs12 -export -inkey key.der -in XXXXX.pem -out XXXXX.p12Infine convertiamo il certificato .p12 nel certificato result.pem finale da usare in produzione
openssl pkcs12 -in XXXXX.p12 -out result.pem -clcertsQuindi per usare il pacchetto in produzione bisognerà mettere il path al file result.pem.
N.B.: ricordatevi che il certificato ha valenza 3 anni e quindi andrà rigenerato ogni 3 anni
Quando ricevete l'errore Could not connect to host ci sono due possibilità o è offline il servizio di Sogei oppure avete il certificato scaduto.
Per vedere la scadenza del certificato eseguite il seguente comando:
openssl x509 -enddate -noout -in result.pemPer rigenerarlo seguite la procedura qui per creare un nuovo certificato e successivamente ricordatevi di attivarlo con questo metodo.
composer testPlease see CHANGELOG for more information on what has changed recently.
Please see CONTRIBUTING for details.
Please review our security policy on how to report security vulnerabilities.
The MIT License (MIT). Please see License File for more information.

