Intégrez Dodo Payments dans vos applications PHP avec un SDK moderne conforme à PSR-4
Le SDK PHP offre un moyen robuste et flexible d’intégrer Dodo Payments dans vos applications PHP. Construit selon les normes PHP modernes avec autoloading PSR-4, il offre une couverture de test étendue et une documentation détaillée.
La bibliothèque API PHP de Dodo Payments est actuellement en bêta. Nous sommes impatients que vous l’expérimentiez ! Veuillez partager vos suggestions, rapports de bogues ou demandes de fonctionnalités en déposant un problème.
Conservez vos clés API en toute sécurité en utilisant des variables d’environnement. Ne les exposez jamais dans votre code ou ne les engagez pas dans le contrôle de version.
Le SDK utilise des paramètres nommés pour spécifier des arguments optionnels. Vous pouvez initialiser des objets de valeur en utilisant le constructeur statique with :
Copier
<?phpuse Dodopayments\Customers\AttachExistingCustomer;// Recommended: Use static 'with' constructor with named parameters$customer = AttachExistingCustomer::with(customerID: "customer_id");
Des constructeurs sont également disponibles comme un modèle alternatif :
Copier
<?phpuse Dodopayments\Customers\AttachExistingCustomer;// Alternative: Use builder pattern$customer = (new AttachExistingCustomer)->withCustomerID("customer_id");
Certaines erreurs sont automatiquement réessayées 2 fois par défaut avec un court délai exponentiel. Les erreurs suivantes déclenchent des réessais automatiques :
Erreurs de connexion (problèmes de connectivité réseau)
408 Délai d’attente de la requête
409 Conflit
429 Limite de taux
Erreurs internes 500+
Délai d’attente
Configurez le comportement de réessai globalement ou par requête :
Copier
<?phpuse Dodopayments\Client;use Dodopayments\RequestOptions;// Configure default for all requests (disable retries)$client = new Client(maxRetries: 0);// Or, configure per-request$result = $client->checkoutSessions->create( productCart: [["productID" => "product_id", "quantity" => 1]], requestOptions: RequestOptions::with(maxRetries: 5),);
$page = $client->payments->list();var_dump($page);// Fetch items from the current pageforeach ($page->getItems() as $item) { var_dump($item->brand_id);}// Auto-paginate: fetch items from all pagesforeach ($page->pagingEachItem() as $item) { var_dump($item->brand_id);}
Lorsque la bibliothèque ne peut pas se connecter à l’API ou reçoit un code d’état non réussi (4xx ou 5xx), une sous-classe de APIException est lancée :
Copier
<?phpuse Dodopayments\Core\Exceptions\APIConnectionException;use Dodopayments\Core\Exceptions\RateLimitException;use Dodopayments\Core\Exceptions\APIStatusException;try { $checkoutSessionResponse = $client->checkoutSessions->create( productCart: [["productID" => "product_id", "quantity" => 1]] );} catch (APIConnectionException $e) { echo "The server could not be reached", PHP_EOL; var_dump($e->getPrevious());} catch (RateLimitException $_) { echo "A 429 status code was received; we should back off a bit.", PHP_EOL;} catch (APIStatusException $e) { echo "Another non-200-range status code was received", PHP_EOL; echo $e->getMessage();}
Enveloppez toujours les appels API dans des blocs try-catch pour gérer les erreurs potentielles de manière élégante et fournir des retours significatifs aux utilisateurs.