実装方法を設定する
Stripe Terminal SDK またはサーバー主導型の組み込みを設定して、対面決済の受け付けを開始できるようにします。
Android SDK の使用を開始するには、以下の 4 つのステップが必要です。
- アプリに SDK をインストールします。
- アプリを設定します。
- アプリとバックエンドで接続トークンのエンドポイントを設定します。
- アプリで SDK を初期化します。
SDK をインストールするクライアント側
注意
アプリのライフサイクル全体で状態を保存したり、維持したりする際には Room が使用されるため、SDK はサポートライブラリーとの互換性がなくなりました。ご使用のアプリが AndroidX に移行されていることを確認してください。
SDK をインストールするには、アプリのビルドファイルの dependencies
ブロックに stripeterminal
を追加します。
次に、SDK は Java 8 を使用しているため、アプリのビルドファイルで対象の Java バージョンとして Java 8 を指定する必要があります。
注
SDK の最新リリースおよび過去バージョンの詳細については、GitHub の Releases ページをご覧ください。新しいリリースの公開時に通知を受け取るには、リポジトリーのリリースを確認してください。
Android SDK の以前のベータバージョンからの移行については、Stripe Terminal ベータの移行ガイドで詳細をご確認ください。
アプリを設定するクライアント側
ACCESS_
権限を有効化する必要があります。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_
権限が有効になっていることを確認します。
また、SDK が機能するには位置情報へのアクセス許可が必要になるため、アプリのユーザーがその許可を付与していることを確認してください。これを行うには、アプリで onRequestPermissionsResult
メソッドをオーバーライドして、アクセス許可の結果を確認します。
注
支払いに関連する不正使用のリスクを減らし、不審請求の申請を最小限に抑えるため、Stripe は支払いの発生場所を把握する必要があります。SDK が Android デバイスの場所を特定できない場合には、位置情報へのアクセスが復元されるまで支払いは無効になります。
ConnectionToken エンドポイントを設定するサーバー側クライアント側
サーバー側
リーダーに接続するには、バックエンドからご自身の Stripe アカウントに、リーダーを使用するための SDK 権限を付与する必要があります。それには、ConnectionToken (接続トークン) から secret (シークレット) を提供します。バックエンドは信頼できるクライアントに対してのみ、接続トークンを作成するようにする必要があります。
サーバー側の ConnectionToken
からシークレットを取得してクライアント側に渡します。
注意
ConnectionToken
の secret
により、お客様は任意の Stripe Terminal リーダーに接続して、Stripe アカウントで支払いを受け取ることができます。必ず、接続トークンの作成に使用するエンドポイントを認証し、クロスサイトリクエストフォージェリ (CSRF) から保護してください。
クライアント側
SDK にこのエンドポイントへのアクセス権を付与するには、アプリで ConnectionTokenProvider インターフェイスを実装します。このインターフェイスはバックエンドから ConnectionToken
をリクエストする単一の関数を定義します。
この関数は、SDK で Stripe またはリーダーの認証が必要になるたびに呼び出されます。また、リーダーへの接続に新しい接続トークンが必要な場合 (アプリがリーダーから切断されたときなど) にも呼び出されます。SDK がバックエンドから新しい接続トークンを取得できない場合、リーダーへの接続は失敗し、サーバーからエラーが返されます。
注意
接続トークンは、キャッシュに入れたり、ハードコード化しないでください。接続トークンのライフサイクルは、SDK によって管理されます。
証明書のピンニング
ほとんどの場合、アプリケーションで証明書のピンニングを設定する必要はありません。アプリケーションにこの機能が必要な場合は、証明書のピンニングに関するドキュメントをご覧ください。
SDK を初期化するクライアント側
Android SDK はライフサイクル対応です。メモリーリークを防止し、長期間実行される Terminal SDK プロセスのクリーンアップを適切に行うために、アプリケーションには、TerminalApplicationDelegate.
を使用して SDK にライフサイクルイベントを通知する Application
サブクラスを実装する必要があります。
注
Android のタッチ決済 (TTPA) を使用する場合、Application
での初期化は、この例とは若干異なります。TTPA を使用してリーダーに接続するをご覧ください。
Stripe Terminal SDK によって提供される Terminal クラスは、リーダーの検出、リーダーへの接続、リーダーでの操作の実行 (カートの詳細の表示、支払いの作成、将来の使用に備えたカードの保存など) のための汎用インターフェイスを表示します。
まずはじめに、現在のアプリケーションコンテキスト、ステップ 3 で実装した ConnectionTokenProvider、および TerminalListener オブジェクトを指定します。このリスナーを使用して、SDK からの支払いや接続ステータスの更新などのイベントを処理できます。
注意
1.
より前のバージョンからアップグレードする場合、TerminalLifecycleObserver
および Application
クラスが必須になりました。
SDK の更新
Stripe は定期的に、新機能、バグ修正、セキュリティー更新を含む更新をリリースしています。SDK は、新しいバージョンが利用可能になり次第すぐに更新してください。現在利用可能な SDK は以下のとおりです。
- Stripe Terminal Android SDK
- Stripe Terminal iOS SDK
- Stripe Terminal JavaScript SDK
- Stripe Terminal React Native SDK