実装方法を設定する
iOS SDK の使用を開始する際に必要なステップは以下の 4 つです。
- アプリに SDK をインストールする
- アプリを設定する
- アプリとバックエンドで接続トークンのエンドポイントを設定する
- アプリで SDK を初期化する
SDK をインストールするクライアント側
The Stripe Terminal iOS SDK is compatible with apps that:
- Support iOS 13 and above
- Are installed with CocoaPods, Swift Package Manager, or by manually integrating the framework
注
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 デバイスがロックされている場合に、リーダーをスタンバイモードで保持することができます。この値がないと、スタンバイは失敗します。アプリがバックグラウンドで実行されている場合、リーダーは電力を節約するために自動的にオフになります。
Allow your app to display a Bluetooth permission dialog. The app store requires including this, even if your app doesn’t support connecting to Bluetooth readers.
プライバシー: Bluetooth Always Usage Description (Bluetooth の常時使用に関する記述) キー NSBluetoothAlwaysUsageDescription 値 このアプリは、Bluetooth を使用してサポート対象のカードリーダーに接続します。 iOS 13 introduced more specific permissions concerning an app’s use of Bluetooth peripherals. Apps that link with Core Bluetooth must include this key in their Info.plist file to prevent the app from crashing on its first launch.
Pass app validation checks when you submit it to the App Store. As of SDK version 3.4.0, this permission requirement is removed.
プライバシー: Bluetooth Peripheral Usage Description (Bluetooth 周辺機器の使用に関する記述) キー NSBluetoothPeripheralUsageDescription 値 Connecting to supported card readers requires Bluetooth access. これは一例です。アプリ内でのユーザーの権限を求めるプロンプトの文言を変更することもできます。
アプリの Info.plist を保存します。これで、正しく設定され、Stripe Terminal SDK で使用できるようになりました。
ConnectionToken エンドポイントを設定するサーバー側クライアント側
サーバー側
リーダーに接続するには、バックエンドからご自身の Stripe アカウントに、リーダーを使用するための SDK 権限を付与する必要があります。それには、ConnectionToken (接続トークン) から secret (シークレット) を提供します。バックエンドは信頼できるクライアントに対してのみ、接続トークンを作成するようにする必要があります。
サーバ側の ConnectionToken からシークレットを取得してクライアント側に渡します。
注意
ConnectionToken のシークレットを使用すると、任意の Stripe Terminal リーダーに接続して、Stripe アカウントで支払いを受け取ることができます。必ず、接続トークンの作成に使用するエンドポイントを認証し、クロスサイトリクエストフォージェリ (CSRF) から保護してください。
クライアント側
SDK にこのエンドポイントへのアクセスを許可するには、アプリに ConnectionTokenProvider プロトコルを実装します。これは、バックエンドから ConnectionToken を要求する単一の関数を定義します。
この関数は、SDK で Stripe またはリーダーの認証が必要になるたびに呼び出されます。また、リーダーへの接続に新しい接続トークンが必要な場合 (アプリがリーダーから切断されたときなど) にも呼び出されます。SDK がバックエンドから新しい接続トークンを取得できない場合、リーダーへの接続は失敗し、サーバーからエラーが返されます。
注意
接続トークンは、キャッシュに入れたり、ハードコード化しないでください。接続トークンのライフサイクルは、SDK によって管理されます。
証明書のピンニング
ほとんどの場合、アプリケーションで証明書のピンニングを設定する必要はありません。アプリケーションにこの機能が必要な場合は、証明書のピンニングに関するドキュメントをご覧ください。
SDK を初期化するクライアント側
Stripe Terminal SDK によって提供される Terminal
クラスは、リーダーの検出、リーダーへの接続、支払いの作成、リーダーソフトウェアの更新のための汎用インターフェイスを表示します。
開始するには、ステップ 3 で実装された ConnectionTokenProvider
を提供します。アプリで setTokenProvider
を呼び出せるのは 1 回だけであり、Terminal.shared
にアクセスする前に呼び出す必要があります。AppDelegate の application:didFinishLaunchingWithOptions
メソッドで setTokenProvider
を呼び出すことをお勧めします。また、Objective-C で dispatch_once
を使用するか、Swift で static
コンストラクターを使用することもできます。
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