Installation
Installieren Sie das SDK mit Composer:Das SDK benötigt PHP 8.1.0 oder höher und Composer. Es sendet Anfragen über einen PSR-18-HTTP-Client in Ihrem Projekt, beispielsweise Guzzle, den es mit
php-http/discovery findet.Schnellstart
Erstellen Sie einen Client und anschließend eine Checkout-Sitzung:bearerToken nicht angeben, liest der Client die Umgebungsvariable DODO_PAYMENTS_API_KEY. Wenn Sie baseUrl nicht angeben, liest der Client DODO_PAYMENTS_BASE_URL und verbindet sich mit dem Live-Modus (https://live.dodopayments.com), wenn auch diese Variable nicht gesetzt ist. Ein API-Schlüssel für den Testmodus funktioniert nur mit der URL des Testmodus, https://test.dodopayments.com.
Kernfunktionen
PSR-4 Compliant
Composer lädt den Namespace
Dodopayments per PSR-4-Autoloading.Modern PHP
Entwickelt für PHP 8.1 oder höher, mit typisierten Parametern und strikten Typen.
Extensive Testing
Das SDK-Repository enthält eine Testsuite für die API-Dienste.
Exception Handling
Eine Exception-Klasse für jeden HTTP-Fehlerstatus sowie Exceptions für Timeouts und Verbindungsfehler.
Value Objects
Methoden verwenden benannte Parameter. Parameter mit einem Standardwert müssen per Namen übergeben werden. Um ein Value Object zu erstellen, verwenden Sie dessen statischenwith-Konstruktor mit benannten Parametern:
["productID" => "pdt_123", "quantity" => 1]. Eigenschaften von Antworten verwenden ebenfalls camelCase-Namen, zum Beispiel $session->checkoutURL.
Konfiguration
DerClient-Konstruktor akzeptiert bearerToken, webhookKey, baseUrl und requestOptions. Wenn Sie diese nicht angeben, liest er DODO_PAYMENTS_API_KEY, DODO_PAYMENTS_WEBHOOK_KEY (Ihr Webhook-Signaturgeheimnis) und DODO_PAYMENTS_BASE_URL aus der Umgebung.
Um einen Webhook zu verifizieren, übergeben Sie den unveränderten Request-Body und die Header an $client->webhooks->unwrap($body, headers: $headers). Die Methode prüft die Signatur mit Ihrem Webhook-Schlüssel, gibt das geparste Ereignis zurück und löst WebhookException aus, wenn die Prüfung fehlschlägt. Wenn Sie headers nicht angeben, verifiziert unwrap die Signatur nicht. $client->webhooks->unsafeUnwrap($body) parst den Body, ohne ihn zu verifizieren. Verwenden Sie diese Methode daher nur zum Testen. Siehe Webhooks.
Konfiguration der Wiederholungsversuche
Das SDK wiederholt bestimmte Fehler standardmäßig zweimal mit einem kurzen exponentiellen Backoff. Diese Fehler lösen einen Wiederholungsversuch aus:- Verbindungsfehler (Probleme mit der Netzwerkverbindung)
- 408 Request Timeout
- 409 Conflict
- 429 Rate Limit
- 500+ interne Fehler
- Timeouts
maxRetries in requestOptions – auf dem Client oder bei einer einzelnen Anfrage:
timeout in Sekunden im selben requestOptions-Array.
Häufige Vorgänge
Die Beispiele in diesem Abschnitt verwenden den$client aus dem Schnellstart.
Checkout-Sitzung erstellen
Erstellen Sie eine Checkout-Sitzung und leiten Sie den Kunden anschließend zur zurückgegebenencheckoutURL weiter:
Kunden verwalten
Erstellen Sie einen Kunden mit E-Mail-Adresse und Namen und rufen Sie ihn anschließend über seine ID ab:Abonnements verwalten
Erstellen Sie ein Abonnement und belasten Sie es anschließend, wenn es sich um ein On-Demand-Abonnement handelt.billing benötigt nur country, einen zweibuchstabigen ISO-Ländercode. Übergeben Sie AttachExistingCustomer::with(customerID: '...'), um einen bestehenden Kunden zu verknüpfen, oder NewCustomer::with(email: '...', name: '...'), um einen Kunden zu erstellen. Beide Klassen befinden sich im Namespace Dodopayments\Payments. charge ist für On-Demand-Abonnements vorgesehen, und productPrice wird in der kleinsten Währungseinheit angegeben.Pagination
Listenmethoden geben ein Seitenobjekt zurück.getItems() gibt die Elemente der aktuellen Seite zurück, während pagingEachItem() jedes Element ab der aktuellen Seite zurückgibt und bei Bedarf weitere Seiten anfordert:
hasNextPage() und getNextPage() auf.
Fehlerbehandlung
Wenn das SDK keine Verbindung zur API herstellen kann oder die API einen 4xx- oder 5xx-Status zurückgibt, löst das SDK eine Unterklasse vonDodopayments\Core\Exceptions\APIException aus:
Fehlertypen
Die Exception-Klasse hängt von der Ursache ab. Alle Klassen befinden sich im NamespaceDodopayments\Core\Exceptions:
Erweiterte Verwendung
Nicht dokumentierte Endpunkte
Um einen Endpunkt aufzurufen, für den keine SDK-Methode vorhanden ist, verwenden Sie$client->request. Dabei werden dieselbe Authentifizierung und dieselben Wiederholungsversuche wie bei den SDK-Methoden verwendet:
Nicht dokumentierte Parameter
Um Parameter zu senden, die das SDK nicht definiert, übergeben Sie sie inrequestOptions:
Ein
extra*-Parameter mit demselben Namen wie ein dokumentierter Parameter überschreibt diesen.Framework-Integration
Laravel
Verpacken Sie den Client in einer Serviceklasse. Dieses Beispiel legt die API-URL aus der konfigurierten Umgebung fest:config/services.php hinzu:
Symfony
Erstellen Sie einen Service, der den API-Schlüssel über seinen Konstruktor erhält:config/services.yaml:
Ressourcen
GitHub Repository
Quellcode, Releases und die vollständige Methodenliste.
API Reference
Jeder Endpunkt, jeder Parameter und jede Antwort.
Discord Community
Stellen Sie Fragen und tauschen Sie sich mit anderen Entwicklern aus.
Report Issues
Melden Sie Fehler oder schlagen Sie neue Funktionen vor.
Support
Hilfe zum PHP SDK:- Discord: Treten Sie dem Community-Server bei, um in Echtzeit Hilfe zu erhalten.
- E-Mail: Kontaktieren Sie support@dodopayments.com.
- GitHub: Erstellen Sie ein Issue im Repository.