설치
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에서만 작동합니다.
핵심 기능
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와 함께 staticwith constructor를 사용합니다:
["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
requestOptions의 maxRetries을 설정합니다:
requestOptions array에서 초 단위로 timeout을 설정합니다.
일반적인 작업
이 섹션의 예제는 Quick Start의$client를 사용합니다.
Checkout Session 생성
checkout session을 생성한 다음 반환된checkoutURL로 customer를 redirect합니다:
Customer 관리
email address와 name으로 customer를 생성한 다음 ID로 조회합니다:Subscription 처리
subscription을 생성한 다음 on-demand subscription인 경우 charge합니다.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을 반환합니다:
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에 있습니다:
고급 사용법
문서화되지 않은 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에 대한 도움이 필요하면 다음을 이용하세요:- Discord: 실시간 지원을 받으려면 community server에 참여하세요.
- Email: support@dodopayments.com으로 문의하세요.
- GitHub: repository에 issue를 등록하세요.