Installation
Installera SDK:t med Composer:SDK:t kräver PHP 8.1.0 eller senare samt Composer. Det skickar förfrågningar via en PSR-18 HTTP-klient i ditt projekt, till exempel Guzzle, som det hittar med
php-http/discovery.Kom igång snabbt
Skapa en klient och skapa sedan en checkout-session:bearerToken läser klienten miljövariabeln DODO_PAYMENTS_API_KEY. Om du utelämnar baseUrl läser klienten DODO_PAYMENTS_BASE_URL och ansluter till live-läge (https://live.dodopayments.com) när inte heller den är inställd. En API-nyckel för testläge fungerar endast med URL:en för testläge, https://test.dodopayments.com.
Kärnfunktioner
PSR-4 Compliant
Composer laddar namnrymden
Dodopayments med PSR-4-autoladdning.Modern PHP
Utformat för PHP 8.1 eller senare, med typade parametrar och strikta typer.
Extensive Testing
SDK-repositoriet innehåller en testsvit för API-tjänsterna.
Exception Handling
En undantagsklass för varje HTTP-felstatus, samt undantag för timeout och anslutning.
Värdeobjekt
Metoder använder namngivna parametrar, och parametrar som har ett standardvärde måste skickas med namn. Om du vill skapa ett värdeobjekt använder du dess statiskawith-konstruktor med namngivna parametrar:
["productID" => "pdt_123", "quantity" => 1]. Svarsegenskaper använder också camelCase-namn, till exempel $session->checkoutURL.
Konfiguration
Konstruktorn förClient tar bearerToken, webhookKey, baseUrl och requestOptions. När du utelämnar dem läser den DODO_PAYMENTS_API_KEY, DODO_PAYMENTS_WEBHOOK_KEY (din webhook-signeringshemlighet) och DODO_PAYMENTS_BASE_URL från miljön.
Om du vill verifiera en webhook skickar du den råa request body:n och headers till $client->webhooks->unwrap($body, headers: $headers). Den kontrollerar signaturen med din webhook-nyckel, returnerar den tolkade händelsen och kastar WebhookException om kontrollen misslyckas. Om du utelämnar headers verifierar unwrap inte signaturen. $client->webhooks->unsafeUnwrap($body) tolkar body:n utan att verifiera den, så använd den endast för testning. Se Webhooks.
Konfiguration av omförsök
SDK:t försöker som standard igen två gånger vid vissa fel, med en kort exponentiell backoff. Följande fel utlöser ett nytt försök:- Anslutningsfel (problem med nätverksanslutningen)
- 408 Request Timeout
- 409 Conflict
- 429 Rate Limit
- 500+ Internal errors
- Timeouts
maxRetries i requestOptions, på klienten eller för en enskild request:
timeout, i sekunder, i samma requestOptions-array.
Vanliga åtgärder
Exemplen i det här avsnittet använder$client från Snabbstart.
Skapa en checkout-session
Skapa en checkout-session och omdirigera sedan kunden till den returneradecheckoutURL:
Hantera kunder
Skapa en kund med en e-postadress och ett namn och hämta den sedan med ID:t:Hantera prenumerationer
Skapa en prenumeration och debitera den sedan om det är en on-demand-prenumeration.billing kräver endast country, en tvåbokstavskod enligt ISO för land. Skicka AttachExistingCustomer::with(customerID: '...') för att koppla en befintlig kund eller NewCustomer::with(email: '...', name: '...') för att skapa en. Båda klasserna finns i namnrymden Dodopayments\Payments. charge används för on-demand-prenumerationer, och productPrice anges i den minsta valutaenheten.Paginering
Listmetoder returnerar ett sidobjekt.getItems() returnerar objekten på den aktuella sidan, och pagingEachItem() returnerar alla objekt från den aktuella sidan och framåt genom att begära fler sidor vid behov:
hasNextPage() och getNextPage().
Felhantering
När SDK:t inte kan ansluta till API:t eller API:t returnerar status 4xx eller 5xx kastar SDK:t en subklass avDodopayments\Core\Exceptions\APIException:
Feltyper
Undantagsklassen beror på orsaken. Alla klasser finns i namnrymdenDodopayments\Core\Exceptions:
Avancerad användning
Ej dokumenterade endpoints
Om du vill anropa en endpoint som saknar en SDK-metod använder du$client->request. Den använder samma autentisering och omförsök som SDK-metoderna:
Ej dokumenterade parametrar
Om du vill skicka parametrar som SDK:t inte definierar skickar du dem irequestOptions:
En
extra*-parameter med samma namn som en dokumenterad parameter åsidosätter den.Ramverksintegration
Laravel
Omslut klienten i en serviceklass. Det här exemplet anger API-URL:en från den konfigurerade miljön:config/services.php:
Symfony
Skapa en service som tar emot API-nyckeln via sin konstruktor:config/services.yaml:
Resurser
GitHub Repository
Källkod, versioner och hela metodlistan.
API Reference
Varje endpoint, parameter och svar.
Discord Community
Ställ frågor och prata med andra utvecklare.
Report Issues
Rapportera buggar eller föreslå funktioner.
Support
Om du behöver hjälp med PHP SDK:- Discord: Gå med i community-servern för hjälp i realtid.
- E-post: Kontakta support@dodopayments.com.
- GitHub: Öppna ett ärende i repositoriet.