설치
SDK를 Cargo로 프로젝트에 추가하세요:Cargo.toml에 추가하세요:
SDK에는 Rust 1.75 이상이 필요합니다.
빠른 시작
Client::from_env()는 DODO_PAYMENTS_API_KEY 환경 변수에서 API key를 읽습니다. client를 생성한 다음 checkout session을 생성하세요:
DODO_PAYMENTS_API_KEY가 설정되지 않은 경우 Client::from_env()는 Error::Config를 반환합니다. Environments에 설명된 것처럼 다른 environment를 선택하지 않으면 client는 live mode에 연결됩니다. test mode API key는 test mode에서만 작동합니다.
핵심 기능
Async First
Tokio와 reqwest를 기반으로 구축되었으며, 모든 request에
async/await를 사용합니다.Strong Typing
compile-time check를 위한 타입이 지정된 request 및 response struct입니다.
Auto-Pagination
모든 page의 항목을 stream하거나 한 번에 한 page씩 이동할 수 있습니다.
Configurable
각 client의 environment, base URL, timeout, retry count를 설정할 수 있습니다.
Configuration
Environment Variables
Client::from_env()는 DODO_PAYMENTS_API_KEY에서 API key를 읽습니다. DODO_PAYMENTS_BASE_URL를 설정하지 않으면 live mode URL을 사용합니다:
DODO_PAYMENTS_WEBHOOK_KEY를 읽지 않으며 webhook signature를 검증하는 method도 제공하지 않습니다. 이를 검증하려면 Webhooks를 따르세요.
client를 명시적으로 구성할 수도 있습니다. Client::new는 Result를 반환하므로, dodopayments::Result를 반환하는 function 내부에서 ?로 unwrap하세요:
Environments
SDK에는 두 가지 environment가 있습니다:
기본 base URL은
https://live.dodopayments.com입니다. hard-coded URL 대신 Environment enum을 사용하여 다른 environment를 선택하세요:
from_env()를 사용하면서 DODO_PAYMENTS_API_KEY에서 API key를 계속 읽되 다른 environment를 대상으로 지정하려면 config에서 environment를 재정의하세요:
Timeouts
기본 request timeout은 30초입니다.with_timeout를 사용하여 client의 timeout을 재정의하세요:
Retry-After header를 전송하면 해당 값을 기다립니다. retry count를 변경하려면 ClientConfig에서 with_max_retries를 호출하세요. 예를 들어 .with_max_retries(0)는 retry를 비활성화합니다.
일반적인 작업
이 section의 예제에서는 Quick Start의client를 사용합니다.
Checkout Session 생성
return URL을 사용하여 checkout session을 생성하세요:session.checkout_url로 redirect하세요. 각 checkout URL은 한 번만 작동하며 24시간 후 만료됩니다. 모든 session option은 Checkout Sessions를 참조하세요.
Customer 관리
email address와 name으로 customer를 생성한 다음 ID로 조회하세요:Subscription 처리
기존 customer에 대한 subscription을 생성합니다.billing에는 country만 필요하며, CountryCode::Us와 같은 CountryCode enum variant를 사용합니다. customer는 CustomerRequest enum입니다. 기존 customer에는 AttachExistingCustomer를 전달하고, 새 customer를 생성하려면 NewCustomer를 전달하세요. on-demand subscription에 요금을 청구하려면 SubscriptionsChargeParams body와 함께 client.subscriptions().charge().subscription_id(...)를 호출하세요. product_price와 같은 amount field는 통화의 가장 작은 단위로 표시됩니다(예: 2500는 $25.00).사용량 기반 Billing
Usage Event 수집
customer에 대한 usage event를 전송하세요:event_id는 idempotency key이므로 각 event에 고유한 값을 지정하세요. timestamp가 None이면 event는 현재 시간을 사용합니다.
Usage Event 나열
customer와 event name으로 filter링하여 event를 나열합니다. filter는 JSON query object에 입력합니다:Pagination
List endpoint는 타입이 지정된 page를 반환하며,items field에 현재 page의 결과가 저장됩니다. 모든 page의 항목을 stream하려면 into_stream를 호출하세요:
get_next_page를 호출하세요. 마지막 page 이후에는 None를 반환합니다:
Error Handling
모든 method는dodopayments::Result<T>를 반환합니다. 실패는 dodopayments::Error enum의 variant입니다. Api는 API의 error status, Http는 transport error, Json는 serialization error, Config는 configuration error를 나타내며, MissingPathParam 또는 MissingBody는 불완전한 request를 나타냅니다. API error와 transport error를 별도로 처리하려면 이를 match하세요:
문서화되지 않은 Endpoint
타입이 지정된 method가 없는 endpoint를 호출하려면 low-levelrequest builder를 사용하세요. 이 builder는 authentication과 base URL을 적용합니다. reqwest::Method의 이름을 지정하려면 dependency에 reqwest 0.12를 추가하세요:
리소스
GitHub Repository
source code, release 및 전체 method 목록입니다.
Crates.io
publish된 crate와 해당 version입니다.
API Reference
모든 endpoint, parameter 및 response입니다.
Discord Community
질문을 하고 다른 developer와 소통할 수 있습니다.
지원
Rust SDK에 대한 지원이 필요하면 다음을 이용하세요:- Discord: 실시간 지원을 받으려면 community server에 참여하세요.
- Email: support@dodopayments.com으로 문의하세요.
- GitHub: repository에 issue를 등록하세요.