PHPackages                             r3mfr/api-dpae-php - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [API Development](/categories/api)
4. /
5. r3mfr/api-dpae-php

ActiveLibrary[API Development](/categories/api)

r3mfr/api-dpae-php
==================

Librairie PHP facilitant l'intégration de l'API DPAE https://dpae.r3m.fr

1.2.1(1y ago)214.4k↓50%2MITPHPPHP &gt;=7.1.0CI passing

Since Mar 26Pushed 1y ago1 watchersCompare

[ Source](https://github.com/r3mfr/api-dpae-php)[ Packagist](https://packagist.org/packages/r3mfr/api-dpae-php)[ RSS](/packages/r3mfr-api-dpae-php/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (5)Dependencies (8)Versions (8)Used By (0)

API DPAE - PHP
==============

[](#api-dpae---php)

Cette librairie fournit un moyen simple pour utiliser l'API DPAE [dpae.r3m.fr](https://dpae.r3m.fr) pour toute application écrite dans le language PHP.

[![CI](https://github.com/r3mfr/api-dpae-php/actions/workflows/ci.yml/badge.svg)](https://github.com/r3mfr/api-dpae-php/actions/workflows/ci.yml)

Pré-requis
----------

[](#pré-requis)

PHP 7.1.0 et plus récent.

Installation
------------

[](#installation)

La méthode d'installation recommandée est avec [Composer](http://getcomposer.org/). Exécutez la commande suivante :

```
composer require r3mfr/api-dpae-php
```

Assurez-vous que le fichier d'[autoload de Composer](https://getcomposer.org/doc/01-basic-usage.md#autoloading) soit bien inclus dans votre application :

```
require_once('vendor/autoload.php');
```

Documentation
-------------

[](#documentation)

Se référer à la [documentation de l'API DPAE](https://dpae.r3m.fr/docs/) pour avoir un aperçu complet du fonctionnement de l'API, et de son intégration dans un logiciel.

### Authentification

[](#authentification)

Toute requête doit être accompagnée par un jeton JWT.

Ce jeton est créé automatiquement pour vous par la librairie PHP, en utilisant vos identifiants.

*Pour obtenir vos identifiants, vous devez vous créer un compte sur [API DPAE](https://dpae.r3m.fr/).*

```
$username = 'foo';
$password = 'bar';
\R3m\Dpae\ApiClient::setCredentials($username, $password);
```

### Stockage du jeton d'authentification

[](#stockage-du-jeton-dauthentification)

Le jeton JWT a une durée de vie limitée. Par défaut il est stocké en mémoire, et est donc redemandé à chaque requête. Cela n'est pas optimal et peut poser des problèmes de quota d'authentification.

Il est fortement conseillé de permettre le stockage du jeton JWT ailleurs qu'en mémoire, en définissant un `TokenStorage`. Exemple :

```
$myTokenStorage = new class implements \R3m\Dpae\AuthTokenStorage\AuthTokenStorageInterface {
    public function get(): string
    {
        // Lire le token depuis la base de données ou depuis un fichier
    }

    public function set(string $token): void
    {
        // Stocker le token en base de données ou dans un fichier
    }
};
\R3m\Dpae\ApiClient::setAuthTokenStorage($myTokenStorage);
```

### Soumettre une embauche

[](#soumettre-une-embauche)

Pour effectuer une DPAE, vous devez soumettre une Embauche à l'API DPAE. Référez-vous à la [documentation](https://dpae.r3m.fr/docs/#soumettre-une-embauche) pour avoir le détail et le format des propriétés d'une Embauche.

```
$embauche = new \R3m\Dpae\Embauche();
$embauche
    ->setRaisonSociale('R3M EVENEMENT')
    ->setSiret('67846960300074')
    // ... définir les autres valeurs de l'embauche ...
    ->setIdExterne('123456');

try {
    $embauche->save();
} catch (\R3m\Dpae\Exception\BadRequestException $e) {
    foreach ($e->getViolations() as $violation) {
        echo("Erreur sur la propriété {$violation['propertyPath']}: {$violation['message']}");
    }
    exit(1);
} catch (\R3m\Dpae\Exception\ExceptionInterface $e) {
    echo("Erreur lors de la création de l'embauche : {$e->getCode()} {$e->getMessage()}");
    exit(1);
}

echo("Embauche {$embauche->id} créée. Statut de la DPAE: {$embauche->getDpae()->statutTraitementDescription}.");
```

### Vérifier le statut d'une Embauche

[](#vérifier-le-statut-dune-embauche)

Bien qu'il soit conseillé d'utiliser un [Webhook](https://dpae.r3m.fr/docs/#webhooks) pour être notifié du retour de la DPAE, il est possible d'interroger l'API DPAE manuellement.

```
$idExterne = '123456'; // ID de l'embauche dans l'application cliente

try {
    /** @var \R3m\Dpae\Embauche $embauche */
    $embauche = \R3m\Dpae\Embauche::one(['idExterne' => $idExterne]);
} catch (\R3m\Dpae\Exception\ExceptionInterface $e) {
    echo("Erreur {$e->getCode()} lors de la recherche de l'embauche : {$e->getMessage()}");
    exit(1);
}

if ($embauche) {
    if ($embauche->isDeclaree()) {
        echo("DPAE validée par l'URSSAF. Numéro de dossier : {$embauche->getDpae()->refDossier}");
    } else {
        if ($embauche->hasErreur()) {
            echo("Erreur avec la DPAE de l'embauche {$embauche->getId()} : {$embauche->getDpae()->codeRetourAr}-{$embauche->getDpae()->codeRetourArLibelle}");
        } else {
            echo("Statut de la DPAE pour l'embauche {$embauche->getId()} : {$embauche->getDpae()->statutTraitementDescription}");
        }
    }
} else {
    echo("Aucune embauche trouvée pour idExterne=$idExterne");
}
```

Recevoir la notification Webhook
--------------------------------

[](#recevoir-la-notification-webhook)

Il est possible d'être notifié par l'API dès qu'un accusé de réception est disponible. Il suffit de déclarer une URL de votre application en tant que webhook. Ainsi, il ne sera pas nécessaire d'interroger régulièrement l'API pour connaître le statut de vos déclarations d'embauche : c'est l'API qui notifiera votre application, en lui passant toutes les informations nécessaires au traitement de l'accusé de réception.

Vous devez donc exposer une URL de votre application. Lors de l'appel de cette URL, exécutez le code suivant :

```
// Il est conseillé de configurer une clé secrête pour valider la requête Webhook
$secret = 'phrase_secrete';

try {
    $webhookEvent = \R3m\Dpae\WebhookEvent::receive($secret);
} catch (\R3m\Dpae\Exception\ExceptionInterface $e) {
    echo sprintf("Erreur lors de la réception du webhook : {$e->getMessage()}");

    // Retourner un code >= 400 informera l'API DPAE de l'erreur de traitement
    header($_SERVER['SERVER_PROTOCOL'] . ' 400 Bad Dequest', true, 400);
    exit(1);
}

$embauche = $webhookEvent->getEmbauche();

// Vous pouvez maintenant traitez le statut de la DPAE dans votre application :
// - mettre à jour le statut de la DPAE dans votre base de données
// - notifiez le déclarant si une erreur doit être corrigée
// - etc.

if ($embauche->isDeclaree()) {
    echo sprintf("DPAE validée par l'URSSAF. Numéro de dossier : {$embauche->getDpae()->refDossier}");
} else {
    // l'embauche n'est pas déclarée, la DPAE est en erreur
    echo sprintf("Erreur avec la DPAE de l'embauche {$embauche->getId()} : {$embauche->getDpae()->codeRetourAr}-{$embauche->getDpae()->codeRetourArLibelle}");
}

// Informer l'API DPAE du succès du traitement du webhook
header($_SERVER['SERVER_PROTOCOL'] . ' 200 OK', true, 200);
```

### En cas de maintenance

[](#en-cas-de-maintenance)

En cas de maintenance de votre application, vous pouvez retourner une 503. Cela permettra à l'API DPAE de retenter la notification par webhook un peu plus tard.

```
header($_SERVER['SERVER_PROTOCOL'] . ' 503 Service Unavailable', true, 503);
header('Retry-after: 3600');
```

Utiliser un autre client HTTP
-----------------------------

[](#utiliser-un-autre-client-http)

Par défaut, `symfony/http-client` est utilisé pour dialoguer avec API DPAE. Si vous préférez, vous pouvez utiliser un autre client HTTP implémentant `\Psr\Http\Client\ClientInterface`.

```
$myhttpClient = new MyHttpClient(['option1' => true]);
Dpae\ApiClient::setHttpClient($myhttpClient);

```

Contributions
-------------

[](#contributions)

Les pull request sont les bienvenues.

### Tests

[](#tests)

Codeception est utilisé pour les tests.

```
$ composer run test

```

###  Health Score

38

—

LowBetter than 85% of packages

Maintenance42

Moderate activity, may be stable

Popularity29

Limited adoption so far

Community11

Small or concentrated contributor base

Maturity56

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 90.9% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~440 days

Total

5

Last Release

480d ago

Major Versions

0.1.0 → 1.0.02022-03-28

PHP version history (2 changes)0.1.0PHP ^7.1

1.0.0PHP &gt;=7.1.0

### Community

Maintainers

![](https://www.gravatar.com/avatar/b1854e50fbde7a84e63d9695b17b78e14d4983a7c355919393d9f92ff6ed0e10?d=identicon)[dogawaf](/maintainers/dogawaf)

---

Top Contributors

[![dogawaf](https://avatars.githubusercontent.com/u/381969?v=4)](https://github.com/dogawaf "dogawaf (10 commits)")[![DavidCodecolliders](https://avatars.githubusercontent.com/u/106749720?v=4)](https://github.com/DavidCodecolliders "DavidCodecolliders (1 commits)")

###  Code Quality

TestsCodeception

### Embed Badge

![Health badge](/badges/r3mfr-api-dpae-php/health.svg)

```
[![Health](https://phpackages.com/badges/r3mfr-api-dpae-php/health.svg)](https://phpackages.com/packages/r3mfr-api-dpae-php)
```

###  Alternatives

[sylius/sylius

E-Commerce platform for PHP, based on Symfony framework.

8.4k5.6M651](/packages/sylius-sylius)[wordpress/php-ai-client

A provider agnostic PHP AI client SDK to communicate with any generative AI models of various capabilities using a uniform API.

26236.6k14](/packages/wordpress-php-ai-client)[deepseek-php/deepseek-php-client

deepseek PHP client is a robust and community-driven PHP client library for seamless integration with the Deepseek API, offering efficient access to advanced AI and data processing capabilities.

47073.9k5](/packages/deepseek-php-deepseek-php-client)[toshy/bunnynet-php

BunnyNet API client for PHP

61172.1k6](/packages/toshy-bunnynet-php)[tamara-solution/php-sdk

Tamara PHP Client Library

10259.4k1](/packages/tamara-solution-php-sdk)[partitech/php-mistral

Connect to Mistral | Anthropic | Xai | Hugging Face | LamaC++ | Vllm | Ollama

2624.1k1](/packages/partitech-php-mistral)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
