Traitement sidekiq-like, idéal pour ERP custom et portails fournisseurs.

FacturX API pour Symfony

Utilisez HttpClient, Messenger et Notifier pour piloter la validation.

HttpClient + AsyncDecorator
Messenger pour gérer les retries
Notifications Slack/Email intégrées

Exemple curl

multipart/form-data
curl -X POST https://api.facturxapi.com/api/v1/validate \
  -H "Authorization: Bearer $FACTURX_API_KEY" \
  -F "[email protected]" \
  -F "lang=fr"

Snippet Symfony

Auth + appel /api/v1/validate
$client = HttpClient::create();

$response = $client->request('POST', 'https://api.facturxapi.com/api/v1/validate', [
    'headers' => [
        'Authorization' => 'Bearer ' . $_ENV['FACTURX_API_KEY'],
    ],
    'timeout' => 15,
    'body' => [
        'file' => fopen('/srv/app/var/FX-2024-0001.pdf', 'r'),
        'lang' => 'fr',
    ],
]);

$data = $response->toArray(false);
if (!($data['valid'] ?? false)) {
    $this->notifier->send(new ChatMessage('Erreur FacturX: ' . ($data['errors'][0]['message'] ?? 'inconnue')));
}

Checklist intégration

  • Utiliser la pool de transport Async pour ne pas bloquer le worker

  • Ajouter un middleware Messenger pour tracer request_id

  • Stocker les rapports dans un storage chiffré (S3 SSE)

Retries & timeouts

Configurer Messenger pour rejouer 3 fois avec délai progressif (1/4/15 min).

  • • Timeout HttpClient : 15 s
  • • Limiter le parallélisme via messenger:consume --limit
  • • Notifier les erreurs 5xx via Notifier component

Erreurs fréquentes

Mappez vos logs aux codes pour des corrections rapides.

network_timeout

Firewall bloquant l'API sortante.

💡 Autoriser api.facturxapi.com sur votre proxy/SASE.

invalid_lang

Paramètre lang invalide.

💡 Utiliser fr ou en (default fr).

payload_corrupted

Flux tronqué lors de l'envoi.

💡 Toujours streaming via fopen et éviter file_get_contents sur gros PDF.

FAQ

Peut-on utiliser API Platform ?

Oui, déclarez un provider custom qui appelle l'API FacturX.

Comment tracer le request_id ?

Ajoutez un middleware PSR pour logger X-Request-Id dans Monolog.

Guide Schematron

Comprendre les règles métier

Errors library

Trouver l'origine d'un BR-xx

Pricing

Prévoir votre budget