Skip to main content
PHP SDK를 사용하면 PHP 8.1+ 애플리케이션에서 Dodo Payments REST API에 액세스할 수 있습니다. 메서드는 named parameter를 사용하고, 응답은 타입이 지정된 object이며, Composer는 PSR-4 autoloading으로 SDK를 로드합니다.

설치

Composer로 SDK를 설치합니다:
SDK에는 PHP 8.1.0 이상과 Composer가 필요합니다. 프로젝트의 PSR-18 HTTP client(예: Guzzle)를 통해 요청을 보내며, php-http/discovery를 사용하여 해당 client를 찾습니다.

빠른 시작

client를 생성한 다음 checkout session을 생성합니다:
bearerToken을 생략하면 client가 DODO_PAYMENTS_API_KEY 환경 변수를 읽습니다. baseUrl을 생략하면 client가 DODO_PAYMENTS_BASE_URL를 읽으며, 해당 값도 설정되지 않은 경우 live mode(https://live.dodopayments.com)에 연결합니다. test mode API key는 test mode URL인 https://test.dodopayments.com에서만 작동합니다.
API key는 환경 변수 또는 secrets manager에 보관하세요. 코드베이스에 노출하거나 version control에 커밋하지 마세요.

핵심 기능

PSR-4 Compliant

Composer는 PSR-4 autoloading으로 Dodopayments namespace를 로드합니다.

Modern PHP

PHP 8.1 이상을 대상으로 하며, typed parameter와 strict type을 사용합니다.

Extensive Testing

SDK repository에는 API service를 위한 test suite가 포함되어 있습니다.

Exception Handling

각 HTTP error status에 해당하는 exception class와 timeout 및 connection exception을 제공합니다.

Value Object

메서드는 named parameter를 사용하며, 기본값이 있는 parameter는 이름을 지정하여 전달해야 합니다. value object를 생성하려면 named parameter와 함께 static with constructor를 사용합니다:
각 value object에는 builder도 있습니다:
메서드는 ["productID" => "pdt_123", "quantity" => 1]와 같은 동일한 camelCase key를 사용하는 일반 array도 허용합니다. 응답 property도 $session->checkoutURL와 같이 camelCase name을 사용합니다.

Configuration

Client constructor는 bearerToken, webhookKey, baseUrl 및 requestOptions을 받습니다. 생략하면 환경 변수에서 DODO_PAYMENTS_API_KEY, DODO_PAYMENTS_WEBHOOK_KEY(사용자의 webhook signing secret) 및 DODO_PAYMENTS_BASE_URL를 읽습니다. webhook을 검증하려면 raw request body와 header를 $client->webhooks->unwrap($body, headers: $headers)에 전달합니다. webhook key로 signature를 확인하고, 파싱된 event를 반환하며, 확인에 실패하면 WebhookException를 throw합니다. headers을 생략하면 unwrap는 signature를 검증하지 않습니다. $client->webhooks->unsafeUnwrap($body)는 검증 없이 body를 파싱하므로 testing 용도로만 사용하세요. Webhooks를 참조하세요.

Retry Configuration

SDK는 기본적으로 일부 error를 짧은 exponential backoff와 함께 두 번 재시도합니다. 다음 error가 재시도를 트리거합니다:
  • Connection error (network connectivity problem)
  • 408 Request Timeout
  • 409 Conflict
  • 429 Rate Limit
  • 500+ Internal error
  • Timeout
client 또는 단일 request에서 requestOptions의 maxRetries을 설정합니다:
request는 기본적으로 60초 후 timeout됩니다. 제한을 변경하려면 동일한 requestOptions array에서 초 단위로 timeout을 설정합니다.

일반적인 작업

이 섹션의 예제는 Quick Start의 $client를 사용합니다.

Checkout Session 생성

checkout session을 생성한 다음 반환된 checkoutURL로 customer를 redirect합니다:
각 checkout URL은 한 번만 작동하며 24시간 후 만료됩니다. 모든 session option은 Checkout Sessions를 참조하세요.

Customer 관리

email address와 name으로 customer를 생성한 다음 ID로 조회합니다:

Subscription 처리

subscription을 생성한 다음 on-demand subscription인 경우 charge합니다.
POST /subscriptions(SDK의 subscriptions->create method)은 deprecated입니다. 기존 integration에서는 계속 작동하지만, 새로운 integration에서는 Checkout Session을 통해 subscription을 생성해야 합니다.
billing에는 두 글자의 ISO country code인 country만 필요합니다. 기존 customer를 연결하려면 AttachExistingCustomer::with(customerID: '...')을 전달하고, 새 customer를 생성하려면 NewCustomer::with(email: '...', name: '...')을 전달합니다. 두 class 모두 Dodopayments\Payments namespace에 있습니다. charge는 on-demand subscription에 사용되며, productPrice는 가장 작은 currency unit으로 표시됩니다.

Pagination

list method는 page object를 반환합니다. getItems()는 현재 page의 item을 반환하고, pagingEachItem()는 필요에 따라 추가 page를 요청하여 현재 page부터 모든 item을 반환합니다:
한 번에 한 page씩 이동하려면 hasNextPage() 및 getNextPage()을 호출합니다.

Error 처리

SDK가 API에 연결할 수 없거나 API가 4xx 또는 5xx status를 반환하면 SDK는 Dodopayments\Core\Exceptions\APIException의 subclass를 throw합니다:

Error Type

exception class는 원인에 따라 결정됩니다. 모든 class는 Dodopayments\Core\Exceptions namespace에 있습니다:
API call 주변에서 이러한 exception을 catch하여 애플리케이션이 명확한 message를 표시하거나 나중에 다시 시도할 수 있도록 하세요. 재시도 가능한 error의 경우 SDK는 자동 재시도가 실패한 후에만 throw합니다.

고급 사용법

문서화되지 않은 Endpoint

SDK method가 없는 endpoint를 호출하려면 $client->request를 사용합니다. SDK method와 동일한 authentication 및 retry를 적용합니다:

문서화되지 않은 Parameter

SDK에 정의되지 않은 parameter를 보내려면 requestOptions에 전달합니다:
문서화된 parameter와 이름이 같은 extra* parameter는 해당 parameter를 override합니다.

Framework Integration

Laravel

client를 service class로 감쌉니다. 이 예제에서는 configured environment에서 API URL을 설정합니다:
config/services.php에 설정을 추가합니다:

Symfony

constructor를 통해 API key를 받는 service를 생성합니다:
config/services.yaml에 service를 등록합니다:

Resources

GitHub Repository

소스 코드, release 및 전체 method 목록입니다.

API Reference

모든 endpoint, parameter 및 response입니다.

Discord Community

질문하고 다른 developer와 소통하세요.

Report Issues

bug를 신고하거나 feature를 요청하세요.

Support

PHP SDK에 대한 도움이 필요하면 다음을 이용하세요:

Contributing

기여하려면 contributing guidelines를 읽어보세요.
마지막 수정일 2026년 9월 26일