これはSwift向けの公式Dodo Payments iOSチェックアウト SDKです。ネイティブブラウザビューでDodoのホスト型チェックアウトを開き、型付きの結果を返します。
Checkout Sessions API
バックエンドから、このSDKが開くcheckout_urlを作成します。
Mobile Integration Guide
これがモバイル決済フロー全体の中でどのように機能するかを確認します。
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を登録する必要があります。これをXcodeの Info → URL Types UIから追加することもできます。
Info.plistに追加します。Info.plist
使用方法
Return URLの転送
SFSafariViewControllerには、自身のreturn URLを捕捉するプロセス内の方法がありません。アプリで受信したURLをSDKに転送する必要があります。
- SwiftUI
- SceneDelegate
ここではすべてのURLを安全に転送できます。
handleOpenURLは、登録済みのreturnUrlに一致するURLに対してのみ動作し、それ以外の場合はfalseを返します。結果の意味
CheckoutStatus
必須
succeeded、failed、cancelled、pending、expiredのいずれかです。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にはなりません。
invalidCheckoutUrl(INVALID_CHECKOUT_URL):checkout.dodopayments.comのsession URLではありません。invalidReturnUrl(INVALID_RETURN_URL):有効なabsolute URLではありません。alreadyInProgress(ALREADY_IN_PROGRESS):checkoutがすでに実行中です。platformError(PLATFORM_ERROR):予期しないプラットフォーム障害です。
放棄されたセッション
アプリがチェックアウトの途中で終了した場合は、次回起動時にセッションを復元し、バックエンドと照合してください。
関連情報
Mobile Integration Guide
Android、React Native、Flutterにも同じ契約を適用します。
React Native SDK
iOS上で同じSwift coreをラップします。