定制 datomatic/carta-del-docente 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

datomatic/carta-del-docente

Composer 安装命令:

composer require datomatic/carta-del-docente

包简介

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

README 文档

README

Enum Helper-DarkEnum Helper-Light

CARTA del DOCENTE

Latest Version on Packagist GitHub Code Style Action Status Total Downloads

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.

Requisiti

  • PHP >= 8.0
  • ext-soap

Installazione

Puoi installare il pacchetto via composer:

composer require datomatic/carta-del-docente

Configurazione

Per 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.

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

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

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

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

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

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 e successivamente ricordatevi di attivarlo con questo metodo.

Testing

composer test

Changelog

Please see CHANGELOG for more information on what has changed recently.

Contributing

Please see CONTRIBUTING for details.

Security Vulnerabilities

Please review our security policy on how to report security vulnerabilities.

Credits

License

The MIT License (MIT). Please see License File for more information.

datomatic/carta-del-docente 适用场景与选型建议

datomatic/carta-del-docente 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 3.19k 次下载、GitHub Stars 达 6, 最近一次更新时间为 2022 年 10 月 21 日, 在 PHP 生态内属于活跃度较高的组件。

它主要适用于以下技术方向: 「Datomatic」 「carta-del-docente」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。

我们在过去多个企业项目中使用过 datomatic/carta-del-docente 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 datomatic/carta-del-docente 我们能提供哪些服务?
定制开发 / 二次开发

基于 datomatic/carta-del-docente 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 3.19k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 7
  • 点击次数: 10
  • 依赖项目数: 1
  • 推荐数: 0

GitHub 信息

  • Stars: 6
  • Watchers: 1
  • Forks: 1
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2022-10-21