Terminal SDK 移行ガイド
Stripe Terminal SDK の最新バージョンに移行する方法をご紹介します。
Stripe Terminal iOS SDK および Android SDK が更新され、API と動作への重要な変更がいくつか行われました。その一部については Stripe Terminal SDK のシステムアップグレードが必要になります。Stripe は、SDK 間の一貫性を向上させ、アプリケーションロジックとシステムを効率化するために、定期的にメジャーバージョンの更新を行い、システムの機能や動作に影響を与える変更を加えています。このガイドでは、システムのアップグレードに関わる最新の変更について解説します。
注
新しい Stripe Terminal の導入を構築する場合は、導入を設計するページをご参照ください。
バージョン 4.0.0 への移行
Stripe Terminal iOS SDK および Android SDK のバージョン 4.0.0 に関する変更点をいくつかご紹介します。
- 海外での支払い後に支払い情報を保存する
- POS 端末に支払い情報を保存する際の顧客の同意収集プロセスを更新することで、アメリカ国外でも支払い後に支払い情報を保存できるようになりました。
- スマートリーダーでの通信販売および電話注文 (MOTO) の支払いのサポートPreview
- この機能はプレビューです。アクセスをリクエストするには、stripe-terminal-betas@stripe.com までお問い合わせください。
- iOS プラットフォームのミニマムサポートバージョンに関する更新
- モバイルと Tap to Pay の予期しない切断が発生したリーダーの自動再接続機能がデフォルトで有効化 (リーダーの回復力の向上)
- リーダー接続機能と切断コールバックがすべてのリーダータイプで統合
アプリケーションが 4.0.0 より前のバージョンの Terminal Android SDK を使用している場合、更新してカードの対面支払いをグローバルに受け付けるには変更がいくつか必要です。バージョン 3.10.0 から 4.0.0 への変更点のリストについては、SDK 変更ログをご覧ください。
PaymentIntent 設定後のカードの保存システムに関する更新
対面支払いで PaymentIntent が成功した後に決済手段を保存する場合、システムを次のように更新する必要があります。
- Terminal の PaymentIntent を作成する際に、setup_future_usage パラメーターを渡します。これは、今後の支払いを同じカードを使用することを Stripe に通知します。
- また、allow_redisplay を
ALWAYS
またはLIMITED
にしてCollectConfiguration
に渡す必要があります。顧客の保存したカードを今後すべての決済フローで表示する場合はALWAYS
を、サブスクリプションのような最初に設定した用途でのみ使用する場合はLIMITED
を渡します。
支払い後にカードを保存する方法についてご紹介します。
SetupIntent の支払いを使用しないカードの保存システムに関する更新
SetupIntent と PaymentIntent 間、また対面取引とオンライン取引間でシステムの形が統一されるよう、以前まですべての SetupIntent トランザクションで必須だった customerConsentCollected
パラメーターを削除し、代わりに allowRedisplay
パラメーターを Terminal
の collectSetupIntentPaymentMethod
に追加しました。
請求なしで直接保存する方法についてご紹介します。
discoverReaders の使用に関する更新
リーダー検出の実行状況を示す新しい列挙値
DISCOVERING
を ConnectionStatus に追加しました。構築済みのシステムがこの新しい列挙値に対応できることを確認し、関連する情報を顧客に伝達してください。リーダー検出操作の複数同時処理を改善しました。以前までは、Terminal::discoverReaders を複数回呼び出すと、操作がキューに入れられていましたが、これは望ましくない処理であると判断しました。新しい
Terminal::discoverReaders
では、既存の操作の実行中に呼び出しが行われると、SDK が実行中の操作をキャンセルし、CANCELED_DUE_TO_INTEGRATION_ERROR エラーを返します。その後、discoverReaders の新しい操作が直ちに開始されます。スマートリーダーと Tap to Pay リーダーを検出すると、操作の終了時に
Terminal::discoverReaders
の完了コールバックが呼び出されるようになりました。この変更は、これらのリーダータイプに対するリーダー検出が長時間実行される操作ではないことを表しています。
リーダー接続の利用に関する更新
- リーダーの検出と接続で一貫したシステムパターンが保たれるように、リーダー接続メソッド (
connectBluetoothReader
、connectUsbReader
、connectInternetReader
、connectLocalMobileReader
、connectHandoffReader
) をすべて Terminal::connectReader に統合しました。正確な接続タイプは、指定された接続設定によって決定されます。 - モバイルリーダーでは、
readerListener
パラメーターが以前のconnectBluetoothReader
メソッドとconnectUsbReader
メソッドから削除され、代わりにそれぞれのConnectionConfiguration
オブジェクトに移動し、ReaderReconnectionListener
が置き換えられました。Tap to Pay リーダーでは、ReaderReconnectionListener
の代わりにTapToPayConnectionConfiguration
がTapToPayReaderListener
パラメーターを受け取るようになりました。 - 他のリーダータイプと同様に、スマートリーダーの
InternetConnectionConfiguration
もInternetReaderListener
が渡されることを想定されるようになりました。 これにより、リーダーの切断などのイベントがあった場合にシステムに警告が通知されます。 - ハンドオフモードのデバイスのアプリでは、
HandoffReaderListener
が以前のconnectHandoffReader
メソッドからパラメーターとして削除され、HandoffConnectionConfiguration
オブジェクトに移動しました。
リーダーのタイプ | 接続の設定 | リーダーリスナー |
---|---|---|
モバイルリーダー | BluetoothConnectionConfiguration | MobileReaderListener |
スマートリーダー | InternetConnectionConfiguration | InternetReaderListener |
タッチ決済 | TapToPayConnectionConfiguration | TapToPayReaderListener |
Apps on Devices | HandoffConnectionConfiguration | HandoffReaderListener |
移行前
移行後
詳しくは、リーダーへの接続に関する Stripeドキュメントをご覧ください。
モバイルリーダーと Tap to Pay リーダーで自動再接続がデフォルトで有効になりました
- モバイルリーダーおよび Tap to Pay リーダーの Terminal のシステムの回復力を高めるため、リーダーが予期せず切断された場合の自動再接続がデフォルトで有効になります。
- 再接続プロセスの間、ユーザーにリーダーの状態を知らせるために、アプリに通知を表示させることをお勧めします。リーダーの再接続メソッドを処理するために、
ReaderReconnectionListener
はそれぞれの ReaderListeners に引き継がれています。再接続イベントを処理するには、モバイルリーダーの場合MobileReaderListener
を、Tap to Pay リーダーの場合TapToPayReaderListener
を使用します。 LocalMobileConnectionConfiguration
、BluetoothConnectionConfiguration
、UsbConnectionConfiguration
の接続設定からReaderReconnectionListener
パラメーターを削除し、適切なReaderListener
に置き換えました。
独自のリーダー再接続ロジックを実装し、この動作を維持したい場合は、autoReconnectOnUnexpectedDisconnect を false
に設定して自動再接続をオフにします。
移行前
移行後
詳細については、自動再接続の試行に関する Stripe ドキュメントをご覧ください。
リーダー切断の処理に関する更新
- リーダーの切断が生じた場合に通知されるように、
TerminalListener::onUnexpectedReaderDisconnect
を削除して、すべてのリーダータイプの切断コールバックを統一しました。今後は、対応するリーダーの切断が通知されるよう、以下のリスナーのいずれかにonDisconnect
を実装してください:InternetReaderListener
、MobileReaderListener
、TapToPayReaderListener
、HandoffReaderListener
。モバイルリーダーの場合、DisconnectReason
で切断の理由を確認できます。
自動再接続が有効になっている場合、SDK がリーダーとの再接続に失敗して切断されると、onDisconnect
メソッドと onReaderReconnectFailed
メソッドの両方が呼び出されます。
移行前
移行後
詳しくは、切断の手動処理に関する Stripeドキュメントをご覧ください。
決済の受け付けシステムに関する更新
- 返された
Cancelable
オブジェクトを使用してTerminal::confirmPaymentIntent
をキャンセルできるようになりました。これは、確認プロセスが非同期である QR コード決済に有効です。同様に、Terminal::confirmSetupIntent
とTerminal::confirmRefund
もキャンセルできるようになりました。 Terminal::cancelPaymentIntent
またはTerminal::cancelSetupIntent
を呼び出した場合に、実行中の支払い処理がキャンセルされるようになりました。これは、PaymentIntent と SetupIntent のキャンセルフローを改善するために行われた変更です。PaymentIntent をキャンセルする前にTerminal::collectPaymentMethod
などの支払い処理を個別にキャンセルする必要はありません。PaymentIntent.
との一貫性を持たせるために、id SetupIntent.
の null 指定が可能になりました。id id
の値は引き続き表示されますが、コンパイルエラーを回避するために、SetupIntent.
がid null
になるケースをコードで安全に処理できるかご確認ください。
エラー処理に関する更新
TerminalException.
をスタンドアロンの列挙型TerminalErrorCode TerminalErrorCode
に移動しました。機能を維持するために、import ステートメントと Terminal のエラーコードの定義を更新してください。- 新しい Terminal のエラーコード
TerminalErrorCode.
を追加しました。これは、SDK が期限切れであり、スマートリーダーから返されたエラーを認識できない場合に発生します。このエラーを解決するには、Terminal SDK を更新する必要があります。GENERIC_ READER_ ERROR - Android のタッチ決済では、
Terminal::collectPaymentMethod
およびTerminal::collectSetupIntentPaymentMethod
が取引から 60 秒後にタイムアウトするようになりました。TerminalException
がエラーコードTerminalErrorCode.
で発生します。CARD_ READ_ TIMED_ OUT - Android のタッチ決済では、PIN の収集が支払いのためにリクエストされると、
ONLINE_
、OR_ OFFLINE_ PIN_ REQUIRED ApiError
が指定されたDECLINED_
ではなく、エラーコードBY_ STRIPE_ API FEATURE_
のNOT_ ENABLED_ ON_ ACCOUNT TerminalException
が発生します。
名称変更およびリファクタリングに関する更新
ReaderListener
はMobileReaderListener
に名前が変更されています。PaymentIntentParameters.
とBuilder SetupIntentParameter.
コンストラクターのBuilder allowedPaymentMethodTypes
パラメータの名前をpaymentMethodTypes
に変更しました。ReaderSoftwareUpdate,
で、UpdateTimeEstimate
をUpdateDurationEstimate
に、estimatedUpdateTime
をdurationEstimate
に名前を変更しました。これにより、インテントが把握しやすくなります。ReaderSoftwareUpdate::requiredAt
フィールド、OfflineDetails::storedAt
フィールド、OfflineSetupIntentDetails::storedAt
フィールドのjava.
リファレンスをミリ秒単位のタイムスタンプに変換しました。アプリケーションがこれらのタイムスタンプを正しく解釈できているかご確認ください。util. Date Location
オブジェクトのフィールドは編集できなくなりました。
Android のタッチ決済システムに関する更新
- Android のタッチ決済機能の Maven 座標が
com.
に変更されました。ビルドの依存関係を更新して、新しいアーティファクト名を指定する必要があります。古いものは更新されなくなります。stripe:stripeterminal-taptopay:4. 0. 0 - すべての
LocalMobile
の関数名とフィールド名をTapToPay
に変更しました。たとえば、LocalMobileDiscoveryConfiguration
はTapToPayDiscoveryConfiguration
に名前が変更されています。 TapToPayConnectionConfiguration
がTapToPayReaderListener
パラメーターを受け取るようになりました。このリスナーはReaderReconnectionListener
とReaderDisconnectionListener
の両方からイベントを引き継ぎ、リーダーイベントを処理するための統一メカニズムを提供します。- Tap to Pay 取引の収集に使用されるバックグラウンドアプリケーションプロセスの名前を変更しました。アプリケーションの ID の末尾に
:stripetaptopay
が配置されるようになります。