Optional、結果の反復処理にはStream、非同期呼び出しにはCompletableFutureを使用します。
インストール
Maven
依存関係をあなたのpom.xmlに追加します:
pom.xml
Gradle
依存関係をbuild.gradle.ktsに追加します。
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でのみ使用できます。
Core Features
Type Safety
コンパイル時のチェックに対応した、型付きのrequest classとresponse class。
Shared Client
1つのclientを作成し、複数のrequestで再利用できます。clientはconnection poolとthread poolを保持します。request objectとresponse objectはimmutableです。
Builder Pattern
すべてのrequest classにはbuilderがあり、
toBuilder()で変更したcopyを作成できます。Async Support
client.async()は、各methodがCompletableFutureを返すclientを返します。Configuration
Environment Variables
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から取得されます。1つのclientを作成して再利用してください。各clientは独自のconnection poolとthread poolを持つためです。
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を解析するため、テスト目的でのみ使用してください。Webhooksを参照してください。
Manual Configuration
builderで各optionを設定します。RequestOptions.builder().timeout(Duration.ofSeconds(30)).build()をmethodの2番目の引数として渡します。responseValidation(true)を使用すると、response全体が期待される型と一致するかを事前にチェックします。これを使用しない場合、SDKは想定外の型のpropertyを読み取ったときにのみDodoPaymentsInvalidDataExceptionをthrowします。
Test Mode
test mode(https://test.dodopayments.com)を使用するには、builderでtestMode()を呼び出します。
Common Operations
このセクションの例では、Quick Startで作成したclientを使用します。
Create a Checkout Session
checkout sessionを作成し、返されたcheckout URLにcustomerをredirectします。checkoutUrl()はOptional<String>を返します。各checkout URLは1回のみ使用でき、24時間後に期限切れになります。すべてのsession optionについては、Checkout Sessionsを参照してください。
Manage Customers
email address、name、metadataを指定してcustomerを作成し、IDで取得します。Handle Subscriptions
payment linkを指定してsubscriptionを作成し、on-demand subscriptionの場合はchargeします。productPriceは最小通貨単位で指定します。たとえばUSDではcent、INRではpaiseです。$25.00をchargeするには、2500を渡します。Usage-Based Billing
Configure Meters
eventをカウントするmeterを作成し、meterを一覧表示します。autoPager()はすべてのmeterを反復処理し、必要に応じて追加のpageを取得します。
Ingest Usage Events
customerのusage eventを送信します。event metadataの値はJsonValue objectです。
eventIdはidempotency keyです。そのため、各eventには一意の値を指定してください。1時間を超えて過去の、または5分を超えて未来のtimestampは拒否されます。
Batch Ingest Events
1回のrequestで最大1,000件のeventを送信できます。この例では、前の例のimportを使用します。Error Handling
SDKはunchecked exceptionをthrowします。error statusの場合、DodoPaymentsServiceExceptionのsubclassをthrowします。このclassにはstatusCode()、headers()、body()があります。base classより前に、処理したいspecific classをcatchしてください。
UnexpectedStatusCodeExceptionをthrowします。network failureではDodoPaymentsIoExceptionを、SDKが解釈できないresponseではDodoPaymentsInvalidDataExceptionをthrowします。これらはすべてDodoPaymentsExceptionをextendしています。
Async Operations
clientでasync()を呼び出すと、非同期clientを取得できます。そのmethodはCompletableFutureを返します。
DodoPaymentsOkHttpClientAsync.fromEnv()を使用します。
Spring Boot Integration
Configuration Class
1つのclientをbeanとして登録し、propertyからenvironmentを選択します。Service Layer
clientをserviceにinjectします。Resources
GitHub Repository
source code、release、methodの完全な一覧。
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を作成してください。