リーダーに接続する
注
まだリーダーを選択していない場合は、利用可能な Terminal リーダーを比較して、ニーズに最適なリーダーを選択してください。
注
BBPOS WisePOS E リーダーまたは Stripe リーダー S700 などのスマートリーダーの場合、支払いの回収には JavaScript SDK ではなくサーバー主導型の実装を使用することをお勧めします。サーバー主導型の実装では、LAN 通信に依存せず Stripe API を使用して支払いを回収します。JavaScript SDK および SDI はオフラインでの実行に対応していません。ニーズに合う最適なプラットフォームの選択に役立つプラットフォームの比較をご覧ください。
スマートリーダーは Stripe リーダーソフトウェアを実行し、インターネットを介して Stripe と直接通信します。アプリをスマートリーダーに接続するには、以下の 3 つのステップが必要です。
リーダーを登録するサーバー側
アプリケーションをスマートリーダーに接続するには、事前にリーダーをアカウントに登録しておく必要があります。
ダッシュボードで登録する
一番シンプルな方法は、ダッシュボードでリーダーを追加することです。
- すでに場所を作成している場合は、それをクリックします。まだ作成していない場合は、+ 新規をクリックして作成します。
- リーダーセクションで、+ 新規をクリックします。
- Verifone P400 をお持ちの場合は、
0-7-1-3-9
の順にキーを入力すると、固有の登録コードが表示されます。BBPOS WisePOS E または Stripe リーダー S700 をお持ちの場合は、リーダー設定に移動し、ペアリングコードを生成をタップします。 - 指示に従ってコードを入力します。
API を使用して登録する
大規模なデプロイでは、現場のユーザーがそれぞれ新しいリーダーを受け取って設定できるようにします。アプリで、Stripe API を使用してリーダーを登録するフローを構築します。
- Verifone P400 をお持ちの場合は、
0-7-1-3-9
の順にキーを入力すると、固有の登録コードが表示されます。BBPOS WisePOS E または Stripe リーダー S700 をお持ちの場合は、リーダー設定に移動し、ペアリングコードを生成をタップします。 - ユーザーはアプリケーションにそのコードを入力します。
- アプリケーションはそのコードを Stripe に送信します。
リーダーが正しく登録されたことを確認するには、その場所で登録したリーダーをすべて一覧表示します。
リーダーを検出するクライアント側
アカウントにリーダーを登録したら、discoverReaders
メソッドを使用してすでに登録されているリーダーを検索し、POS アプリケーションに接続します。前の手順でリーダーを登録した location
を使用して、検索範囲を設定できます。
async function discoverReaders() { const config = {simulated: false, location:
} const discoverResult = await terminal.discoverReaders(config); if (discoverResult.error) { console.log('Failed to discover: ', discoverResult.error); } else if (discoverResult.discoveredReaders.length === 0) { console.log('No available readers.'); } else { // You should show the list of discoveredReaders to the // cashier here and let them select which to connect to (see below). connectReader(discoverResult); } }'{{LOCATION_ID}}'
リーダーに接続するクライアント側
POS アプリケーションをリーダーに接続するには、選択したリーダーで connectReader を呼び出します。
async function connectReader(discoverResult) { // Just select the first reader here. const selectedReader = discoverResult.discoveredReaders[0]; const connectResult = await terminal.connectReader(selectedReader); if (connectResult.error) { console.log('Failed to connect:', connectResult.error); } else { console.log('Connected to reader:', connectResult.reader.label); } }
複数の接続
const connectResult = await terminal.connectReader(reader, {fail_if_in_use: true});
fail_if_in_use は false (デフォルト) | fail_if_in_use は true | |
---|---|---|
リーダーが待機状態のときに新しい SDK から呼び出される connectReader | SDK からリーダーへの既存の接続は切断され、新しい SDK がリーダーに接続されます。接続されていた SDK が実行しようとしていた次のコマンドはリーダーのエラーで失敗し、そのアプリの onUnexpectedReaderDisconnect メソッドが呼び出されます。 | SDK からリーダーへの既存の接続は切断され、新しい SDK がリーダーに接続されます。接続されていた SDK が実行しようとしていた次のコマンドはリーダーのエラーで失敗し、そのアプリの onUnexpectedReaderDisconnect メソッドが呼び出されます。 |
リーダーが取引の処理中に新しい SDK から呼び出される connectReader | SDK からリーダーへの既存の接続は切断され、新しい SDK がリーダーに接続されます。接続されていた SDK が実行しようとしていた次のコマンドはリーダーのエラーで失敗し、そのアプリの onUnexpectedReaderDisconnect メソッドが呼び出されます。 | 受信する接続がリーダーのエラーで失敗します。SDK からリーダーへの既存の接続は切断されず、進行中のコマンドは続行されます。 |
複数のリーダーの環境で接続の中断を最小限に抑えるため、アプリケーションを初めて接続する際に fail_if_in_use
を true
に設定することをお勧めします。その後、接続が最初に失敗した場合に fail_if_in_use
を false
に設定してユーザーが接続を再試行できるようにします。このように設定すると、ユーザーの 1 人が使用中のリーダーに誤って接続しても、取引の処理が中断されることはありません。必要に応じて接続することもできます。
接続切断に対処する
リーダーが切断された場合に対処できるようにするため、お客様のアプリに UnexpectedReaderDisconnect
コールバックを実装する必要があります。
このコールバックの実装で、リーダーの接続が切断されたことをユーザーに知らせる UI を表示します。また、discoverReaders
を呼び出してリーダーのスキャンを開始し、再接続することができます。接続が切断されたリーダーへの再接続をアプリで自動的に試行したり、別のリーダーへの再接続を促す UI をユーザーに表示したりすることもできます。
リーダーでは、ネットワークへの接続が失われるとアプリとの接続が切断されることがあります。想定外の接続の切断をシミュレーションするには、リーダーの電源をオフにします。
const terminal = StripeTerminal.create({ onFetchConnectionToken: fetchConnectionToken, onUnexpectedReaderDisconnect: unexpectedDisconnect, }); function unexpectedDisconnect() { // Consider displaying a UI to notify the user and start rediscovering readers }
自動再接続
Stripe Terminal は、アプリケーションの起動時にリーダーに自動的に再接続しません。代わりに、リーダー ID を保存し、起動時に既知のリーダーへの接続を行うことで、再接続フローを構築できます。
- リーダーに正常に接続したら、シリアル番号を localStorage API などの永続的なデータ格納場所に保存します。
- アプリが起動したら、その永続的な格納場所に保存されているシリアル番号を確認します。確認できた場合は、
discoverReaders
メソッドを呼び出して、アプリケーションがそのリーダーを再度見つけられるようにします。 - 保存されたシリアル番号が検出されたリーダーのいずれかと一致する場合は、
discoverReaders
の呼び出しから返された一致するリーダーオブジェクトを使用して、そのリーダーへの接続を試してください。以前に接続したリーダーが見つからない場合は、検出プロセスを停止します。
検出および接続プロセス中に何らかの UI を表示して、自動再接続が実行されていることを示します。
BBPOS および Chipper™ の名称およびロゴは BBPOS Limited の米国および/またはその他の国における商標または登録商標です。Verifone® の名称およびロゴは Verifone の米国および/またはその他の国における商標または登録商標のいずれかです。これらの商標の使用は BBPOS または Verifone による何らかの承認を意味するものではありません。