Optional, 결과 반복에는 Stream, 비동기 호출에는 CompletableFuture를 사용합니다.
설치
Maven
의존성을pom.xml에 추가하세요:
pom.xml
Gradle
build.gradle.kts에 dependency를 추가합니다:
build.gradle.kts
SDK에는 Java 8 이상이 필요하므로 Java 11, 17, 21에서도 실행됩니다.
빠른 시작
client를 생성한 다음 checkout session을 생성합니다:fromEnv()는 DODO_PAYMENTS_BASE_URL 또는 dodopayments.baseUrl에서 별도로 지정하지 않는 한 live mode에 연결됩니다. test mode를 사용하려면 Test Mode를 참조하세요. test mode API key는 test mode에서만 작동합니다.
핵심 기능
Type Safety
컴파일 시 검사를 위한 타입이 지정된 request 및 response 클래스입니다.
Shared Client
client 하나를 생성하고 모든 request에서 재사용하세요. client가 connection pool과 thread pool을 유지합니다. Request 및 response 객체는 immutable입니다.
Builder Pattern
모든 request 클래스에는 builder가 있으며,
toBuilder()는 수정된 복사본을 생성합니다.Async Support
client.async()는 메서드가 CompletableFuture를 반환하는 client를 반환합니다.구성
환경 변수
fromEnv()는 다음 환경 변수를 읽거나 이에 해당하는 system property를 읽습니다. System property가 우선합니다:
.env
DODO_PAYMENTS_API_KEY 또는 dodopayments.apiKey에서 가져옵니다. Webhook signing secret은 DODO_PAYMENTS_WEBHOOK_KEY 또는 dodopayments.webhookKey에서, base URL은 DODO_PAYMENTS_BASE_URL 또는 dodopayments.baseUrl에서 가져옵니다. 각 client에는 자체 connection pool과 thread pool이 있으므로 client 하나를 생성하고 재사용하세요.
Webhook을 검증하려면 raw request body와 headers를 client.webhooks().unwrap(UnwrapWebhookParams.builder().body(rawBody).headers(headers).build())에 전달하세요. 여기서 headers는 com.dodopayments.api.core.http.Headers입니다. 이 메서드는 webhook key로 signature를 확인하고 파싱된 event를 반환하며, 그렇지 않으면 DodoPaymentsWebhookException를 throw합니다. headers 없이 unwrap를 사용하면 signature를 검증하지 않습니다. client.webhooks().unsafeUnwrap(rawBody)는 검증 없이 body를 파싱하므로 testing 목적으로만 사용하세요. Webhooks를 참조하세요.
수동 구성
builder에서 각 옵션을 설정합니다:RequestOptions.builder().timeout(Duration.ofSeconds(30)).build()를 전달하세요. responseValidation(true)는 전체 response가 예상된 type과 일치하는지 미리 확인합니다. 이 옵션이 없으면 SDK는 예상과 다른 type의 property를 읽을 때만 DodoPaymentsInvalidDataException를 throw합니다.
Test Mode
test mode(https://test.dodopayments.com)를 사용하려면 builder에서 testMode()를 호출합니다:
일반적인 작업
이 섹션의 예제는 Quick Start의client를 사용합니다.
Checkout Session 생성
checkout session을 생성한 다음 반환된 checkout URL로 customer를 redirect합니다:checkoutUrl()는 Optional<String>를 반환합니다. 각 checkout URL은 한 번만 작동하며 24시간 후 만료됩니다. 모든 session 옵션은 Checkout Sessions를 참조하세요.
Customer 관리
email address, name, metadata로 customer를 생성한 다음 ID로 조회합니다:Subscription 처리
payment link로 subscription을 생성한 다음 on-demand subscription인 경우 charge합니다.productPrice는 통화의 최소 단위로 표시됩니다. 예를 들어 USD에서는 cents, INR에서는 paise입니다. $25.00을 charge하려면 2500를 전달하세요.사용량 기반 Billing
Meter 구성
event를 계산하는 meter를 생성한 다음 meter 목록을 조회합니다.autoPager()는 모든 meter를 반복하며 필요한 경우 추가 page를 가져옵니다:
Usage Event 수집
customer의 usage event를 전송합니다. Event metadata 값은JsonValue 객체입니다:
eventId는 idempotency key이므로 각 event에 고유한 값을 지정하세요. 현재 시점보다 1시간 넘게 이전이거나 5분 넘게 이후인 timestamp는 거부됩니다.
Event 일괄 수집
한 번의 request로 최대 1,000개의 event를 전송합니다. 이 예제에서는 앞의 예제에서 import한 항목을 사용합니다:Error Handling
SDK는 unchecked exception을 throw합니다. error status인 경우DodoPaymentsServiceException의 subclass를 throw하며, 이 클래스에는 statusCode(), headers() 및 body()가 있습니다. 처리하려는 구체적인 클래스를 base class보다 먼저 catch하세요:
UnexpectedStatusCodeException를 throw합니다. Network failure는 DodoPaymentsIoException를 throw하고, SDK가 해석할 수 없는 response는 DodoPaymentsInvalidDataException를 throw합니다. 이 모든 class는 DodoPaymentsException를 extend합니다.
비동기 작업
client에서async()를 호출하면 asynchronous client를 가져옵니다. 해당 메서드는 CompletableFuture를 반환합니다:
DodoPaymentsOkHttpClientAsync.fromEnv()를 사용하세요.
Spring Boot 통합
구성 클래스
client 하나를 bean으로 등록하고 property에서 environment를 선택합니다:Service Layer
client를 service에 inject합니다:리소스
GitHub Repository
소스 코드, release 및 전체 메서드 목록입니다.
API Reference
모든 endpoint, parameter 및 response입니다.
Discord Community
질문하고 다른 developer와 소통하세요.
Report Issues
bug를 신고하거나 feature를 요청하세요.
Support
Java SDK에 대한 도움이 필요하면 다음을 이용하세요:- Discord: 실시간 지원을 받으려면 community server에 참여하세요.
- Email: support@dodopayments.com으로 문의하세요.
- GitHub: repository에 issue를 등록하세요.