Una risposta esaustiva alla tua domanda sarebbe molto lunga. Sarebbe effettivamente molto utile se qualcuno dedicasse del tempo a scrivere una guida su come si implementa un canale di trasmissione per la fatturazione elettronica.
Quello che posso fare io è indirizzarti verso la documentazione ufficiale e segnalarti alcune cose a cui stare attento.
Per prima cosa, è da notare che la documentazione è sparpagliata in tre posti diversi:
Il primo link contiene la documentazione tecnica allegata alla legge che aveva originariamente introdotto la fatturazione elettronica verso la PA.
Il secondo link contiene la documentazione tecnica del Sistema di Interscambio.
Il terzo link contiene la documentazione tecnica allegata alla legge che ha introdotto la fatturazione elettronica B2B.
Da notare che le specifiche tecniche al terzo link integrano, ma non sostituiscono, quelle del primo. Data la notevole sovrapposizione tra i documenti, non capisco perché non li unifichino. Immagino ci siano questioni legali dovute al fatto che si tratta di allegati a leggi diverse.
In particolare i documenti che dovresti leggere sono:
- Specifiche tecniche del formato della FatturaPA versione 1.3.2 (dal primo link)
- Allegato A - Specifiche tecniche vers 1.7.1 (dal terzo link)
- Specifiche tecniche relative al Sistema di Interscambio versione 1.8.2 (dal secondo link)
- Istruzioni per il servizio SDICoop - Trasmissione versione 3.2 (dal secondo o terzo link)
- Istruzioni per il servizio SDICoop - Ricezione versione 3.2 (dal secondo o terzo link)
Gli ultimi due documenti contengono le specifiche dei web service SOAP con cui ti dovrai interfacciare.
Non hai spiegato se devi solo inviare le fatture o anche riceverle, ma anche se ti limiti all’invio, devi comunque poter ricevere le notifiche relative alle fatture inviate, quindi dovrai in ogni caso avere un server che espone dei web service SOAP che verranno richiamati dal SdI.
I web service SOAP (sia client che server) sono relativamente facili da implementare in .NET Framework partendo dai file .wsdl. Nel caso di .NET Core le cose sono più complicate. Il client è fattibile con le stesso classi (ma configurandolo da codice invece che da file .config), mentre implementare un server non è possibile senza librerie esterne. In aggiunta a questo c’è il problema che il SdI usa l’estensione MTOM di SOAP che non è supportata in .NET Core.
Noi abbiamo “risolto” il problema facendo passare il tutto attraverso un proxy implementato in .NET Framework.
Altra cosa a cui stare attenti è la questione dei certificati SSL. Il tuo client che si collega al SdI dovrà autenticarsi con un certificato client che ti firmerà il SdI in fase di accreditamento del canale. Analogamente il tuo server dovrà esporre un certificato server firmato dal SdI. Purtroppo la loro CA non è universalmente riconosciuta, quindi il certificato non sarà ritenuto valido dai browser. Il consiglio quindi è di dedicare un indirizzo IP e un hostname alla comunicazione con il SdI e usare un indirizzo diverso per collegamento da browser/api.
La documentazione (e i siti) spiegano come fare per accreditarsi, ma la versione breve è che dovrai compilare una richiesta (e firmarla digitalmente) indicando gli url degli endpoint SOAP. Da notare che dovrai avere sia gli endpoint di produzione che di test.
Infatti, per poter attivare il canale, dovrai prima superare dei test. Credo che ultimamente li abbiano semplificati, ma mi ricordo che non erano semplicissimi, soprattutto per quanto riguarda la ricezione (perché era necessario gestire anche la fatturazione PA, che per le aziende non serve).
Spero che queste informazioni ti siano utili per partire. Per problemi specifici puoi provare a cercare qui sul forum perché la maggior parte dei problemi è già stata affrontata da qualcuno.