インストール
ComposerでSDKをインストールします。SDKにはPHP 8.1.0以降とComposerが必要です。リクエストは、Guzzleなど、プロジェクト内のPSR-18 HTTP clientを介して送信されます。SDKは
php-http/discoveryを使用してこれを検出します。クイックスタート
クライアントを作成してから、チェックアウトセッションを作成します。bearerTokenを省略すると、クライアントはDODO_PAYMENTS_API_KEY環境変数を読み取ります。baseUrlを省略すると、クライアントはDODO_PAYMENTS_BASE_URLを読み取ります。これも設定されていない場合は、live mode(https://live.dodopayments.com)に接続します。test modeのAPI keyは、test modeのURLであるhttps://test.dodopayments.comでのみ機能します。
主な機能
PSR-4 Compliant
ComposerはPSR-4 autoloadingを使用して
Dodopayments namespaceを読み込みます。Modern PHP
PHP 8.1以降向けに構築されており、型付きパラメータとstrict typesに対応しています。
Extensive Testing
SDK repositoryには、API servicesのtest suiteが含まれています。
Exception Handling
各HTTP error statusに対応するexception classに加えて、timeoutおよびconnection exceptionがあります。
Value Objects
メソッドは名前付きパラメータを受け取ります。デフォルト値を持つパラメータは、名前を指定して渡す必要があります。value objectを作成するには、名前付きパラメータを指定してstaticwith constructorを使用します。
["productID" => "pdt_123", "quantity" => 1]のように、同じcamelCase keyを持つ通常の配列も受け付けます。レスポンスプロパティもcamelCase nameを使用します。たとえば$session->checkoutURLです。
Configuration
Client constructorは、bearerToken、webhookKey、baseUrl、requestOptionsを受け取ります。これらを省略すると、環境変数からDODO_PAYMENTS_API_KEY、DODO_PAYMENTS_WEBHOOK_KEY(webhook signing secret)、DODO_PAYMENTS_BASE_URLを読み取ります。
webhookを検証するには、raw request bodyとheadersを$client->webhooks->unwrap($body, headers: $headers)に渡します。これはwebhook keyでsignatureを確認し、解析済みのeventを返します。確認に失敗するとWebhookExceptionをthrowします。headersを省略すると、unwrapはsignatureを検証しません。$client->webhooks->unsafeUnwrap($body)は検証せずにbodyを解析するため、testingでのみ使用してください。Webhooksを参照してください。
Retry Configuration
SDKはデフォルトで、一部のエラーを短い指数バックオフを使用して2回retryします。次のエラーがretryの対象になります。- Connection errors(network connectivity problems)
- 408 Request Timeout
- 409 Conflict
- 429 Rate Limit
- 500+ Internal errors
- Timeouts
requestOptionsにmaxRetriesを設定します。
requestOptions arrayに、秒単位でtimeoutを設定します。
一般的な操作
このセクションの例では、Quick Startの$clientを使用します。
Checkout Sessionの作成
checkout sessionを作成し、返されたcheckoutURLにcustomerをredirectします。
Customerの管理
email addressとnameを指定してcustomerを作成し、その後IDで取得します。Subscriptionの処理
subscriptionを作成し、on-demand subscriptionの場合はそのsubscriptionにchargeします。billingには、2文字のISO country codeであるcountryだけが必要です。既存のcustomerを関連付けるにはAttachExistingCustomer::with(customerID: '...')を渡し、新しいcustomerを作成するにはNewCustomer::with(email: '...', name: '...')を渡します。両方のclassはDodopayments\Payments namespaceにあります。chargeはon-demand subscriptions用で、productPriceは通貨の最小単位で指定します。Pagination
List methodはpage objectを返します。getItems()は現在のpageのitemsを返し、pagingEachItem()は必要に応じて追加のpageをrequestしながら、現在のpage以降のすべてのitemを返します。
hasNextPage()とgetNextPage()を呼び出します。
Error Handling
SDKがAPIに接続できない場合、またはAPIが4xxもしくは5xx statusを返した場合、SDKはDodopayments\Core\Exceptions\APIExceptionのsubclassをthrowします。
Error Types
exception classは原因によって異なります。すべてのclassはDodopayments\Core\Exceptions namespaceにあります。
Advanced Usage
Undocumented Endpoints
SDK methodが存在しないendpointを呼び出すには、$client->requestを使用します。SDK methodと同じauthenticationおよびretryが適用されます。
Undocumented Parameters
SDKで定義されていないparametersを送信するには、requestOptionsに渡します。
documented parameterと同じ名前を持つ
extra* parameterは、その値を上書きします。Framework Integration
Laravel
clientをservice classでラップします。この例では、configured environmentからAPI URLを設定します。config/services.phpに追加します。
Symfony
constructorを介してAPI keyを受け取るserviceを作成します。config/services.yamlにserviceを登録します。
Resources
GitHub Repository
Source code、releases、完全なmethod listです。
API Reference
すべてのendpoint、parameter、responseです。
Discord Community
質問したり、他のdeveloperと交流したりできます。
Report Issues
bugを報告したり、featureをリクエストしたりできます。
Support
PHP SDKに関するサポート:- Discord:リアルタイムのサポートを受けるには、community serverに参加してください。
- Email:support@dodopayments.comにお問い合わせください。
- GitHub:repositoryでissueを作成してください。