Skip to main content
PHP SDK ger PHP 8.1+-applikationer åtkomst till Dodo Payments REST API. Metoder använder namngivna parametrar, svaren är typade objekt och Composer laddar SDK:t med PSR-4-autoladdning.

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:
Om du utelämnar 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.
Förvara API-nycklar i miljövariabler eller en secrets manager. Exponera dem aldrig i din kodbas och checka aldrig in dem i versionshanteringen.

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 statiska with-konstruktor med namngivna parametrar:
Varje värdeobjekt har också en builder:
Metoder accepterar även vanliga arrayer med samma camelCase-nycklar, till exempel ["productID" => "pdt_123", "quantity" => 1]. Svarsegenskaper använder också camelCase-namn, till exempel $session->checkoutURL.

Konfiguration

Konstruktorn för Client 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
Ange maxRetries i requestOptions, på klienten eller för en enskild request:
Requests får som standard timeout efter 60 sekunder. Om du vill ändra gränsen anger du 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 returnerade checkoutURL:
Varje checkout-URL fungerar en gång och upphör att gälla efter 24 timmar. Se Checkout Sessions för alla sessionsalternativ.

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.
POST /subscriptions (SDK:ts subscriptions->create-metod) är föråldrad. Den fungerar fortfarande för befintliga integrationer, men nya integrationer bör skapa prenumerationer via en Checkout Session.
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:
Om du vill gå igenom en sida i taget anropar du 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 av Dodopayments\Core\Exceptions\APIException:

Feltyper

Undantagsklassen beror på orsaken. Alla klasser finns i namnrymden Dodopayments\Core\Exceptions:
Fånga dessa undantag runt API-anrop så att din applikation kan visa ett tydligt meddelande eller försöka igen senare. Vid ett fel som kan omförsökas kastar SDK:t undantaget först efter att de automatiska omförsöken har misslyckats.

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 i requestOptions:
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:
Lägg till inställningarna i config/services.php:

Symfony

Skapa en service som tar emot API-nyckeln via sin konstruktor:
Registrera servicen i 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:

Bidra

Om du vill bidra kan du läsa riktlinjerna för bidrag.
Senast ändrad 26 september 2026