Sequence、非同期呼び出しには suspend functions を使用します。
インストール
Gradle (Kotlin DSL)
依存関係をbuild.gradle.ktsに追加してください:
build.gradle.kts
Maven
依存関係をpom.xmlに追加してください:
pom.xml
SDK には Java 8 以降が必要です。JVM と Android で動作し、ProGuard および R8 の keep rules が同梱されています。
クイックスタート
client を作成してから、checkout session を作成します。fromEnv() は、DODO_PAYMENTS_BASE_URL または dodopayments.baseUrl で別途指定されていない限り、live mode に接続します。test mode を使用するには、Test Mode を参照してください。test mode API key は test mode でのみ機能します。
Core Features
Coroutines
async client の methods は
suspend functions であり、coroutine から呼び出します。Null Safety
存在しない可能性があるフィールドは、
Optional ではなく nullable types です。Sequences
synchronous client では、
autoPager() は Sequence を返します。これは反復処理に応じて追加のページを取得します。async client では、Flow を返します。Immutable Models
Model classes は immutable であり、
toBuilder() は変更された copy 用の builder を返します。Configuration
From Environment Variables
fromEnv() は environment variables または system properties から設定を読み取ります。system properties が優先されます。
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 pools があるため、client は 1 つ作成して再利用してください。
webhook を verify するには、raw request body と headers を client.webhooks().unwrap(UnwrapWebhookParams.builder().body(rawBody).headers(headers).build()) に渡します。このとき headers は com.dodopayments.api.core.http.Headers です。webhook key を使用して signature を確認し、parsed event を返します。検証に失敗すると DodoPaymentsWebhookException を throw します。headers がない場合、unwrap は signature を verify しません。client.webhooks().unsafeUnwrap(rawBody) は検証せずに body を parse するため、testing のみに使用してください。Webhooks を参照してください。
Manual Configuration
builder で各 option を設定します。Test Mode
test mode(https://test.dodopayments.com)を使用するには、builder で testMode() を呼び出します。
Timeouts and Retries
デフォルトでは、client は 2 回 retry し、1 分後に timeout します。connection errors と、status 408、409、429、または 500 以上の responses に対して、exponential backoff を使用して retry します。client で defaults を設定するか、単一の call にRequestOptions を渡します。
Common Operations
このセクションの examples では、Quick Start のclient を使用します。
Create a Checkout Session
checkout session を作成し、返された checkout URL に customer を redirect します。checkoutUrl() は nullable String? を返します。各 checkout URL は 1 回のみ使用でき、24 時間後に expires します。すべての session options については、Checkout Sessions を参照してください。
Create a Product
$29.99 の monthly subscription product を作成します。price は、通貨の最小単位で指定します。discountBps は discount を basis points で設定し、deprecated である discount field を置き換えます。
Activate License Key
device または installation 用の license key を activate します。key が activation limit に達している場合、API は422 を返し、SDK は UnprocessableEntityException を throw します。inactive key は 403(PermissionDeniedException)を返し、unknown key は 404(NotFoundException)を返します。
Handle Subscriptions
subscription を作成し、on-demand subscription の場合は charge します。billing に必要なのは、2 文字の ISO country code である country のみです。既存の customer を attach するには AttachExistingCustomer を使用し、customer を作成するには NewCustomer を使用します。charge は on-demand subscriptions 用で、productPrice は通貨の最小単位で指定します。Usage-Based Billing
Record Usage Events
customer の usage event を送信します。event のeventName を追跡する meters が、その event を aggregate します。
eventId は idempotency key であるため、各 event に一意の value を指定してください。1 つの request で最大 1,000 件の events を受け付けます。
Async Operations
Async Client
async client には synchronous client と同じ methods がありますが、そのほとんどはsuspend functions です。coroutine から呼び出します。
client.async() を呼び出し、その async version を取得することもできます。
Error Handling
error status の場合、SDK はDodoPaymentsServiceException の subclass を throw します。この subclass には statusCode()、headers()、body() があります。subclasses は、BadRequestException(400)、UnauthorizedException(401)、PermissionDeniedException(403)、NotFoundException(404)、UnprocessableEntityException(422)、RateLimitException(429)、InternalServerException(5xx)、および 409 などのその他の statuses 用の UnexpectedStatusCodeException です。
DodoPaymentsIoException を throw し、SDK が解釈できない responses は DodoPaymentsInvalidDataException を throw します。すべての SDK exceptions は DodoPaymentsException を extend します。
Functional Error Handling
functional error handling にはResult を使用します。
Android Integration
Kotlin SDKはserver SDKです。secret API keyで認証を行います。また、APKを持っている人は、そこにコンパイルされたkeyを抽出できるため、Androidアプリ内では決して使用しないでください。 Androidアプリで支払いを受け付けるには:- サーバー上で、このSDKを使ってcheckout sessionを作成し(Ktor Integrationを参照)、その
checkout_urlを返します。 - アプリでサーバーからその
checkout_urlを取得し、API keyを保持していないAndroid SDKで開きます。
Response Validation
デフォルトでは、予期しない型のプロパティを読み取った場合にのみ、SDKはDodoPaymentsInvalidDataExceptionをスローします。レスポンス全体を事前に確認するには、リクエストのvalidationを有効にするか、レスポンスでvalidate()を呼び出します。
Advanced Features
Proxy Configuration
proxy経由でリクエストを送信するには、builderにjava.net.Proxyを渡します。
Temporary Configuration
withOptionsは、変更された設定を持つclientを返します。このclientは、元のclientのconnection poolとthread poolを共有します。元のclientは変更されません。
Ktor Integration
clientを一度作成し、routeから呼び出します。Resources
GitHub Repository
ソースコード、リリース、完全なメソッド一覧。
API Reference
すべてのendpoint、parameter、response。
Discord Community
質問したり、ほかの開発者と交流したりできます。
Report Issues
バグを報告したり、機能をリクエストしたりできます。
Support
Kotlin SDKに関するサポートが必要な場合:- Discord: リアルタイムのサポートを受けるには、community serverに参加してください。
- Email: support@dodopayments.comにお問い合わせください。
- GitHub: repositoryでissueを作成してください。