Installeer en gebruik de officiële econnect-psb-php SDK: Composer, authenticatie, factuur versturen en webhook-voorbeelden.
De PHP-SDK (econnect-psb-php) is een referentie-implementatie voor de PSB REST API. De library handelt OAuth-tokenmanagement af en biedt typed API-klassen voor veelgebruikte operaties.
curl, json, mbstringcomposer require everbinding/econnect-psb-php
Laad daarna de Composer-autoloader in je project:
require __DIR__ . '/vendor/autoload.php';
Stel de standaardconfiguratie in met je credentials en de juiste omgeving. Gebruik tijdens ontwikkeling de acceptatie-URLs.
$config = \EConnect\Psb\Configuration::getDefaultConfiguration();
$config
->setUsername('jouw-username') // alleen bij Resource Owner-flow
->setPassword('jouw-password') // alleen bij Resource Owner-flow
->setClientId('jouw-client-id')
->setClientSecret('jouw-client-secret')
->setHost('https://accp-psb.econnect.eu')
->setApiKey('Subscription-Key', 'jouw-subscription-key'); // optioneel, legacy
Voor de Identity Server gebruikt de SDK intern OpenID Connect via jumbojett/openid-connect-php. Welke credentials je nodig hebt, hangt af van de gekozen OAuth2-flow — zie Authenticatie.
setHost)https://accp-psb.econnect.euhttps://accp-identity.econnect.euhttps://psb.econnect.euhttps://identity.econnect.euTip: de
Subscription-Keyis legacy voor de PSB API en niet meer verplicht. Als je hem meestuurt, moet de waarde wel geldig zijn.
Roep na configuratie login() aan om een access token op te halen en te cachen:
$config = \EConnect\Psb\Configuration::getDefaultConfiguration();
$auth = new \EConnect\Psb\Authentication($config);
$auth->login();
De SDK vernieuwt het token automatisch zolang je dezelfde Configuration-instantie gebruikt.
Met SalesInvoiceApi stuur je een UBL-bestand naar de PSB. De {partyId} is de Peppol-identifier van de verzender; de ontvanger is optioneel — de PSB kiest dan de beste route.
$config = \EConnect\Psb\Configuration::getDefaultConfiguration();
$salesInvoiceApi = new \EConnect\Psb\Api\SalesInvoiceApi(
new GuzzleHttp\Client(),
$config
);
$senderPartyId = '0106:12345678';
$filePath = './factuur.xml';
$receiverPartyId = null; // optioneel
$salesInvoiceApi->sendSalesInvoice($senderPartyId, $filePath, $receiverPartyId);
Zorg dat het UBL-document valide is; anders blokkeert de PSB de verzending. Meer over het endpoint en idempotency: Factuur verzenden.
In de repository staan voorbeelden voor het ontvangen van inkomende facturen via webhooks:
ExampleWebhookReceiver.php — webhook-endpointExampleSendInvoice.php — verzenden via PeppolPSB-webhooks zijn beveiligd met een X-EConnect-Signature-header. Zie Webhooks instellen voor configuratie in het platform.
De SDK genereert API-klassen per endpoint-groep uit de OpenAPI-spec. In de repository en op psb.econnect.eu vind je de volledige lijst. Typische klassen:
SalesInvoiceApiPurchaseInvoiceApiHookApiPeppolApiRaadpleeg de Swagger UI voor request- en responseschema's per operatie.
De SDK gebruikt Guzzle als HTTP-client. API-fouten (4xx, 5xx) komen binnen als GuzzleHttp\Exception\ClientException of ServerException. Controleer $e->getResponse()->getBody() voor de foutdetails van de PSB.
401 Unauthorizedlogin() opnieuw aan400 Bad Request409 Conflict5xxIn plaats van deze library kun je ook PHP-code genereren uit de OpenAPI-spec. Zie OpenAPI codegen voor het commando en authenticatie-opmerkingen.
De repository beschrijft zichzelf als referentie-implementatie. De code is open source en wordt in de praktijk gebruikt, maar controleer altijd of de versie op Packagist aansluit bij je PHP-versie en of alle endpoints die je nodig hebt gedekt zijn. Voor volledige API-dekking kun je ook zelf codegen doen.
De package vereist PHP 7.2+. De laatste release op Packagist is v0.9.2 (augustus 2021). Test je integratie grondig in de acceptatieomgeving.