# 画面上の入力を収集する Terminal を使用して、顧客から入力を収集します。 **リーダー:** [Stripe Reader S700/S710](https://docs.stripe.com/terminal/readers/stripe-reader-s700-s710.md)、[BBPOS WisePOS E](https://docs.stripe.com/terminal/readers/bbpos-wisepos-e.md) Terminal スマートリーダーを使用すると、入力フォームを表示して、顧客から情報を収集できます。6 つの入力タイプから選択でき、さまざまなユースケースで利用できます。 - `phone` または `email` 入力でロイヤルティ引き換えのための顧客識別子を収集し、バックエンドで処理します。 - `signature` 入力で権利放棄と同意を顧客に認めてもらいます。 - `selection` または `text` 入力で、アンケートへの回答を顧客に依頼します。 入力フォームは、支払い前、支払い後、支払いサイクル外のいつでも表示することができます。 ![サポートされている入力タイプ](https://b.stripecdn.com/docs-statics-srv/assets/collect-inputs-form-types.9715c2bbc0105378c9c4a5e8e1c4eb59.png) 対応している入力タイプ。 > `collect_inputs` を使用して、機密データ (保護された健康情報や顧客の決済カード情報など)、または法律によって制限されている情報を収集することはできません。 # サーバー主導型 > This is a サーバー主導型 for when terminal-sdk-platform is server-driven. View the full page at https://docs.stripe.com/terminal/features/collect-inputs?terminal-sdk-platform=server-driven. ## 入力を収集する Terminal のスマートリーダーを使用して入力を収集するには、[collect_inputs](https://docs.stripe.com/api/terminal/readers/collect_inputs.md) コマンドを使用します。API はリーダーと通信して、構築済みの UI を表示します。 ```curl curl https://api.stripe.com/v1/terminal/readers/{{TERMINALREADER_ID}}/collect_inputs \ -u "<>:" \ -d "inputs[0][type]"=signature \ -d "inputs[0][custom_text][title]"="Rental Agreement" \ -d "inputs[0][custom_text][description]"="Please sign below to indicate that you agree to the rental agreement." \ -d "inputs[0][custom_text][submit_button]"=Submit \ -d "inputs[0][required]"=true \ -d "inputs[1][type]"=selection \ -d "inputs[1][selection][choices][0][style]"=primary \ -d "inputs[1][selection][choices][0][text]"=Email \ -d "inputs[1][selection][choices][0][id]"=email_id \ -d "inputs[1][selection][choices][1][style]"=primary \ -d "inputs[1][selection][choices][1][text]"=Printed \ -d "inputs[1][selection][choices][1][id]"=printed_id \ -d "inputs[1][selection][choices][2][style]"=secondary \ -d "inputs[1][selection][choices][2][text]"="No thanks" \ -d "inputs[1][selection][choices][2][id]"=no_thanks_id \ -d "inputs[1][custom_text][title]"=Receipt \ --data-urlencode "inputs[1][custom_text][description]"="How would you like your receipt?" \ -d "inputs[1][required]"=true \ -d "inputs[2][type]"=email \ -d "inputs[2][custom_text][title]"="Enter your email" \ --data-urlencode "inputs[2][custom_text][description]"="We'll send updates on your order and occasional deals" \ -d "inputs[2][required]"=true \ -d "inputs[2][toggles][0][title]"="Opt-in for marketing emails" \ -d "inputs[2][toggles][0][default_value]"=enabled \ -d "metadata[order_number]"=12345 ``` ### カスタマイズ すべての入力タイプでデザインと動作をカスタマイズすることができます。 - 重要な入力が確実に収集されるように、[必須](https://docs.stripe.com/api/terminal/readers/collect_inputs.md#collect_inputs-inputs-required)として設定します。必須入力の場合、**スキップ**ボタンは非表示になります。 - [custom_text](https://docs.stripe.com/api/terminal/readers/collect_inputs.md#collect_inputs-inputs-custom_text) を使用して、リーダー画面で入力ごとに表示するテキストを指定し、顧客にコンテキストを提供します。 | フィールド名 | フィールドの場所 | 最大文字数 | | --------------- | ----------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------- | | `title` | [custom_text](https://docs.stripe.com/api/terminal/readers/collect_inputs.md#collect_inputs-inputs-custom_text-title) | 40 | | | `description` | [custom_text](https://docs.stripe.com/api/terminal/readers/collect_inputs.md#collect_inputs-inputs-custom_text-description) | `selection` フォームで使用する場合は 500、他のタイプのフォームで使用する場合は 100 | | `submit_button` | [custom_text](https://docs.stripe.com/api/terminal/readers/collect_inputs.md#collect_inputs-inputs-custom_text-submit_button) | 300 | | | `skip_button` | [custom_text](https://docs.stripe.com/api/terminal/readers/collect_inputs.md#collect_inputs-inputs-custom_text-skip_button) | 14 | | - テキストに改行 `` を加えて、書式を改善します。 - 顧客がブール値オプション、契約、またはオプトインを有効または無効にできる最大 4 つの [トグル](https://docs.stripe.com/api/terminal/readers/collect_inputs.md#collect_inputs-inputs-toggles) を追加します。 ![メールと選択フォームに含まれるトグル](https://b.stripecdn.com/docs-statics-srv/assets/collect-inputs-toggle.3183c0c14cc916374d588ba54ad34639.png) メールと選択フォームの切り替え | フィールド名 | フィールドの場所 | 最大文字数 | | ------------- | ------------------------------------------------------------------------------------------------------------------- | ------------------ | | `title` | [toggles](https://docs.stripe.com/api/terminal/readers/collect_inputs.md#collect_inputs-inputs-toggles-title) | 50、説明のトグル使用時は 25 | | `description` | [toggles](https://docs.stripe.com/api/terminal/readers/collect_inputs.md#collect_inputs-inputs-toggles-description) | 50、タイトルのトグル使用時は 25 | - [選択](https://docs.stripe.com/api/terminal/readers/collect_inputs.md#collect_inputs-inputs-selection)入力では、さらに詳細にカスタマイズすることができます。[選択項目](https://docs.stripe.com/api/terminal/readers/collect_inputs.md#collect_inputs-inputs-selection-choices)を指定する際、[style](https://docs.stripe.com/api/terminal/readers/collect_inputs.md#collect_inputs-inputs-selection-choices-style) パラメーターを使用して、選択項目の強調や強調解除ができます。 ![選択項目のスタイル](https://b.stripecdn.com/docs-statics-srv/assets/collect-inputs-choice-style.dc4d2fcb98ee649a29bc43df806c114a.png) 1 次および 2 次の選択項目のスタイル ### メタデータ リクエストには、顧客 ID や注文 ID などの[メタデータ](https://docs.stripe.com/api/terminal/readers/collect_inputs.md#collect_inputs-metadata)を含めることができます。リクエストペイロードには指定されたメタデータが含まれ、同期レスポンスと、成功イベントまたは失敗イベントの両方に表示されます。一意の識別子を含めることで、簡単に受信イベントを特定し、処理できるようになります。 ## 顧客とのやり取り リーダーが入力の収集を開始すると、リストから最初の入力が表示されます。先へ進むには、顧客は選択または署名を行うか、キーボードを使用して必要な入力を行う必要があります。入力がオプションである場合、顧客は次の入力リクエストにスキップすることができます。 顧客がすべての入力を完了すると、リーダーは 3 秒間にわたって移行状態に変わり、後続のリクエストを待ちます。3 秒経過しても後続のリクエストがなかった場合、リーダーはスプラッシュ画面に戻ります。 > お客様は、この機能の使用に対して適用され、該当する法律と規制のすべてを理解してこれに準拠する責任をすべて負うものとされ、その使用に関連して、規定に従い、必要なすべての同意、承認、ライセンス、権利および許可を取得する必要があります。Terminal スマートリーダ-によって収集される入力、またはスマートリーダーから表示される出力を使用して顧客と契約を結ぶ場合、または顧客に通知を提供する場合、その契約または通知の法的な妥当性と法的強制力を確保することは、お客様の責任になります。 ## 入力データを受信する 入力の収集またはスキップが完了すると、Stripe は、リクエストを Webhook エンドポイントに送信します。リクエストペイロードは、[collect_inputs](https://docs.stripe.com/api/terminal/readers/collect_inputs.md) を呼び出す場合のレスポンスと同じですが、いくつかのパラメーターが追加されています。 - 署名タイプの入力の場合、[値](https://docs.stripe.com/api/terminal/readers/object.md#terminal_reader_object-action-collect_inputs-inputs-signature-value)は、署名の画像を SVG 形式で[取得](https://docs.stripe.com/api/files/retrieve.md)する[ファイルの ID](https://docs.stripe.com/api/files/object.md#file_object-id) です。 - 選択タイプの入力の場合、[id](https://docs.stripe.com/api/terminal/readers/object.md#terminal_reader_object-action-collect_inputs-inputs-selection-id) と [text](https://docs.stripe.com/api/terminal/readers/object.md#terminal_reader_object-action-collect_inputs-inputs-selection-text) は、選択した選択肢の `id` と `text` に対応します。 - 電話、メール、テキスト、数値の各インプットの値は、顧客のレスポンスの文字列になります。 - 顧客がオプションの入力をスキップした場合、[skipped](https://docs.stripe.com/api/terminal/readers/object.md#terminal_reader_object-action-collect_inputs-inputs-skipped) パラメーターが `true` に設定されます。 - 各トグルの[値](https://docs.stripe.com/api/terminal/readers/object.md#terminal_reader_object-action-collect_inputs-inputs-toggles-value)には、`enabled` または `disabled` が設定されます。 以下の curl コマンドを例として使用して、収集した入力項目を受信する Webhook エンドポイントを作成します。 ```bash curl https://api.stripe.com/v1/webhook_endpoints \ -u <>: \ --header "Stripe-Version: 2025-05-28.basil;" \ --data-urlencode "url"="https://example.com/webhook/endpoint" \ --data-urlencode "api_version"="2025-05-28.basil;" \ --data-urlencode "enabled_events[]"="terminal.reader.action_succeeded" \ --data-urlencode "enabled_events[]"="terminal.reader.action_failed" ``` イベントに登録し、利用可能になり次第、収集済みの入力を受信します。また、バックエンドでイベントを使用できない場合、バックアップとしてリーダーから[イベントを取得](https://docs.stripe.com/api/terminal/readers/retrieve.md)することもできます。Stripe は、2 つの Webhook を送信して、リーダーのステータスをバックエンドに通知します。 - `terminal.reader.action_succeeded`: `collect_inputs` アクションが成功したときに送信されます。 - `terminal.reader.action_failed`: `collect_inputs` アクションが失敗したときに送信されます。これには、リーダー画面が 2 分間タッチされないと発生するタイムアウトが含まれます。 ## 署名の画像をダウンロードする 収集された署名の画像をダウンロードするには、[ファイルを取得](https://docs.stripe.com/api/files/retrieve.md)し、*シークレットキー* (Stripe APIs use your secret API key to authenticate requests from your server; you can use this key to make any API call on behalf of your account, such as creating a charge or performing a refund)を使用して [url](https://docs.stripe.com/api/files/object.md#file_object-url) にアクセスします。 > Stripe は、収集した署名の画像を 7 日間保存します。署名イメージを収集してから 7 日以上後に使用する必要がある場合は、ファイルをダウンロードして保存してください。顧客の署名の使用、保管、開示に適用されるすべての法律を理解して準拠することは、お客様の責任になります。 # Javascript > This is a Javascript for when terminal-sdk-platform is js. View the full page at https://docs.stripe.com/terminal/features/collect-inputs?terminal-sdk-platform=js. ## 入力を収集する - [collectInputs (JavaScript)](https://docs.stripe.com/terminal/references/api/js-sdk.md#collect-inputs) Terminal のスマートリーダーを使用して入力を収集するには、Terminal SDK で `collectInputs` を呼び出します。SDK はリーダーと通信して、構築済みの UI を表示します。一度に最大 5 件の入力を指定でき、リーダーはそれらを順番に収集します。顧客がデータを入力すると、SDK は収集したデータをプロミスで返します。 ```js const collectInputsParameters = { inputs: [ { formType: 'signature', title: 'Please sign', description: 'Please sign if you agree to the terms and conditions', skipButtonText: 'skip', submitButtonText: 'Submit signature', }, { formType: 'selection', title: 'Choose an option', description: 'Were you happy with our customer service?', required: true, selectionButtons: [ { style: 'primary', text: 'Yes', }, { style: 'secondary', text: 'No', }, ], toggles: [ { title: 'Sign up for promotional emails', defaultValue: 'enabled', }, ], }, ], }; const result = await this.terminal.collectInputs(collectInputsParameters); if ('error' in result) { // Placeholder for handling exception } // Placeholder for handling collected inputs ``` ### カスタマイズ すべての入力タイプでデザインと動作をカスタマイズすることができます。 - 重要な入力が確実に収集されるように、`required` として設定します。必須入力の場合、**スキップ**ボタンは非表示になります。 - `title` と `description` を使用して、リーダー画面で入力ごとに表示するテキストを指定し、顧客にコンテキストを提供します。 | フィールド名 | 最大文字数 | | --------------- | --------------------------------------------------- | | `title` | 40 | | `description` | `selection` フォームで使用する場合は 500、他のタイプのフォームで使用する場合は 100 | | `submit_button` | 30 | | `skip_button` | 14 | - テキストに改行 `` を加えて、書式を改善します。 - 最大 4 つのトグルを追加して、顧客がブール値のオプション、契約、またはオプトインを有効または無効にできるようにします。 ![メールと選択フォームに含まれるトグル](https://b.stripecdn.com/docs-statics-srv/assets/collect-inputs-toggle.3183c0c14cc916374d588ba54ad34639.png) トグルを含むメールアドレスと選択フォーム | フィールド名 | 最大文字数 | | ------------- | ------------------ | | `title` | 50、説明のトグル使用時は 25 | | `description` | 50、タイトルのトグル使用時は 25 | - `selection` タイプの入力では、`style` パラメーターを使用して `choices` の強調や強調解除ができます。 ![選択項目のスタイル](https://b.stripecdn.com/docs-statics-srv/assets/collect-inputs-choice-style.dc4d2fcb98ee649a29bc43df806c114a.png) プライマリ選択とセカンダリ選択の項目スタイル。 ## 顧客とのやり取り リーダーが入力の収集を開始すると、リストから最初の入力が表示されます。 顧客がすべての入力を完了すると、リーダーは 3 秒間にわたって移行状態に変わり、後続のリクエストを待ちます。3 秒経過しても後続のリクエストがなかった場合、リーダーはスプラッシュ画面に戻ります。 > お客様は、この機能の使用に対して適用され、該当する法律と規制のすべてを理解してこれに準拠する責任をすべて負うものとされ、その使用に関連して、規定に従い、必要なすべての同意、承認、ライセンス、権利および許可を取得する必要があります。Terminal スマートリーダ-によって収集される入力、またはスマートリーダーから表示される出力を使用して顧客と契約を結ぶ場合、または顧客に通知を提供する場合、その契約または通知の法的な妥当性と法的強制力を確保することは、お客様の責任になります。 ## 入力データを受信する すべての入力の収集またはスキップが完了すると、Terminal SDK は収集されたデータを返します。 - 署名タイプの入力に対して返されるデータは、SVG 形式の文字列になります。 - 選択タイプの入力に対して返されるデータは、選択されたボタンの `text` フィールドおよび `id` フィールドです。 - 電話、メール、テキスト、数値の各入力に対して返されるデータは、顧客のレスポンスの文字列になります。 - 顧客がオプションの入力をスキップした場合、`skipped` ブール値が `true` に設定されます。 - トグルごとに、入力トグルリストのインデックスに対応する `enabled`、`disabled`、または `skipped` が返されます。 Terminal SDK は、アクションのキャンセル、回収のタイムアウト、その他のエラーが発生した場合にエラーを返します。 ## 構築したシステムをテストする SDK のシミュレーションされたリーダーを使用して、実装をテストできます。入力情報の収集をテストする前に、まず[シミュレーションされたリーダーに接続](https://docs.stripe.com/terminal/payments/connect-reader.md?reader-type=simulated&terminal-sdk-platform=js)する必要があります。 シミュレーションされたリーダーは、以下のシナリオのシミュレーションに対応しています。 - 入力をスキップすることなく入力情報の収集に成功 - 不要な入力をすべてスキップして入力情報の収集に成功 - タイムアウトのため、入力情報の収集に失敗 入力情報の収集の成功をシミュレーションする場合、SDK はタイプに基づいて各入力にハードコード化された値を返します。 ```js // Simulated internet reader must already be connected collectInputsResult = { resultType: 'succeeded' as SimulatedCollectInputsResultType, skipBehavior: 'none' as SimulatedCollectInputsSkipBehavior, } as ISimulatedCollectInputsResultSucceeded; this.terminal.setSimulatorConfiguration({ collectInputsResult }); const collectInputsParameters = { inputs: // Placeholder for specifying the inputs you want to simulate collecting }; const result = await this.terminal.collectInputs(collectInputsParameters); if ('error' in result) { // Placeholder for handling exception } else { // Placeholder for handling collected inputs } ``` # iOS > This is a iOS for when terminal-sdk-platform is ios. View the full page at https://docs.stripe.com/terminal/features/collect-inputs?terminal-sdk-platform=ios. ## 入力を収集する - [collectInputs (iOS)](https://stripe.dev/stripe-terminal-ios/docs/Classes/SCPTerminal.html#/c:objc\(cs\)SCPTerminal\(im\)collectInputs:completion:) - [iOS SDK](https://docs.stripe.com/terminal/payments/setup-integration.md?terminal-sdk-platform=ios) `4.4.0` 以降 スマートリーダーが[オフラインで実行中](https://docs.stripe.com/terminal/features/operate-offline/overview.md?reader-type=internet)であっても顧客情報を収集できます。 Terminal のスマートリーダーを使用して入力を収集するには、Terminal SDK で `collectInputs` を呼び出します。SDK はリーダーと通信して、構築済みの UI を表示します。一度に最大 5 件の入力を指定でき、リーダーはそれらを順番に収集します。顧客がデータを入力すると、SDK は収集したデータをコールバックで返します。 #### Swift ```swift let signatureInput = try SignatureInputBuilder(title: "Please sign") .setStripeDescription("Please sign if you agree to the terms and conditions") .setSkipButtonText("skip form") .setSubmitButtonText("Submit signature") .build() let firstSelectionButton = try SelectionButtonBuilder(style: .primary, text: "Yes", id: "yes_id") .build() let secondSelectionButton = try SelectionButtonBuilder(style: .secondary, text: "No", id: "no_id") .build() let firstToggle = try ToggleBuilder(defaultValue: .enabled) .setTitle("Sign up for promotional emails") .build() let selectionInput = try SelectionInputBuilder(title: "Choose an option") .setStripeDescription("Were you happy with our customer service?") .setRequired(true) .setSelectionButtons([firstSelectionButton, secondSelectionButton]) .setToggles([firstToggle]) .build() let collectInputsParams = try CollectInputsParametersBuilder( inputs: [signatureInput, selectionInput] ).build() let cancelable = Terminal.shared.collectInputs(collectInputsParams) { (collectInputsResult, error) in if let error = error { // Placeholder for handling error } else if let result = collectInputsResult { // Placeholder for handling collected inputs } } ``` ### カスタマイズ すべての入力タイプでデザインと動作をカスタマイズすることができます。 - 重要な入力が確実に収集されるように、`required` として設定します。必須入力の場合、**スキップ**ボタンは非表示になります。 - `title` と `description` を使用して、リーダー画面で入力ごとに表示するテキストを指定し、顧客にコンテキストを提供します。 | フィールド名 | 最大文字数 | | --------------- | --------------------------------------------------- | | `title` | 40 | | `description` | `selection` フォームで使用する場合は 500、他のタイプのフォームで使用する場合は 100 | | `submit_button` | 30 | | `skip_button` | 14 | - テキストに改行 `` を加えて、書式を改善します。 - 最大 4 つのトグルを追加して、顧客がブール値のオプション、契約、またはオプトインを有効または無効にできるようにします。 ![メールと選択フォームに含まれるトグル](https://b.stripecdn.com/docs-statics-srv/assets/collect-inputs-toggle.3183c0c14cc916374d588ba54ad34639.png) トグルを含むメールアドレスと選択フォーム | フィールド名 | 最大文字数 | | ------------- | ------------------ | | `title` | 50、説明のトグル使用時は 25 | | `description` | 50、タイトルのトグル使用時は 25 | - `selection` タイプの入力では、`style` パラメーターを使用して `choices` の強調や強調解除ができます。 ![選択項目のスタイル](https://b.stripecdn.com/docs-statics-srv/assets/collect-inputs-choice-style.dc4d2fcb98ee649a29bc43df806c114a.png) プライマリ選択とセカンダリ選択の項目スタイル。 ## 顧客とのやり取り リーダーが入力の収集を開始すると、リストから最初の入力が表示されます。 顧客がすべての入力を完了すると、リーダーは 3 秒間にわたって移行状態に変わり、後続のリクエストを待ちます。3 秒経過しても後続のリクエストがなかった場合、リーダーはスプラッシュ画面に戻ります。 > お客様は、この機能の使用に対して適用され、該当する法律と規制のすべてを理解してこれに準拠する責任をすべて負うものとされ、その使用に関連して、規定に従い、必要なすべての同意、承認、ライセンス、権利および許可を取得する必要があります。Terminal スマートリーダ-によって収集される入力、またはスマートリーダーから表示される出力を使用して顧客と契約を結ぶ場合、または顧客に通知を提供する場合、その契約または通知の法的な妥当性と法的強制力を確保することは、お客様の責任になります。 ## 入力データを受信する すべての入力の収集またはスキップが完了すると、Terminal SDK は収集されたデータを返します。 - 署名タイプの入力に対して返されるデータは、SVG 形式の文字列になります。 - 選択タイプの入力に対して返されるデータは、選択されたボタンの `text` フィールドおよび `id` フィールドです。 - 電話、メール、テキスト、数値の各入力に対して返されるデータは、顧客のレスポンスの文字列になります。 - 顧客がオプションの入力をスキップした場合、`skipped` ブール値が `true` に設定されます。 - トグルごとに、入力トグルリストのインデックスに対応する `enabled`、`disabled`、または `skipped` が返されます。 Terminal SDK は、アクションのキャンセル、回収のタイムアウト、その他のエラーが発生した場合にエラーを返します。 ## 構築したシステムをテストする SDK のシミュレーションされたリーダーを使用して、実装をテストできます。入力情報の収集をテストする前に、まず[シミュレーションされたインターネットリーダーに接続](https://docs.stripe.com/terminal/payments/connect-reader.md?reader-type=simulated&terminal-sdk-platform=ios)する必要があります。 シミュレーションされたリーダーは、以下のシナリオのシミュレーションに対応しています。 - 入力をスキップすることなく入力情報の収集に成功 - 不要な入力をすべてスキップして入力情報の収集に成功 - タイムアウトのため、入力情報の収集に失敗 入力情報の収集の成功をシミュレーションする場合、SDK はタイプに基づいて各入力にハードコード化された値を返します。 #### Swift ```swift // Simulated internet reader must already be connected Terminal.shared.simulatorConfiguration.simulatedCollectInputsResult = SimulatedCollectInputsResultSucceeded( simulatedCollectInputsSkipBehavior: .none ) let collectInputsParams = try CollectInputsParametersBuilder( inputs: // Placeholder for specifying the inputs you want to simulate collecting ).build() let cancelable = Terminal.shared.collectInputs(collectInputsParams) { (collectInputsResult, error) in if let error = error { // Placeholder for handling error } else if let result = collectInputsResult { // Placeholder for handling collected inputs } } ``` # Android > This is a Android for when terminal-sdk-platform is android. View the full page at https://docs.stripe.com/terminal/features/collect-inputs?terminal-sdk-platform=android. ## 入力を収集する - [collectInputs (Android)](https://stripe.dev/stripe-terminal-android/core/com.stripe.stripeterminal/-terminal/collect-inputs.html) - [Android SDK](https://docs.stripe.com/terminal/payments/setup-integration.md?terminal-sdk-platform=android) `4.3.0` 以降 スマートリーダーが[オフラインで実行中](https://docs.stripe.com/terminal/features/operate-offline/overview.md?reader-type=internet)であっても顧客情報を収集できます。 Terminal のスマートリーダーを使用して入力を収集するには、Terminal SDK で `collectInputs` を呼び出します。SDK はリーダーと通信して、構築済みの UI を表示します。一度に最大 5 件の入力を指定でき、リーダーはそれらを順番に収集します。顧客がデータを入力すると、SDK は収集したデータをコールバックで返します。 #### Kotlin ```kotlin val collectInputsParameters = CollectInputsParameters( inputs = listOf( SignatureInput.Builder(title = "Please sign") .setDescription("Please sign if you agree to the terms and conditions") .setSkipButtonText("skip") .setSubmitButtonText("Submit signature") .build(), SelectionInput.Builder(title = "Choose an option") .setDescription("Were you happy with our customer service?") .setRequired(true) .setSelectionButtons( listOf( SelectionButton( style = SelectionButtonStyle.PRIMARY, text = "Yes", id = "yes_id" ), SelectionButton( style = SelectionButtonStyle.SECONDARY, text = "No", id = "no_id" ) ) ) .setToggles( listOf( Toggle( title = "Sign up for promotional emails", defaultValue = ToggleValue.ENABLED ) ) ) .build() ) ) val cancelable = Terminal.getInstance().collectInputs( collectInputsParameters, object : CollectInputsResultCallback { override fun onSuccess(results: List) { // Placeholder for handling successful operation } override fun onFailure(e: TerminalException) { // Placeholder for handling exception } } ) ``` ### カスタマイズ すべての入力タイプでデザインと動作をカスタマイズすることができます。 - 重要な入力が確実に収集されるように、`required` として設定します。必須入力の場合、**スキップ**ボタンは非表示になります。 - `title` と `description` を使用して、リーダー画面で入力ごとに表示するテキストを指定し、顧客にコンテキストを提供します。 | フィールド名 | 最大文字数 | | --------------- | --------------------------------------------------- | | `title` | 40 | | `description` | `selection` フォームで使用する場合は 500、他のタイプのフォームで使用する場合は 100 | | `submit_button` | 30 | | `skip_button` | 14 | - テキストに改行 `` を加えて、書式を改善します。 - 最大 4 つのトグルを追加して、顧客がブール値のオプション、契約、またはオプトインを有効または無効にできるようにします。 ![メールと選択フォームに含まれるトグル](https://b.stripecdn.com/docs-statics-srv/assets/collect-inputs-toggle.3183c0c14cc916374d588ba54ad34639.png) トグルを含むメールアドレスと選択フォーム | フィールド名 | 最大文字数 | | ------------- | ------------------ | | `title` | 50、説明のトグル使用時は 25 | | `description` | 50、タイトルのトグル使用時は 25 | - `selection` タイプの入力では、`style` パラメーターを使用して `choices` の強調や強調解除ができます。 ![選択項目のスタイル](https://b.stripecdn.com/docs-statics-srv/assets/collect-inputs-choice-style.dc4d2fcb98ee649a29bc43df806c114a.png) プライマリ選択とセカンダリ選択の項目スタイル。 ## 顧客とのやり取り リーダーが入力の収集を開始すると、リストから最初の入力が表示されます。 顧客がすべての入力を完了すると、リーダーは 3 秒間にわたって移行状態に変わり、後続のリクエストを待ちます。3 秒経過しても後続のリクエストがなかった場合、リーダーはスプラッシュ画面に戻ります。 > お客様は、この機能の使用に対して適用され、該当する法律と規制のすべてを理解してこれに準拠する責任をすべて負うものとされ、その使用に関連して、規定に従い、必要なすべての同意、承認、ライセンス、権利および許可を取得する必要があります。Terminal スマートリーダ-によって収集される入力、またはスマートリーダーから表示される出力を使用して顧客と契約を結ぶ場合、または顧客に通知を提供する場合、その契約または通知の法的な妥当性と法的強制力を確保することは、お客様の責任になります。 ## 入力データを受信する すべての入力の収集またはスキップが完了すると、Terminal SDK は収集されたデータを返します。 - 署名タイプの入力に対して返されるデータは、SVG 形式の文字列になります。 - 選択タイプの入力に対して返されるデータは、選択されたボタンの `text` フィールドおよび `id` フィールドです。 - 電話、メール、テキスト、数値の各入力に対して返されるデータは、顧客のレスポンスの文字列になります。 - 顧客がオプションの入力をスキップした場合、`skipped` ブール値が `true` に設定されます。 - トグルごとに、入力トグルリストのインデックスに対応する `enabled`、`disabled`、または `skipped` が返されます。 Terminal SDK は、アクションのキャンセル、回収のタイムアウト、その他のエラーが発生した場合にエラーを返します。 ## 構築したシステムをテストする SDK のシミュレーションされたリーダーを使用して、実装をテストできます。入力情報の収集をテストする前に、まず[シミュレーションされたインターネットリーダーに接続する](https://docs.stripe.com/terminal/payments/connect-reader.md?reader-type=simulated&terminal-sdk-platform=android)必要があります。 シミュレーションされたリーダーは、以下のシナリオのシミュレーションに対応しています。 - 入力をスキップすることなく入力情報の収集に成功 - 不要な入力をすべてスキップして入力情報の収集に成功 - タイムアウトのため、入力情報の収集に失敗 入力情報の収集の成功をシミュレーションする場合、SDK はタイプに基づいて各入力にハードコード化された値を返します。 #### Kotlin ```kotlin // Simulated internet reader must already be connected Terminal.getInstance().simulatorConfiguration = SimulatorConfiguration( simulatedCollectInputsResult = SimulatedCollectInputsResult.SimulatedCollectInputsResultSucceeded( simulatedCollectInputsSkipBehavior = SimulatedCollectInputsSkipBehavior.NONE, ) ) val collectInputsParameters = CollectInputsParameters( // Placeholder for specifying the inputs you want to simulate collecting ) val cancelable = Terminal.getInstance().collectInputs( collectInputsParameters, object : CollectInputsResultCallback { override fun onSuccess(results: List) { // Placeholder for handling successful operation } override fun onFailure(e: TerminalException) { // Placeholder for handling exception } } ) ``` # React Native > This is a React Native for when terminal-sdk-platform is react-native. View the full page at https://docs.stripe.com/terminal/features/collect-inputs?terminal-sdk-platform=react-native. ## 入力を収集する - [collectInputs (React Native)](https://stripe.dev/stripe-terminal-react-native/api-reference/interfaces/StripeTerminalSdkType.html#collectInputs) スマートリーダーが[オフラインで実行中](https://docs.stripe.com/terminal/features/operate-offline/overview.md?reader-type=internet)であっても顧客情報を収集できます。 Terminal のスマートリーダーを使用して入力を収集するには、Terminal SDK で `collectInputs` を呼び出します。SDK はリーダーと通信して、構築済みの UI を表示します。一度に最大 5 件の入力を指定でき、リーダーはそれらを順番に収集します。顧客がデータを入力すると、SDK は収集したデータをプロミスで返します。 ```tsx const { collectInputs } = useStripeTerminal(); const collectInputsParameters = { inputs: [ { formType: FormType.SIGNATURE, title: 'Please sign', required: false, description: 'Please sign if you agree to the terms and conditions', skipButtonText: 'skip', submitButtonText: 'Submit signature', }, { formType: FormType.SELECTION, title: 'Choose an option', required: true, description: 'Were you happy with our customer service?', selectionButtons: [ { style: SelectionButtonStyle.PRIMARY, text: 'Yes' }, { style: SelectionButtonStyle.SECONDARY, text: 'No' }, ], toggles: [ { title: 'Sign up for promotional emails', defaultValue: ToggleValue.ENABLED, }, ], }, ], }; const response = await collectInputs(collectInputsParameters); if (response.error) { // Placeholder for handling exception } // Placeholder for handling collected inputs ``` ### カスタマイズ すべての入力タイプでデザインと動作をカスタマイズすることができます。 - 重要な入力が確実に収集されるように、`required` として設定します。必須入力の場合、**スキップ**ボタンは非表示になります。 - `title` と `description` を使用して、リーダー画面で入力ごとに表示するテキストを指定し、顧客にコンテキストを提供します。 | フィールド名 | 最大文字数 | | --------------- | --------------------------------------------------- | | `title` | 40 | | `description` | `selection` フォームで使用する場合は 500、他のタイプのフォームで使用する場合は 100 | | `submit_button` | 30 | | `skip_button` | 14 | - テキストに改行 `` を加えて、書式を改善します。 - 最大 4 つのトグルを追加して、顧客がブール値のオプション、契約、またはオプトインを有効または無効にできるようにします。 ![メールと選択フォームに含まれるトグル](https://b.stripecdn.com/docs-statics-srv/assets/collect-inputs-toggle.3183c0c14cc916374d588ba54ad34639.png) トグルを含むメールアドレスと選択フォーム | フィールド名 | 最大文字数 | | ------------- | ------------------ | | `title` | 50、説明のトグル使用時は 25 | | `description` | 50、タイトルのトグル使用時は 25 | - `selection` タイプの入力では、`style` パラメーターを使用して `choices` の強調や強調解除ができます。 ![選択項目のスタイル](https://b.stripecdn.com/docs-statics-srv/assets/collect-inputs-choice-style.dc4d2fcb98ee649a29bc43df806c114a.png) プライマリ選択とセカンダリ選択の項目スタイル。 ## 顧客とのやり取り リーダーが入力の収集を開始すると、リストから最初の入力が表示されます。 顧客がすべての入力を完了すると、リーダーは 3 秒間にわたって移行状態に変わり、後続のリクエストを待ちます。3 秒経過しても後続のリクエストがなかった場合、リーダーはスプラッシュ画面に戻ります。 > お客様は、この機能の使用に対して適用され、該当する法律と規制のすべてを理解してこれに準拠する責任をすべて負うものとされ、その使用に関連して、規定に従い、必要なすべての同意、承認、ライセンス、権利および許可を取得する必要があります。Terminal スマートリーダ-によって収集される入力、またはスマートリーダーから表示される出力を使用して顧客と契約を結ぶ場合、または顧客に通知を提供する場合、その契約または通知の法的な妥当性と法的強制力を確保することは、お客様の責任になります。 ## 入力データを受信する すべての入力の収集またはスキップが完了すると、Terminal SDK は収集されたデータを返します。 - 署名タイプの入力に対して返されるデータは、SVG 形式の文字列になります。 - 選択タイプの入力に対して返されるデータは、選択されたボタンの `text` フィールドおよび `id` フィールドです。 - 電話、メール、テキスト、数値の各入力に対して返されるデータは、顧客のレスポンスの文字列になります。 - 顧客がオプションの入力をスキップした場合、`skipped` ブール値が `true` に設定されます。 - トグルごとに、入力トグルリストのインデックスに対応する `enabled`、`disabled`、または `skipped` が返されます。 Terminal SDK は、アクションのキャンセル、回収のタイムアウト、その他のエラーが発生した場合にエラーを返します。