アプリケーションが 3.0.0 より前のバージョンの Terminal iOS SDK を使用している場合、アップグレードしてカードの対面支払いをグローバルに受け付けるために、いくつかの変更が必要です。バージョン 2.23.1 から 3.0.0 への変更点の詳細なリストについては、SDK 変更ログをご覧ください。
サポートされる最小バージョンを iOS 13 以降に更新
Stripe は、開発者に最適な体験を提供することを重視するため、SDK の最小サポートバージョンを定期的に更新しています。
Terminal iOS SDK の既存の 2.X バージョンでは、引き続き iOS 11 以降を実行するデバイスをサポートします。
DiscoveryConfiguration の使用方法を特定の DiscoveryConfiguration の実装向けに更新
さまざまな検出方法向けの設定に対応するため、SCPDiscoveryConfiguration は異なる複数のタイプで実装されるプロトコルになりました。DiscoveryMethod を提供する代わりに、特定のタイプのリーダーを検索するための個別のクラスから選択できるようになりました。
提供されたビルダークラスを使用して、目的の検出方法に適した検出設定を作成し、それを discoverReaders
に提供してください。ビルダーは、それぞれの設定でサポートされるプロパティのセッターを表示します。
discoverReaders と connectReader の使用方法の更新
discoverReaders
を呼び出すと、その他すべてのキャンセル方法と同様に、コード SCPErrorCanceled
のエラーで完了ブロックが呼び出されるようになりました。discoverReaders
は、connectReader
が呼び出されるとすぐに正しく完了されるようになりました。connectReader
が失敗した場合、リーダーの検出を再開するために、実装は discoverReaders
を新たに呼び出す必要があります。connectReader
を機能させるために、discoverReaders
を実行する必要はなくなりました。以前検出されたリーダーインスタンスを使用して connectReader
を呼び出すことも、discoverReaders
を再開することなく接続を再試行することもできます。
ReconnectionDelegate の実装を更新
SCPReconnectionDelegate
は Terminal インスタンスの代わりに再接続されているリーダーのインスタンスを提供するようになりました。このデリゲートを以前実装している場合、メソッド名の terminal
を reader
に置き換える必要があります。
ビルダーを使用するための、パラメーターと Configuration クラスの使用方法の更新
SCPCollectConfiguration
や SCPPaymentIntentParameters
などの入力クラスが変更不可能になり、それらを作成する関連ビルダーが含まれるようになりました。すべてのビルダーには、入力を検証し、構築するクラスを作成するビルドメソッドが含まれます。
- Swift では、
build()
がスローされ、エラーを確認する必要があります。 - Objective-C では、
NSError **
out パラメーターを指定して、該当する場合にエラーを受け取ります。
let paymentParams = try PaymentIntentParametersBuilder(amount: 100, currency: "cad")
.setCaptureMethod(.automatic)
.build()
SCPErrorBusy への依存を削除する
SCPErrorBusy
は削除されました。SDK 3.0.0 以降では、別のメソッドがまだ進行中の間に Terminal メソッドを呼び出すと、新しい呼び出しがキューに追加されるようになりました。コマンドは、前のコマンドがすべて完了した後で実行されます。以前 SCPErrorBusy
を防ぐために状態を追跡していた場合、または SCPErrorBusy
を解消するために自分で作成したコマンドをキューに追加していた場合は、コマンドキューを使用してコードをシンプルにできます。アプリケーションで SCPErrorBusy
を使用してコマンドが実行中であるかを把握していた場合は、コードを参照し、キューに入れるコマンドが多くなりすぎて問題が発生していなかったかを確認してください。
オフライン決済のサポートを確認する
オフライン決済では SCPPaymentIntent.stripeId
は null になります。構築済みのシステムがオンライン決済のみに対応している場合、stripeId
は常に表示されるため、ID が存在していることの確認以外に必要な変更はありません。オフライン時に支払いを処理する方法について、詳細はオフラインでカード支払いを回収するをご覧ください。
Terminal.shared.createPaymentIntent(params) { intent, error in
if let error = error {
}
guard let intentId = intent.stripeId else {
}
}
プロセス呼び出しを更新して確定する
SCPTerminal.processPayment
は SCPTerminal.confirmPaymentIntent
に名前が変わり、SCPTerminal.processRefund
は SCPTerminal.confirmRefund
に名前が変わりました。これらのメソッドのパラメーターに変更はありませんが、エラータイプはそれぞれ SCPConfirmPaymentIntentError
と SCPConfirmRefundError
に変更されています。
readReusableCard の使用を SetupIntents の使用に更新
SCPTerminal.readReusableCard
は削除されました。SetupIntents は、請求を行わずにカードを保存するための推奨パスです。SetupIntents は PaymentIntents と同様のパターンに従って、SDK で SetupIntent を作成、収集、確定します。詳細については、カードを保存してオンライン決済に使用するをご覧ください。