実装方法を設定する
Android SDK の使用を開始するには、以下の 4 つのステップが必要です。
- アプリに SDK をインストールする
- アプリを設定する
- アプリとバックエンドで接続トークンのエンドポイントを設定する
- アプリで SDK を初期化する
SDK をインストールするクライアント側
注意
アプリのライフサイクル全体で状態を保存したり、維持したりする際には Room が使用されるため、SDK はサポートライブラリーとの互換性がなくなりました。ご使用のアプリが AndroidX に移行されていることを確認してください。
SDK をインストールするには、app/build.gradle ファイルの dependencies
ブロックに stripeterminal
を追加します。
次に、SDK は Java 8 を使用しているため、対象の Java バージョンとして (さらに build.gradle
にも) これを指定する必要があります。
注
SDK の最新リリースおよび過去バージョンの詳細については、GitHub の Releases ページをご覧ください。新しいリリースの公開時に通知を受け取るには、リポジトリーのリリースを確認してください。
Android SDK の以前のベータバージョンからの移行については、Stripe Terminal ベータの移行ガイドで詳細をご確認ください。
アプリを設定するクライアント側
ACCESS_FINE_LOCATION
権限を有効化する必要があります。Bluetooth リーダーを接続するには、Bluetooth の権限も有効にする必要があります。以下に示すように、適切な権限をマニフェストに追加してください。
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.BLUETOOTH" android:maxSdkVersion="30" /> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" android:maxSdkVersion="30" /> <uses-permission android:name="android.permission.BLUETOOTH_CONNECT" /> <uses-permission android:name="android.permission.BLUETOOTH_SCAN" />
Terminal オブジェクトを初期化する前に以下のチェックを追加して、アプリで ACCESS_FINE_LOCATION
権限が有効になっていることを確認します。
また、SDK が機能するには位置情報へのアクセス許可が必要になるため、アプリのユーザーがその許可を付与していることを確認してください。これを行うには、アプリで onRequestPermissionsResult
メソッドをオーバーライドして、アクセス許可の結果を確認します。
注
支払いに関連する不正使用のリスクを減らし、不審請求の申請を最小限に抑えるため、Stripe は支払いの発生場所を把握する必要があります。SDK が Android デバイスの場所を特定できない場合には、位置情報へのアクセスが復元されるまで支払いは無効になります。
ConnectionToken エンドポイントを設定するサーバー側クライアント側
サーバー側
リーダーに接続するには、バックエンドからご自身の Stripe アカウントに、リーダーを使用するための SDK 権限を付与する必要があります。それには、ConnectionToken (接続トークン) から secret (シークレット) を提供します。バックエンドは信頼できるクライアントに対してのみ、接続トークンを作成するようにする必要があります。
サーバ側の ConnectionToken からシークレットを取得してクライアント側に渡します。
注意
ConnectionToken のシークレットを使用すると、任意の Stripe Terminal リーダーに接続して、Stripe アカウントで支払いを受け取ることができます。必ず、接続トークンの作成に使用するエンドポイントを認証し、クロスサイトリクエストフォージェリ (CSRF) から保護してください。
クライアント側
SDK にこのエンドポイントへのアクセス権を付与するために、アプリに ConnectionTokenProvider インターフェイスを実装します。このインターフェイスはバックエンドから ConnectionToken をリクエストする単一の関数を定義します。
この関数は、SDK で Stripe またはリーダーの認証が必要になるたびに呼び出されます。また、リーダーへの接続に新しい接続トークンが必要な場合 (アプリがリーダーから切断されたときなど) にも呼び出されます。SDK がバックエンドから新しい接続トークンを取得できない場合、リーダーへの接続は失敗し、サーバーからエラーが返されます。
注意
接続トークンは、キャッシュに入れたり、ハードコード化しないでください。接続トークンのライフサイクルは、SDK によって管理されます。
証明書のピンニング
ほとんどの場合、アプリケーションで証明書のピンニングを設定する必要はありません。アプリケーションにこの機能が必要な場合は、証明書のピンニングに関するドキュメントをご覧ください。
SDK を初期化するクライアント側
Android SDK はライフサイクル対応です。メモリーリークを防止し、長期にわたる Terminal SDK プロセスの適切なクリーンアップを行うため、アプリケーションには、TerminalApplicationDelegate
を使用して SDK にライフサイクルイベントを通知する Application
サブクラスを含める必要があります。
このサブクラスは、次のアクティビティーライフサイクルのコールバックを登録します。
Stripe Terminal SDK によって提供される Terminal クラスは、リーダーの検出、リーダーへの接続、支払いの作成、リーダーソフトウェアの更新のための汎用インターフェイスを表示します。
まず、現在のアプリケーションコンテキスト、ステップ 3 で実装された ConnectionTokenProvider、および TerminalListener オブジェクトを指定します。このリスナーを使用して、SDK からのイベント (接続解除など) を処理できます。詳細については、接続切断に対処するを参照してください。
注意
1.0.0-rc2
より前のバージョンからアップグレードする場合、TerminalLifecycleObserver
および Application
クラスが必須になりました。
SDK の更新
Stripe periodically releases updates which can include new functionality, bug fixes, and security updates. Update your SDK as soon as a new version is available. The currently available SDKs are:
- Stripe Terminal Android SDK
- Stripe Terminal iOS SDK
- Stripe Terminal JavaScript SDK
- Stripe Terminal React Native SDK