.NET-SDK

Installeer en gebruik EConnect.Psb: NuGet-package, dependency injection, API-interfaces en webhook-validatie voor ASP.NET Core.

De .NET-SDK (econnect-psb-dotnet) is de officiële C#-client voor de PSB REST API. Het NuGet-package EConnect.Psb biedt typed interfaces voor alle API-groepen en ondersteunt dependency injection in ASP.NET Core.

Repositorygithub.com/theinvoicingcompany/econnect-psb-dotnetNuGetEConnect.PsbWebhook-validatieEConnect.Psb.AspNetCore.Mvc
Vereisten
  • .NET Core 2.0 of hoger, of .NET Framework 4.6.1+
Installatie

Via de .NET CLI:

dotnet add package EConnect.Psb

Via Package Manager Console:

Install-Package EConnect.Psb

Voor webhook-validatie in ASP.NET Core MVC:

dotnet add package EConnect.Psb.AspNetCore.Mvc
Configuratie met dependency injection

De aanbevolen setup gebruikt AddPsbService in je Program.cs of Startup.cs:

builder.Services.AddPsbService(options =>
{
    options.Username = "jouw-username";           // bij Resource Owner-flow
    options.Password = "jouw-password";           // bij Resource Owner-flow
    options.PsbUrl = "https://accp-psb.econnect.eu";
    options.IdentityUrl = "https://accp-identity.econnect.eu";
    options.ClientId = "jouw-client-id";
    options.ClientSecret = "jouw-client-secret";
    options.SubscriptionKey = "jouw-subscription-key"; // optioneel, legacy
});
OmgevingPsbUrlIdentityUrlAcceptatiehttps://accp-psb.econnect.euhttps://accp-identity.econnect.euProductiehttps://psb.econnect.euhttps://identity.econnect.eu

Welke OAuth2-flow je gebruikt, bepaalt welke velden je invult. Zie Authenticatie voor Client Credentials versus Resource Owner Password Credentials.

Beschikbare API-interfaces

Na registratie kun je de volgende interfaces injecteren:

InterfaceGebruikIPsbMeApiAccount- en tenantgegevensIPsbSalesInvoiceApiVerkoopfacturen versturenIPsbPurchaseInvoiceApiInkoopfacturen ophalenIPsbSalesOrderApi / IPsbPurchaseOrderApiOrdersIPsbHookApiWebhooks beherenIPsbPeppolApiPeppol-registratie en lookupIPsbGenericApiOverige endpoints

Voorbeeld in een controller:

public class InvoiceController
{
    private readonly IPsbSalesInvoiceApi _salesInvoice;

    public InvoiceController(IPsbSalesInvoiceApi salesInvoice)
    {
        _salesInvoice = salesInvoice;
    }
}

Alle interfaces zijn publiek en daarmee mockbaar in unit tests.

Eerste factuur versturen

In de repository staat een werkend voorbeeld in EConnect.Psb.Web.Example:

Het patroon volgt het SalesInvoice-endpoint: upload een XML-document, de PSB valideert en routeert automatisch.

PsbServiceHost (zonder DI-framework)

Als dependency injection niet beschikbaar is, gebruik je PsbServiceHost:

using var psb = PsbServiceHost.Create(options =>
{
    options.Username = "jouw-username";
    options.Password = "jouw-password";
    options.PsbUrl = "https://accp-psb.econnect.eu";
    options.IdentityUrl = "https://accp-identity.econnect.eu";
    options.ClientId = "jouw-client-id";
    options.ClientSecret = "jouw-client-secret";
    options.SubscriptionKey = "jouw-subscription-key";
});

var result = await psb.SalesInvoice
    .QueryRecipientParty("{senderPartyId}", new[] { "{receiverPartyId}" })
    .ConfigureAwait(false);

Console.WriteLine(result);

Een console-voorbeeld staat in EConnect.Psb.ConsoleNet.Example.

Webhooks valideren

PSB-webhooks zijn beveiligd met de X-EConnect-Signature-header. Het package EConnect.Psb.AspNetCore.Mvc valideert die handtekening via een attribuut op je controller-methode.

Hardcoded secret:

[PsbWebhook("mijnGeheim")]
public IActionResult Webhook([PsbWebhookValidSentOn] PsbWebHookEvent @event)
{
    // verwerk webhook-event
    return Ok();
}

Secret uit configuratie:

[PsbWebhookOptions("webhook")]
public IActionResult Webhook([PsbWebhookValidSentOn] PsbWebHookEvent @event)
{
    return Ok();
}

Meer over webhook-configuratie: Webhooks instellen.

Foutafhandeling

De SDK gooit exceptions bij HTTP-fouten. Implementeer in productie:

  • 401 — token verlopen; de service herauthenticeert doorgaans automatisch bij de volgende call
  • 400 — validatiefout; log de response body en corrigeer het brondocument
  • 409 — idempotency-conflict; document is al verwerkt
  • 5xx — retry met exponential backoff; de PSB retried zelf ook bij afleveringsfouten
Veelgestelde vragen
Kan ik NSwag gebruiken in plaats van EConnect.Psb?

Ja. NSwag kan clientcode genereren uit de swagger.json van psb.econnect.eu. EConnect.Psb biedt daarnaast kant-en-klare DI-registratie, tokenmanagement en webhook-validatie. Zie ook OpenAPI codegen.

Welke .NET-versies worden ondersteund?

Het package target .NET Standard 2.0. Dat dekt .NET Core 2.0+, .NET 5+ en .NET Framework 4.6.1+. Controleer de NuGet-pagina voor actuele versie-informatie.