PHPackages                             datomatic/carta-del-docente - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. datomatic/carta-del-docente

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

datomatic/carta-del-docente
===========================

Un pacchetto per poter integrare la Carta del Docente in un progetto PHP

v1.3.0(3mo ago)73.0k↓50%1[1 PRs](https://github.com/datomatic/carta-del-docente/pulls)1MITPHPPHP ^8.0CI passing

Since Oct 21Pushed 3mo ago1 watchersCompare

[ Source](https://github.com/datomatic/carta-del-docente)[ Packagist](https://packagist.org/packages/datomatic/carta-del-docente)[ Docs](https://github.com/datomatic/carta-del-docente)[ GitHub Sponsors](https://github.com/datomatic)[ RSS](/packages/datomatic-carta-del-docente/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (7)Dependencies (2)Versions (10)Used By (1)

[![Enum Helper-Dark](branding/dark.png#gh-dark-mode-only)](branding/dark.png#gh-dark-mode-only)[![Enum Helper-Light](branding/light.png#gh-light-mode-only)](branding/light.png#gh-light-mode-only)

CARTA del DOCENTE
=================

[](#carta-del-docente)

[![Latest Version on Packagist](https://camo.githubusercontent.com/8dea5fd0109fc186363bfb73b29952a54f25c697c24d14453d93f1c243d39131/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f6461746f6d617469632f63617274612d64656c2d646f63656e74652e7376673f7374796c653d666f722d7468652d6261646765)](https://packagist.org/packages/datomatic/carta-del-docente)[![GitHub Code Style Action Status](https://camo.githubusercontent.com/61f860c45dbe63f9ded8257bb4376e17dd8e3d85340d42a6a5fc6e7316462681/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f616374696f6e732f776f726b666c6f772f7374617475732f6461746f6d617469632f63617274612d64656c2d646f63656e74652f7068702d63732d66697865722e796d6c3f6c6162656c3d636f64652532307374796c6526636f6c6f723d354645384233267374796c653d666f722d7468652d6261646765)](https://github.com/datomatic/carta-del-docente/actions/workflows/php-cs-fixer.yml)[![Total Downloads](https://camo.githubusercontent.com/647e12fe92aac5e8bd6e86b878d5cc294dd94c671b065c39e856c6d4e4e3068f/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f6461746f6d617469632f63617274612d64656c2d646f63656e74652e7376673f7374796c653d666f722d7468652d6261646765)](https://packagist.org/packages/datomatic/carta-del-docente)

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](https://github.com/datomatic/laravel-carta-del-docente).

Requisiti
---------

[](#requisiti)

- PHP &gt;= 8.0
- ext-soap

Installazione
-------------

[](#installazione)

Puoi installare il pacchetto via composer:

```
composer require datomatic/carta-del-docente
```

Configurazione
--------------

[](#configurazione)

Per poter utilizzare il pacchetto bisogna leggere la [documentazione ufficiale](https://test-carta-docente.readthedocs.io/it/latest/linee-guida-esercenti.html) 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 .

Attenzione: Per la parte di produzione, invece, va generato un certificato seguendo la [guida](#come-generare-un-certificato-valido).

Utilizzo
--------

[](#utilizzo)

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.

### Attivazione esercente

[](#attivazione-esercente)

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
}
```

### Check

[](#check)

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 buono
```

### Confirm

[](#confirm)

Per 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);
```

Come generare un certificato valido
-----------------------------------

[](#come-generare-un-certificato-valido)

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](https://www.cartadeldocente.istruzione.it/docentiEsercente/#/login).

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 DER
```

Una 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](https://www.cartadeldocente.istruzione.it/CommercianteWeb/#/login) 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.pem
```

Poi 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.p12
```

Infine convertiamo il certificato .p12 nel certificato `result.pem` finale da usare in produzione

```
openssl pkcs12 -in XXXXX.p12 -out result.pem -clcerts
```

Quindi 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

### Cosa fare in caso di scadenza certificato

[](#cosa-fare-in-caso-di-scadenza-certificato)

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.pem
```

Per rigenerarlo seguite la procedura qui per [creare un nuovo certificato](#come-generare-un-certificato-valido) e successivamente ricordatevi di attivarlo con [questo metodo](#attivazione-esercente).

Testing
-------

[](#testing)

```
composer test
```

Changelog
---------

[](#changelog)

Please see [CHANGELOG](CHANGELOG.md) for more information on what has changed recently.

Contributing
------------

[](#contributing)

Please see [CONTRIBUTING](https://github.com/spatie/.github/blob/main/CONTRIBUTING.md) for details.

Security Vulnerabilities
------------------------

[](#security-vulnerabilities)

Please review [our security policy](../../security/policy) on how to report security vulnerabilities.

Credits
-------

[](#credits)

- [Alberto Peripolli](https://github.com/trippo)
- [All Contributors](../../contributors)

License
-------

[](#license)

The MIT License (MIT). Please see [License File](LICENSE.md) for more information.

###  Health Score

48

—

FairBetter than 95% of packages

Maintenance82

Actively maintained with recent releases

Popularity27

Limited adoption so far

Community15

Small or concentrated contributor base

Maturity57

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 72.9% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~202 days

Recently: every ~303 days

Total

7

Last Release

90d ago

PHP version history (2 changes)v1.0.0PHP ^8.1

v1.0.1PHP ^8.0

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/497169?v=4)[Alberto Peripolli](/maintainers/trippo)[@trippo](https://github.com/trippo)

---

Top Contributors

[![trippo](https://avatars.githubusercontent.com/u/497169?v=4)](https://github.com/trippo "trippo (51 commits)")[![dependabot[bot]](https://avatars.githubusercontent.com/in/29110?v=4)](https://github.com/dependabot[bot] "dependabot[bot] (12 commits)")[![github-actions[bot]](https://avatars.githubusercontent.com/in/15368?v=4)](https://github.com/github-actions[bot] "github-actions[bot] (7 commits)")

---

Tags

Datomaticcarta-del-docente

###  Code Quality

TestsPest

Code StylePHP CS Fixer

### Embed Badge

![Health badge](/badges/datomatic-carta-del-docente/health.svg)

```
[![Health](https://phpackages.com/badges/datomatic-carta-del-docente/health.svg)](https://phpackages.com/packages/datomatic-carta-del-docente)
```

###  Alternatives

[jildertmiedema/laravel-tactician

Tactician for laravel 8+

105.0k](/packages/jildertmiedema-laravel-tactician)[datatables.net/datatables.net-bs

DataTables is a plug-in for the jQuery Javascript library. It is a highly flexible tool, based upon the foundations of progressive enhancement, which will add advanced interaction controls to any HTML table. This is DataTables with styling for \[Bootstrap\](https://getbootstrap.com/docs/3.3/)

161.4k14](/packages/datatablesnet-datatablesnet-bs)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
