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.
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
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
});
PsbUrlIdentityUrlhttps://accp-psb.econnect.euhttps://accp-identity.econnect.euhttps://psb.econnect.euhttps://identity.econnect.euWelke OAuth2-flow je gebruikt, bepaalt welke velden je invult. Zie Authenticatie voor Client Credentials versus Resource Owner Password Credentials.
Na registratie kun je de volgende interfaces injecteren:
IPsbMeApiIPsbSalesInvoiceApiIPsbPurchaseInvoiceApiIPsbSalesOrderApi / IPsbPurchaseOrderApiIPsbHookApiIPsbPeppolApiIPsbGenericApiVoorbeeld 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.
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.
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.
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.
De SDK gooit exceptions bij HTTP-fouten. Implementeer in productie:
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.
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.