Skip to main content
これはSwift向けの公式Dodo Payments iOSチェックアウト SDKです。ネイティブブラウザビューでDodoのホスト型チェックアウトを開き、型付きの結果を返します。

Checkout Sessions API

バックエンドから、このSDKが開くcheckout_urlを作成します。

Mobile Integration Guide

これがモバイル決済フロー全体の中でどのように機能するかを確認します。
iOS SDKはDodoのホスト型チェックアウトをSFSafariViewControllerで開き、API keyを保持せず、Dodo APIを直接呼び出すこともありません。チェックアウトのロジックはすべてブラウザで実行され、SDKはビューのライフサイクルを管理し、return URLを取得するだけです。 iOS 16以降、Swift 6が必要です。

インストール

1

Add the Package

Xcodeで File → Add Package Dependencies に移動し、次を入力します。
バージョン1.0.0以降を選択します。または、Package.swiftに追加します。
Package.swift
2

Register a Callback URL Scheme

アプリは、チェックアウトからのreturn URLを受け取るためにURL schemeを登録する必要があります。これをInfo.plistに追加します。
Info.plist
Xcodeの Info → URL Types UIから追加することもできます。

使用方法

Return URLの転送

SFSafariViewControllerには、自身のreturn URLを捕捉するプロセス内の方法がありません。アプリで受信したURLをSDKに転送する必要があります。
ここではすべてのURLを安全に転送できます。handleOpenURLは、登録済みのreturnUrlに一致するURLに対してのみ動作し、それ以外の場合はfalseを返します。

結果の意味

result.statusはUI上のヒントであり、支払いの証明ではありません。すべての支払いを、payment.succeeded / subscription.active webhookを介してバックエンドで確認してください。
CheckoutStatus
必須
succeededfailedcancelledpendingexpiredのいずれかです。
String?
return URLに含まれている場合に設定されます。UIに表示しますが、アクセスの許可には使用しないでください。詳しくは以下の「支払いの確認」を参照してください。
String?
subscription checkoutの場合に設定されます。
[String]?
チェックアウトにlicense key productsが含まれている場合に設定されます。
String?
チェックアウトでemailが取得された場合に設定されます。
[String: String]
return URLのすべてのquery parameterをそのまま保持します。

支払いの確認

Webhooks

支払いが成功したとき、またはsubscriptionが有効になったとき、Dodo Paymentsはバックエンドを呼び出します。

Get Payment Detail

secret keyを使用してpaymentIdを検索し、そのstatusを直接確認します。
これらのいずれかによって支払いが確認された後にアクセスを許可してください。result.statusだけで許可してはいけません。

エラー

startは、誤用またはプラットフォーム障害の場合にのみCheckoutErrorをthrowします。キャンセルまたはdeclinedとなった支払いは常に結果として返され、exceptionにはなりません。
  • invalidCheckoutUrlINVALID_CHECKOUT_URL):checkout.dodopayments.comのsession URLではありません。
  • invalidReturnUrlINVALID_RETURN_URL):有効なabsolute URLではありません。
  • alreadyInProgressALREADY_IN_PROGRESS):checkoutがすでに実行中です。
  • platformErrorPLATFORM_ERROR):予期しないプラットフォーム障害です。

放棄されたセッション

アプリがチェックアウトの途中で終了した場合は、次回起動時にセッションを復元し、バックエンドと照合してください。

関連情報

Mobile Integration Guide

Android、React Native、Flutterにも同じ契約を適用します。

React Native SDK

iOS上で同じSwift coreをラップします。
最終更新日 2026年7月31日