Het Peppol bestand (directory) kan geraadpleegd worden via code om de registratie van een deelnemer, geaccepteerde documenten, contactgegevens, enz. te controleren. De onderstaande code gebruikt de Rest API webservice van het Peppol bestand. De inhoud die door deze webservice wordt geretourneerd of de kwaliteit van de gegevens in deze inhoud vallen buiten de ondersteuning van Mercator. De code bevat een synchrone en een asynchrone methode.
Merk op dat we hier de directory raadplegen en niet de Peppol adresseringsgegevens. Ter herinnering: in Mercator kun je door met de rechtermuisknop op het BTW-nummer te klikken controleren of het aanwezig is op het Peppol-netwerk: in tegenstelling tot de hier gepresenteerde code raadpleegt deze functie de adresgegevens, die relevanter zijn dan de gegevens in het gegevensbestand. De gegevens in het bestand zijn alleen correct voor zover de door Peppol goedgekeurde providers ze bijwerken wanneer nieuwe abonnees zich bij hun netwerk aansluiten of wanneer de gegevens worden gewijzigd.
💡 Het antwoord op de vraag: "Is het mogelijk om via code de aanwezigheid van een klant op Peppol te controleren?" is dus JA. Met deze code en met kennis van de hierboven vermelde beperkingen.
⏱️ Deze webservice staat maximaal 2 query's per seconde toe.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net;
using MercatorExtensions;
// <CompileWithRoslyn />
namespace TestTunnel
{
public static class Class1
{
public static MercatorPeppol.DirectoryParticipantResponse ParticipantInfo(string peppolId, out string error)
{
if (!peppolId.Contains(":"))
{
error = "Invalid peppolId!";
return null;
}
string url = "https://directory.peppol.eu/search/1.0/json?participant=iso6523-actorid-upis::" + peppolId;
#if (MERCATOR_CORE)
MercatorHttpClient.HttpClient client = MercatorHttpClient.HttpClient.Create(url);
#else
HttpWebRequest client = (HttpWebRequest)WebRequest.Create(url);
#endif
client.Timeout = 2000;
return client.GetData<MercatorPeppol.DirectoryParticipantResponse>(out error);
}
public async static Task<(MercatorPeppol.DirectoryParticipantResponse participantResponse, string error)> ParticipantInfoAsync(string peppolId)
{
if (!peppolId.Contains(":"))
return (null, "Invalid peppolId!");
string url = "https://directory.peppol.eu/search/1.0/json?participant=iso6523-actorid-upis::" + peppolId;
#if (MERCATOR_CORE)
MercatorHttpClient.HttpClient client = MercatorHttpClient.HttpClient.Create(url);
#else
HttpWebRequest client = (HttpWebRequest)WebRequest.Create(url);
#endif
client.Timeout = 2000;
return await client.GetDataAsync<MercatorPeppol.DirectoryParticipantResponse>();
}
}
}
De synchrone code kan aangeroepen worden met deze code:
ParticipantResponse participantInfo = Class1.ParticipantInfo("9925:be0411223337", out string error);
De asynchrone code kan aangeroepen worden met deze code:
(ParticipantResponse participantInfo, string error) = await Class1.ParticipantInfoAsync("9925:be0411223337");