実装方法を設定する
Stripe Terminal SDK またはサーバー主導型の組み込みを設定して、対面決済の受け付けを開始できるようにします。
iOS SDK の使用を開始する際に必要なステップは以下の 4 つです。
- アプリに SDK をインストールします。
- アプリを設定します。
- アプリとバックエンドで接続トークンのエンドポイントを設定します。
- アプリで SDK を初期化します。
SDK をインストールするクライアント側
Stripe Terminal iOS SDK は、次のようなアプリと互換性があります。
- iOS 13 以上をサポートしている
- CocoaPods、Swift Package Manager を使用するか、手動でフレームワークを導入することによってインストールされている
注
SDK の最新リリースおよび過去バージョンの詳細については、GitHub の Releases ページをご覧ください。新しいリリースの公開時に通知を受け取るには、リポジトリーのリリースを確認するか、Github リリース RSS フィードに登録してください。
以前のバージョンの iOS SDK からの移行の詳細については、Stripe Terminal SDK 移行ガイドをご覧ください。
アプリを設定するクライアント側
アプリが Stripe Terminal SDK で動作するように準備するには、Xcode の Info.plist ファイルにいくつかの変更を加えます。
次のキーと値のペアを使用して位置サービスを有効にします。
プライバシー: Location When In Use Usage Description (使用されている位置の確認に関する記述) キー NSLocationWhenInUseUsageDescription 値 決済を受け付けるには、位置情報へのアクセスが必要です。 決済に関連する不正使用のリスクを減らし、不審請求の申請を最小限に抑えるため、Stripe は決済が発生した場所を把握する必要があります。SDK が iOS デバイスの場所を特定できない場合は、位置情報へのアクセスが復元されるまで決済無効化されます。
アプリがバックグラウンドで実行され、Bluetooth リーダーに接続されたままであることを確認してください。
Bluetooth リーダーに必要なバックグラウンドモード キー UIBackgroundModes 値 bluetooth-central (Bluetooth LE アクセサリーを使用) bluetooth-central バックグラウンドモードを設定すると、アプリがバックグラウンドで実行されている場合、または iOS デバイスがロックされている場合に、リーダーをスタンバイモードで保持することができます。この値がないと、スタンバイは失敗します。アプリがバックグラウンドで実行されている場合、リーダーは電力を節約するために自動的にオフになります。
アプリで Bluetooth に対する権限のダイアログを表示できるようにします。これは、アプリが Bluetooth リーダーへの接続に対応していない場合でも含める必要がある、アプリストアの必須要件です。
プライバシー: Bluetooth Always Usage Description (Bluetooth の常時使用に関する記述) キー NSBluetoothAlwaysUsageDescription 値 このアプリは、Bluetooth を使用してサポート対象のカードリーダーに接続します。 iOS 13 では、アプリによる Bluetooth 周辺機器の使用に関して、これまでよりも具体的な権限が新たに導入されました。Core Bluetooth とリンクするアプリは、初回起動時にアプリがクラッシュしないように、このキーを Info.plist ファイルに含める必要があります。
App Store に提出する際に、アプリの検証確認を渡します。SDK バージョン 3.4.0 では、この権限要件は削除されています。
プライバシー: Bluetooth Peripheral Usage Description (Bluetooth 周辺機器の使用に関する記述) キー NSBluetoothPeripheralUsageDescription 値 サポート対象のカードリーダーに接続するには、Bluetooth 接続が必要です。 これは一例です。アプリ内でのユーザーの権限を求めるプロンプトの文言を変更することもできます。
アプリの Info.plist を保存します。これで、正しく設定され、Stripe Terminal SDK で使用できるようになりました。
ConnectionToken エンドポイントを設定するサーバー側クライアント側
サーバー側
リーダーに接続するには、バックエンドからご自身の Stripe アカウントに、リーダーを使用するための SDK 権限を付与する必要があります。それには、ConnectionToken (接続トークン) から secret (シークレット) を提供します。バックエンドは信頼できるクライアントに対してのみ、接続トークンを作成するようにする必要があります。
サーバー側の ConnectionToken
からシークレットを取得してクライアント側に渡します。
注意
ConnectionToken
の secret
により、お客様は任意の Stripe Terminal リーダーに接続して、Stripe アカウントで支払いを受け取ることができます。必ず、接続トークンの作成に使用するエンドポイントを認証し、クロスサイトリクエストフォージェリ (CSRF) から保護してください。
クライアント側
SDK にこのエンドポイントへのアクセスを許可するには、アプリに ConnectionTokenProvider プロトコルを実装します。これは、バックエンドから ConnectionToken
を要求する単一の関数を定義します。
この関数は、SDK で Stripe またはリーダーの認証が必要になるたびに呼び出されます。また、リーダーへの接続に新しい接続トークンが必要な場合 (アプリがリーダーから切断されたときなど) にも呼び出されます。SDK がバックエンドから新しい接続トークンを取得できない場合、リーダーへの接続は失敗し、サーバーからエラーが返されます。
注意
接続トークンは、キャッシュに入れたり、ハードコード化しないでください。接続トークンのライフサイクルは、SDK によって管理されます。
証明書のピンニング
ほとんどの場合、アプリケーションで証明書のピンニングを設定する必要はありません。アプリケーションにこの機能が必要な場合は、証明書のピンニングに関するドキュメントをご覧ください。
SDK を初期化するクライアント側
Stripe Terminal SDK によって提供される Terminal クラスは、リーダーの検出、リーダーへの接続、リーダーでの操作の実行 (カートの詳細の表示、支払いの作成、将来の使用に備えたカードの保存など) のための汎用インターフェイスを表示します。
開始するには、ステップ 3 で実装された ConnectionTokenProvider
を提供します。アプリで setTokenProvider
を呼び出せるのは 1 回だけであり、Terminal.
にアクセスする前に呼び出す必要があります。AppDelegate の application:didFinishLaunchingWithOptions
メソッドで setTokenProvider
を呼び出すことをお勧めします。また、Objective-C で dispatch_
を使用するか、Swift で static
コンストラクターを使用することもできます。
SDK の更新
Stripe は定期的に、新機能、バグ修正、セキュリティー更新を含む更新をリリースしています。SDK は、新しいバージョンが利用可能になり次第すぐに更新してください。現在利用可能な SDK は以下のとおりです。
- Stripe Terminal Android SDK
- Stripe Terminal iOS SDK
- Stripe Terminal JavaScript SDK
- Stripe Terminal React Native SDK