Hoppa till huvudinnehåll

Documentation Index

Fetch the complete documentation index at: https://docs.dodopayments.com/llms.txt

Use this file to discover all available pages before exploring further.

PHP SDK:n erbjuder ett robust och flexibelt sätt att integrera Dodo Payments i dina PHP-applikationer. Byggd enligt moderna PHP-standarder med PSR-4 autoloading, erbjuder den omfattande testtäckning och detaljerad dokumentation.

Installation

Installera SDK:t med Composer:
composer require "dodopayments/client 6.7.1"
SDK:t kräver PHP 8.1.0 eller högre och Composer för beroendehantering.

Kom igång snabbt

Initiera klienten och skapa en kassa-session:
<?php

use Dodopayments\Client;

$client = new Client(
  bearerToken: getenv('DODO_PAYMENTS_API_KEY') ?: 'My Bearer Token',
  environment: 'test_mode',
);

$checkoutSessionResponse = $client->checkoutSessions->create(
  productCart: [["productID" => "product_id", "quantity" => 1]]
);

var_dump($checkoutSessionResponse->session_id);
Förvara dina API-nycklar säkert med hjälp av miljövariabler. Visa aldrig dem i din kodbas eller checka in dem i versionshantering.

Kärnfunktioner

PSR-4 Compliant

Följer PHP Standards Recommendations för modern PHP-utveckling

Modern PHP

Byggd för PHP 8.1+ med typedeklarationer och strikta typer

Extensive Testing

Omfattande testtäckning för pålitlighet och stabilitet

Exception Handling

Tydliga undantagstyper för olika felscenarier

Värdeobjekt

SDK:t använder namngivna parametrar för att ange valfria argument. Du kan initiera värdeobjekt med den statiska with-konstruktorn:
<?php

use Dodopayments\Customers\AttachExistingCustomer;

// Recommended: Use static 'with' constructor with named parameters
$customer = AttachExistingCustomer::with(customerID: "customer_id");
Byggare finns också som ett alternativt mönster:
<?php

use Dodopayments\Customers\AttachExistingCustomer;

// Alternative: Use builder pattern
$customer = (new AttachExistingCustomer)->withCustomerID("customer_id");

Konfiguration

Konfiguration för omförsök

Vissa fel försöks automatiskt igen två gånger som standard med en kort exponentiell återgång. Följande fel utlöser automatiska omförsök:
  • Anslutningsfel (nätverksproblem)
  • 408 Request Timeout
  • 409 Conflict
  • 429 Rate Limit
  • 500+ interna fel
  • Tidsgränser
Konfigurera omförsöksbeteendet globalt eller per begäran:
<?php

use Dodopayments\Client;

// Configure default for all requests (disable retries)
$client = new Client(requestOptions: ['maxRetries' => 0]);

// Or, configure per-request
$result = $client->checkoutSessions->create(
  productCart: [["productID" => "product_id", "quantity" => 1]],
  requestOptions: ['maxRetries' => 5],
);

Vanliga operationer

Skapa en kassa-session

Generera en kassa-session:
$session = $client->checkoutSessions->create(
  productCart: [
    ["productID" => "prod_123", "quantity" => 1]
  ],
  returnUrl: "https://yourdomain.com/return"
);

header('Location: ' . $session->url);

Hantera kunder

Skapa och hämta kundinformation:
// Create a customer
$customer = $client->customers->create(
  email: "customer@example.com",
  name: "John Doe",
  metadata: [
    "user_id" => "12345"
  ]
);

// Retrieve customer
$customer = $client->customers->retrieve("cus_123");
echo "Customer: {$customer->name} ({$customer->email})";

Hantera prenumerationer

Skapa och hantera återkommande prenumerationer:
use Dodopayments\Customers\AttachExistingCustomer;
use Dodopayments\Payments\BillingAddress;

// Create a subscription
$subscription = $client->subscriptions->create(
  billing: BillingAddress::with(
    country: 'US',
    city: 'San Francisco',
    state: 'CA',
    street: '1 Market St',
    zipcode: '94105',
  ),
  customer: AttachExistingCustomer::with(customerID: 'cus_123'),
  productID: 'pdt_456',
  quantity: 1,
);

