Skip to main content
Le SDK PHP permet aux applications PHP 8.1+ d’accéder à l’API REST Dodo Payments. Les méthodes utilisent des paramètres nommés, les réponses sont des objets typés et Composer charge le SDK avec l’autoloading PSR-4.

Installation

Installez le SDK avec Composer :
Le SDK nécessite PHP 8.1.0 ou une version ultérieure, ainsi que Composer. Il envoie les requêtes via un client HTTP PSR-18 présent dans votre projet, comme Guzzle, qu’il détecte avec php-http/discovery.

Démarrage rapide

Créez un client, puis créez une session de checkout :
Si vous omettez bearerToken, le client lit la variable d’environnement DODO_PAYMENTS_API_KEY. Si vous omettez baseUrl, le client lit DODO_PAYMENTS_BASE_URL et se connecte au mode live (https://live.dodopayments.com) si cette variable n’est pas définie non plus. Une clé API de mode test fonctionne uniquement avec l’URL du mode test, https://test.dodopayments.com.
Conservez les clés API dans des variables d’environnement ou un gestionnaire de secrets. Ne les exposez jamais dans votre base de code et ne les validez jamais dans le contrôle de version.

Fonctionnalités principales

PSR-4 Compliant

Composer charge l’espace de noms Dodopayments avec l’autoloading PSR-4.

Modern PHP

Conçu pour PHP 8.1 ou une version ultérieure, avec des paramètres typés et des types stricts.

Extensive Testing

Le dépôt du SDK comprend une suite de tests pour les services API.

Exception Handling

Une classe d’exception pour chaque statut d’erreur HTTP, ainsi que des exceptions de délai d’attente et de connexion.

Objets valeur

Les méthodes utilisent des paramètres nommés, et les paramètres ayant une valeur par défaut doivent être transmis par leur nom. Pour créer un objet valeur, utilisez son constructeur statique with avec des paramètres nommés :
Chaque objet valeur possède également un builder :
Les méthodes acceptent également des tableaux simples utilisant les mêmes clés camelCase, comme ["productID" => "pdt_123", "quantity" => 1]. Les propriétés des réponses utilisent également des noms camelCase, par exemple $session->checkoutURL.

Configuration

Le constructeur Client accepte bearerToken, webhookKey, baseUrl et requestOptions. Lorsque vous ne les indiquez pas, il lit DODO_PAYMENTS_API_KEY, DODO_PAYMENTS_WEBHOOK_KEY (votre secret de signature de webhook) et DODO_PAYMENTS_BASE_URL depuis l’environnement. Pour vérifier un webhook, transmettez le corps brut de la requête et ses en-têtes à $client->webhooks->unwrap($body, headers: $headers). Cette méthode vérifie la signature avec votre clé de webhook, renvoie l’événement analysé et lève WebhookException si la vérification échoue. Si vous omettez headers, unwrap ne vérifie pas la signature. $client->webhooks->unsafeUnwrap($body) analyse le corps sans le vérifier : utilisez-le uniquement pour les tests. Consultez Webhooks.

Configuration des nouvelles tentatives

Par défaut, le SDK effectue deux nouvelles tentatives pour certaines erreurs, avec un court backoff exponentiel. Ces erreurs déclenchent une nouvelle tentative :
  • Erreurs de connexion (problèmes de connectivité réseau)
  • 408 Request Timeout
  • 409 Conflict
  • 429 Rate Limit
  • 500+ Internal errors
  • Délais d’attente
Définissez maxRetries dans requestOptions, sur le client ou sur une seule requête :
Les requêtes expirent par défaut après 60 secondes. Pour modifier cette limite, définissez timeout, en secondes, dans le même tableau requestOptions.

Opérations courantes

Les exemples de cette section utilisent le $client de Démarrage rapide.

Créer une session de checkout

Créez une session de checkout, puis redirigez le client vers le checkoutURL renvoyé :
Chaque URL de checkout ne fonctionne qu’une seule fois et expire après 24 heures. Pour connaître toutes les options de session, consultez Sessions de checkout.

Gérer les clients

Créez un client avec une adresse e-mail et un nom, puis récupérez-le par son ID :

Gérer les abonnements

Créez un abonnement, puis facturez-le s’il s’agit d’un abonnement à la demande.
POST /subscriptions (la méthode subscriptions->create du SDK) est obsolète. Elle fonctionne toujours pour les intégrations existantes, mais les nouvelles intégrations doivent créer des abonnements via une session de checkout.
billing nécessite uniquement country, un code pays ISO à deux lettres. Transmettez AttachExistingCustomer::with(customerID: '...') pour associer un client existant, ou NewCustomer::with(email: '...', name: '...') pour en créer un. Les deux classes se trouvent dans l’espace de noms Dodopayments\Payments. charge est destiné aux abonnements à la demande, et productPrice est exprimé dans la plus petite unité monétaire.

Pagination

Les méthodes de liste renvoient un objet page. getItems() renvoie les éléments de la page actuelle, et pagingEachItem() renvoie tous les éléments à partir de la page actuelle, en demandant d’autres pages si nécessaire :
Pour avancer page par page, appelez hasNextPage() et getNextPage().

Gestion des erreurs

Lorsque le SDK ne peut pas se connecter à l’API ou que l’API renvoie un statut 4xx ou 5xx, le SDK lève une sous-classe de Dodopayments\Core\Exceptions\APIException :

Types d’erreurs

La classe d’exception dépend de la cause. Toutes les classes se trouvent dans l’espace de noms Dodopayments\Core\Exceptions :
Interceptez ces exceptions autour des appels API afin que votre application puisse afficher un message clair ou réessayer plus tard. Pour une erreur pouvant faire l’objet d’une nouvelle tentative, le SDK ne lève l’exception qu’après l’échec de ses nouvelles tentatives automatiques.

Utilisation avancée

Endpoints non documentés

Pour appeler un endpoint qui ne possède aucune méthode SDK, utilisez $client->request. Cette méthode applique la même authentification et les mêmes nouvelles tentatives que les méthodes du SDK :

Paramètres non documentés

Pour envoyer des paramètres que le SDK ne définit pas, transmettez-les dans requestOptions :
Un paramètre extra* portant le même nom qu’un paramètre documenté le remplace.

Intégration aux frameworks

Laravel

Encapsulez le client dans une classe de service. Cet exemple définit l’URL de l’API à partir de l’environnement configuré :
Ajoutez les paramètres à config/services.php :

Symfony

Créez un service qui reçoit la clé API via son constructeur :
Enregistrez le service dans config/services.yaml :

Ressources

GitHub Repository

Code source, versions et liste complète des méthodes.

API Reference

Tous les endpoints, paramètres et réponses.

Discord Community

Posez vos questions et échangez avec d’autres développeurs.

Report Issues

Signalez des bugs ou demandez des fonctionnalités.

Assistance

Pour obtenir de l’aide avec le SDK PHP :

Contribuer

Pour contribuer, consultez les consignes de contribution.
Dernière modification le 26 septembre 2026