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だけで許可してはいけません。

外観のカスタマイズ

シートの閉じるボタン、表示スタイル、カラースキームを customizationstart(...) でカスタマイズできます。すべてのフィールドはオプションです。省略すると、customization は iOS のデフォルトの SFSafariViewController 外観を使用します。
DismissButtonStyle
閉じるボタンのラベルまたはアイコン:doneclose、または cancel
PresentationStyle
pageSheet はスワイプで閉じるカードとして表示されます。fullScreen は画面全体を覆います。
Bool
スクロール時にツールバーを折りたためるようにします。presentationStylefullScreen の場合のみ表示されます。pageSheet は、この設定にかかわらずバーを固定したままにします。
ColorScheme
デバイスのシステム設定にかかわらず、ライトまたはダークの外観を強制します:systemlight、または dark

エラー

startCheckoutError をスローするのは、誤用またはプラットフォームの障害が発生した場合のみです。キャンセルまたは拒否された支払いは常に結果として返され、例外にはなりません。
  • invalidCheckoutUrlINVALID_CHECKOUT_URL):有効な checkout.dodopayments.com セッション URL ではありません。
  • invalidReturnUrlINVALID_RETURN_URL):有効な絶対 URL ではありません。
  • alreadyInProgressALREADY_IN_PROGRESS):チェックアウトはすでに実行中です。
  • platformErrorPLATFORM_ERROR):予期しないプラットフォーム障害です。

放棄されたセッション

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

関連項目

Mobile Integration Guide

Android、React Native、Flutter でも同じコントラクトを使用します。

React Native SDK

iOS 上で同じ Swift コアをラップします。
最終更新日 2026年8月17日