// Charge an on-demand subscription
// productPrice is in the lowest currency denomination (e.g., 2500 = $25.00 USD)
$charge = $client->subscriptions->charge(
  $subscription->subscription_id,
  productPrice: 2500,
);
billing kräver minst den tvåbokstaviga ISO country-koden. Skicka AttachExistingCustomer::with(customerID: '...') för att ansluta en befintlig kund, eller NewCustomer::with(email: '...', name: '...') för att skapa en. productPrice är i den lägsta valutadenominationen.

Pagination

Arbeta med paginerade listresponser:
$page = $client->payments->list();

var_dump($page);

// Fetch items from the current page
foreach ($page->getItems() as $item) {
  var_dump($item->brand_id);
}

// Auto-paginate: fetch items from all pages
foreach ($page->pagingEachItem() as $item) {
  var_dump($item->brand_id);
}

Felhantering

När biblioteket inte kan ansluta till API:et eller får tillbaka en statuskod som inte indikerar framgång (4xx eller 5xx), kastas en subklass av APIException:
<?php

use 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();
}

Feltyper

OrsakFeltyp
HTTP 400BadRequestException
HTTP 401AuthenticationException
HTTP 403PermissionDeniedException
HTTP 404NotFoundException
HTTP 409ConflictException
HTTP 422UnprocessableEntityException
HTTP 429RateLimitException
HTTP >= 500InternalServerException
Annan HTTP-felAPIStatusException
TimeoutAPITimeoutException
NätverksfelAPIConnectionException
Omge alltid API-anrop med try-catch block för att hantera potentiella fel på ett graciöst sätt och ge betydelsefull feedback till användarna.

Avancerad användning

Odokumenterade slutpunkter

Skicka förfrågningar till odokumenterade slutpunkter:
<?php

$response = $client->request(
  method: "post",
  path: '/undocumented/endpoint',
  query: ['dog' => 'woof'],
  headers: ['useful-header' => 'interesting-value'],
  body: ['hello' => 'world']
);

Odokumenterade parametrar

Skicka odokumenterade parametrar till vilken slutpunkt som helst eller läs odokumenterade svarsegenskaper:
<?php

use Dodopayments\RequestOptions;

$checkoutSessionResponse = $client->checkoutSessions->create(
  productCart: [["productID" => "product_id", "quantity" => 1]],
  requestOptions: [
    'extraQueryParams' => ["my_query_parameter" => "value"],
    'extraBodyParams' => ["my_body_parameter" => "value"],
    'extraHeaders' => ["my-header" => "value"],
  ],
);
extra* parametrar med samma namn åsidosätter dokumenterade parametrar.

Ramverksintegration

Laravel

Skapa en tjänst för Laravel-applikationer:
<?php

namespace App\Services;

use Dodopayments\Client;

class PaymentService
{
    protected $client;

    public function __construct()
    {
        $this->client = new Client(
            bearerToken: config('services.dodo.api_key')
        );
    }

    public function createCheckout(array $items)
    {
        return $this->client->checkoutSessions->create(
            productCart: $items,
            returnUrl: route('checkout.return')
        );
    }
}
Lägg till konfiguration i config/services.php:
'dodo' => [
    'api_key' => env('DODO_API_KEY'),
    'environment' => env('DODO_ENVIRONMENT', 'sandbox')
],

Symfony

Skapa en tjänst i Symfony:
<?php

namespace App\Service;

use Dodopayments\Client;

class DodoPaymentService
{
    private Client $client;

    public function __construct(string $apiKey)
    {
        $this->client = new Client(bearerToken: $apiKey);
    }

    public function createPayment(int $amount, string $currency, string $customerId): object
    {
        return $this->client->payments->create(
            amount: $amount,
            currency: $currency,
            customerID: $customerId
        );
    }
}
Registrera i config/services.yaml:
services:
  App\Service\DodoPaymentService:
    arguments:
      $apiKey: "%env(DODO_API_KEY)%"

Resurser

GitHub Repository

Visa källkod och bidra

API Reference

Komplett API-dokumentation

Discord Community

Få hjälp och anslut med utvecklare

Report Issues

Rapportera buggar eller begär funktioner

Support

Behöver du hjälp med PHP SDK?

Bidra

Vi välkomnar bidrag! Kolla riktlinjer för att bidra för att komma igång.
Last modified on May 14, 2026