DEV Community

Nicola Iarocci
Nicola Iarocci

Posted on • Originally published at invoicetronic.com

Come inviare fatture a SDI FatturaPA in C#

In questo tutorial creiamo una semplice applicazione C# per spedire fatture a SDI FatturaPA. L'app si connette e autentica con Invoicetronic API, quindi invia le fatture ai loro destinatari.

Prerequisiti

Presupponiamo che questi prerequisiti siano soddisfatti:

Utilizziamo lo strumento dotnet e VS Code in quanto sono disponibili sulla maggior parte dei sistemi, ma puoi seguire con il tuo IDE preferito (Visual Studio, Rider, ecc.) se preferisci.

Per un'esperienza C# ottimale in VS Code, assicurati che l'estensione C# Dev Kit sia installata e abilitata. Per ulteriori informazioni, consulta Iniziare con C# in VS Code.

Crea l'app

Il primo passo è creare l'applicazione:

dotnet new console -n send
Enter fullscreen mode Exit fullscreen mode

Il comando ha creato un nuovo progetto C# chiamato "quickstart" in una directory con lo stesso nome. Entra in quella directory:

cd send
Enter fullscreen mode Exit fullscreen mode

Installa l'SDK

Una volta nella directory quickstart, installa l'SDK C#:

 dotnet add package Invoicetronic.Sdk
Enter fullscreen mode Exit fullscreen mode

Una volta fatto, apri VS Code nella directory corrente:

code .
Enter fullscreen mode Exit fullscreen mode

Clicca sul file Program.cs per vedere il suo contenuto nel pannello destro di VS Code.

Configura l'SDK

Sostituisci il contenuto predefinito di Program.cs con il seguente:

using Invoicetronic.Sdk.Api;
using Invoicetronic.Sdk.Client;
using Invoicetronic.Sdk.Model;

// Configura l'SDK.
var config = new Configuration
{
    BasePath = "https://api.invoicetronic.com/v1",
    Username = "LA TUA CHIAVE API DI TEST (inizia con ik_test_)"
};
Enter fullscreen mode Exit fullscreen mode

Come puoi vedere, inizializziamo un'istanza di Configuration impostando il percorso base dell'API e la tua chiave API di test (non quella live). Nota come utilizziamo la proprietà Username per impostare la chiave API.

Quando crei il tuo account, ottieni una coppia di chiavi API. Una è la chiave di test per la Sandbox API, e l'altra è quella live dell'API. Puoi distinguerle perché la prima inizia con ik_test_, mentre la seconda inizia con ik_live_. In questo tutorial, usa sempre la chiave di test.

Invia una fattura

Siamo pronti per effettuare una richiesta. Vogliamo inviare una fattura allo SDI. Aggiungi il seguente codice:


// Invia una fattura
var filePath = "/qualche/percorso/file/nomefile.xml";

var metaData = new Dictionary<string, string>
{
    { "internal_id", "123" },
    { "created_with", "myapp" },
    { "some_other_custom_data", "value" },
};

var sendApi = new SendApi(config);

try
{
    var sentInvoice = await sendApi.SendPostAsync(new Send()
    {
        FileName = Path.GetFileName(filePath),
        Payload = File.ReadAllText(filePath),
        MetaData = metaData
    });

    Console.WriteLine($"La fattura è stata inviata con successo, ora ha l'Id univoco {sentInvoice.Id}.");
}
catch (ApiException e)
{
    Console.WriteLine($"{e.Message} - {e.ErrorCode}");
}
Enter fullscreen mode Exit fullscreen mode

Passa al terminale poi digita:

dotnet run
Enter fullscreen mode Exit fullscreen mode

Dovresti ottenere un output simile a questo:

La fattura nomefile.xml è stata inviata con successo, ora ha l'Id univoco 123.
Enter fullscreen mode Exit fullscreen mode

Cosa abbiamo imparato

In questo esempio, abbiamo imparato diverse cose.

  1. Dobbiamo configurare l'SDK impostando sia la proprietà BasePath che Username, quest'ultima inizializzata con la chiave API.

  2. Dobbiamo istanziare una classe che rappresenta l'endpoint con cui vogliamo lavorare. In questo caso, sfruttiamo SendApi per inviare fatture. Le classi endpoint come SendApi offrono metodi per interagire con la loro entità target. Chiamiamo InvoiceV1SendPosttAsync per inviare una fattura.

  3. La classe Send espone proprietà preziose come FileName, MetaData e Payload. Quest'ultima contiene il contenuto della fattura, mentre MetaData è opzionale e associa dati personalizzati al documento.

Top comments (0)