Skip to main content
Kotlin SDK を使用すると、Kotlin アプリケーションから Dodo Payments REST API に typed access できます。全体を通して Kotlin types を使用しており、存在しない可能性があるフィールドには nullable values、結果の反復処理には Sequence、非同期呼び出しには suspend functions を使用します。

インストール

Gradle (Kotlin DSL)

依存関係をbuild.gradle.ktsに追加してください:
build.gradle.kts

Maven

依存関係をpom.xmlに追加してください:
pom.xml
SDK releases では API changes への対応が追加されます。最新バージョンを確認するには、Maven Central を参照してください。
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 でのみ機能します。
API keys は environment variables または secrets manager に保存してください。version control に commit しないでください。

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 が優先されます。
API key は 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 します。
POST /subscriptions(SDK の subscriptions().create() method)は deprecated です。既存の integrations では引き続き動作しますが、新しい integrations では Checkout Session を通じて subscriptions を作成してください。
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 から呼び出します。
synchronous client で 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 です。
Network failures は DodoPaymentsIoException を throw し、SDK が解釈できない responses は DodoPaymentsInvalidDataException を throw します。すべての SDK exceptions は DodoPaymentsException を extend します。

Functional Error Handling

functional error handling には Result を使用します。
runCatching は SDK exceptions を含むすべての exceptions を catch し、failed Result として返します。

Android Integration

Kotlin SDKはserver SDKです。secret API keyで認証を行います。また、APKを持っている人は、そこにコンパイルされたkeyを抽出できるため、Androidアプリ内では決して使用しないでください。 Androidアプリで支払いを受け付けるには:
  1. サーバー上で、このSDKを使ってcheckout sessionを作成し(Ktor Integrationを参照)、そのcheckout_urlを返します。
  2. アプリでサーバーからその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に関するサポートが必要な場合:

Contributing

貢献するには、contributing guidelinesをお読みください。
最終更新日 2026年9月26日