本文へ移動
rdlabo.dev

設定

Stripe Terminal をインストールし、Capacitor のネイティブプロジェクトを同期します。

npm install @capacitor-community/stripe-terminal
npx cap sync

対象プラグインは @capacitor-community/stripe-terminal v8.2.1 です。公式デモ:

要件 最小バージョン
Capacitor 8
iOS 15.0
Android minSdkVersion 26

プラットフォームと接続方式

discoverReadersTerminalConnectTypes の値を受け取ります。対応状況はプラットフォームごとに異なります。

TerminalConnectTypes Web iOS Android
Internet 対応(唯一の対応方式) 対応 対応
Bluetooth 非対応 対応 対応
TapToPay 非対応 対応 対応
Usb 非対応 未実装 対応
HandOff 非対応 未実装 対応(Apps on Devices)
Simulated 非対応 discover方式として未実装 Bluetooth探索として扱う

対応する接続方式でシミュレーションリーダーを使う場合は、すべてのプラットフォームで initializeisTest: true を渡します。iOS や Web で TerminalConnectTypes.Simulated に依存せず、InternetBluetoothTapToPayisTest: true を組み合わせてください。

Web の discoverReadersInternet 以外を指定すると unavailable エラーで拒否されます。

プラットフォーム限定 API

API Web iOS Android
setTapToPayUxConfiguration no-op(ログのみ) 未実装 対応。initialize 後、connectReader 前に呼ぶ
isTapToPayAccountLinked 利用不可(例外) iOS 16.4以降、initialize 後に対応 未実装

設定手順と制限は Tap to Payを参照してください。

Web の no-op と未対応ライフサイクルメソッド

次のメソッドはプラグインインターフェースに存在しますが、Web の Stripe Terminal JS SDK は操作しません。

  • cancelDiscoverReaders — no-op
  • setSimulatorConfiguration — no-op
  • installAvailableUpdate — no-op
  • cancelInstallUpdate — no-op
  • rebootReader — no-op
  • cancelReaderReconnection — no-op
  • setTapToPayUxConfiguration — no-op

Web の isTapToPayAccountLinkedunavailable をスローします。

Web の Internet リーダーでは、initializediscoverReadersconnectReadergetConnectedReaderdisconnectReadercollectPaymentMethodcancelCollectPaymentMethodconfirmPaymentIntentsetReaderDisplayclearReaderDisplaysetConnectionToken と、接続・支払い状態のリスナーを利用できます。

Web の設定

追加設定は不要です。利用できるのは Internet リーダーだけです。

iOS の設定

プラグインの追加設定は不要です。iOS では USB、HandOff、setTapToPayUxConfiguration は未実装です。

Android の設定

android/app/src/main/AndroidManifest.xml に権限を追加します。

+ <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_SCAN" />
+ <uses-permission android:name="android.permission.BLUETOOTH_ADVERTISE" />
+ <uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />

実行時に ACCESS_FINE_LOCATION が許可されていない場合、discoverReaders は拒否されます。

さらに android/variables.gradleminSdkVersion26 に更新します。

  ext {
-    minSdkVersion = 24
+    minSdkVersion = 26

Stripe Reader S700 などの Stripe Android 端末向けアプリを開発し、TerminalConnectTypes.HandOff を使う場合は、Stripe のクライアント側セットアップガイドに従ってください。