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 :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.
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 statiquewith avec des paramètres nommés :
["productID" => "pdt_123", "quantity" => 1]. Les propriétés des réponses utilisent également des noms camelCase, par exemple $session->checkoutURL.
Configuration
Le constructeurClient 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
maxRetries dans requestOptions, sur le client ou sur une seule requête :
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 lecheckoutURL renvoyé :
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.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 :
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 deDodopayments\Core\Exceptions\APIException :
Types d’erreurs
La classe d’exception dépend de la cause. Toutes les classes se trouvent dans l’espace de nomsDodopayments\Core\Exceptions :
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 dansrequestOptions :
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é :config/services.php :
Symfony
Créez un service qui reçoit la clé API via son constructeur :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 :- Discord : Rejoignez le serveur communautaire pour obtenir de l’aide en temps réel.
- E-mail : Contactez support@dodopayments.com.
- GitHub : Ouvrez une issue sur le dépôt.