# その他の支払い方法 Terminal のリーダーに QR コードを表示して、サポートされている決済手段を受け付けます。 Terminal はカードに加えて、QR コードベースの [決済手段](https://docs.stripe.com/payments/payment-methods/overview.md) もサポートしています。顧客は QR コードをスキャンして、モバイルデバイスでチェックアウトを完了できます。 **対応している決済手段**: [WeChat Pay](https://docs.stripe.com/payments/wechat-pay.md)1、[Affirm](https://docs.stripe.com/payments/affirm.md)、[PayNow](https://docs.stripe.com/payments/paynow.md) **サポート対象のリーダー**: [スマートリーダー](https://docs.stripe.com/terminal/smart-readers.md)および [Tap to Pay リーダー](https://docs.stripe.com/terminal/tap-to-pay-readers.md) 1 WeChat Pay は、地域の制限により、日本の Terminal では利用できません。 > Connect アカウントは、各支払い方法で取引を行うために [必要な機能](https://docs.stripe.com/connect/account-capabilities.md#payment-methods) を備えている必要があります。[Affirm](https://docs.stripe.com/payments/affirm.md#connect)、[WeChat Pay](https://docs.stripe.com/payments/wechat-pay.md#connect)、および [PayNow](https://docs.stripe.com/payments/paynow.md#connect) との Connect 対応について詳しくはそれぞれのリンク先をご覧ください。 > > Stripe Terminal でカード以外の決済手段をテストするには、物理リーダーを使用します。シミュレートされたリーダーはサポートされていません。 > > すべての取引は、[offline](https://docs.stripe.com/terminal/features/operate-offline/overview.md) ではなく、正常に機能するネットワーク接続で行う必要があります。 ## スマートリーダーと Android のタッチ決済 - [setReaderDisplay (Android)](https://stripe.dev/stripe-terminal-android/core/com.stripe.stripeterminal/-terminal/set-reader-display.html) ディスプレイ内蔵の[スマートリーダー](https://docs.stripe.com/terminal/smart-readers.md)および [Android のタッチ決済](https://docs.stripe.com/terminal/tap-to-pay-readers.md)の場合、リーダーは QR コードを画面に直接表示します。 カード以外の決済手段のみを受け付ける場合、リーダーはカード決済手段で使用される**タップまたは挿入**のプロンプトをスキップできます。カード以外の決済手段を 1 つ有効にした場合は、リーダーが QR コードを直接読み込みます。それ以外の場合は、リーダーにカード以外の決済手段のオプションのリストが表示されます。 > #### アメリカのリーダー > > アメリカでは、カード以外の決済手段のみを使用してリーダーを展開する予定の場合、現時点では[カート詳細の表示](https://docs.stripe.com/terminal/features/display.md)はサポートされていません。カート詳細を表示すると、NFC ロゴが表示され、PaymentIntent を作成する前にカード詳細をトークン化する事前ディッピングがサポートされます。 ![追加の支払い方法を読み取るボタンが表示された、決済手段の収集画面](https://b.stripecdn.com/docs-statics-srv/assets/s700-more-ways-to-pay.dfa04185db8a0b70bb7b13e7a695a80d.png) 支払い方法の画面を収集する ![カード、Affirm、WeChat Pay で支払うためのボタンが表示された、決済手段の選択画面](https://b.stripecdn.com/docs-statics-srv/assets/s700-pay-with-screen.9c8f58c5a58e9db064085647d0151737.png) 決済手段の選択画面 ![支払いの読み込み画面](https://b.stripecdn.com/docs-statics-srv/assets/s700-loading-screen.5e0523a12d7a1fc5c4f6f511d0928163.png) 読み込み画面 ![WeChat Pay のスキャン用 QR コードが表示されている画面](https://b.stripecdn.com/docs-statics-srv/assets/s700-wechat-pay-qr-code.a63cff6f60892ec896f726a93b88c167.png) QR コードのスキャン画面 ![承認済みを表示する画面](https://b.stripecdn.com/docs-statics-srv/assets/s700-approved-screen.ae53ca99ba84aefbf2cb1aacf9ef1a2e.png) 承認済みの画面 ## iPhone のタッチ決済 [iPhone のタッチ決済](https://docs.stripe.com/terminal/tap-to-pay-readers.md)では、QR コードの表示をアプリで処理する必要があります。[実装の詳細](https://docs.stripe.com/terminal/payments/additional-payment-methods.md#handle-payment)をご覧ください。 # サーバー主導型 > This is a サーバー主導型 for when terminal-sdk-platform is server-driven. View the full page at https://docs.stripe.com/terminal/payments/additional-payment-methods?terminal-sdk-platform=server-driven. ## PaymentIntent を作成する QR コードインターフェイスでカード以外の決済手段を受け付けるには、[PaymentIntent を作成](https://docs.stripe.com/api/payment_intents.md)し、希望の決済手段タイプを `payment_method_types` パラメーターに含めます。 - チェックアウトフローで顧客にすべての支払い方法を提示するには、`card_present`とカード以外の支払い方法を組み合わせてください。[offline](https://docs.stripe.com/terminal/features/operate-offline/overview.md) 環境で主に運用する場合は、この機能を有効にすることをお勧めします。オフラインモードではカードのみがサポートされているためです。 - カードを使いたくない場合は、カード以外の支払い方法のみをサポートしてください。 - どの決済手段の決済フローに顧客を誘導するかがわかっている場合は、決済手段のタイプを 1 つ選択します。 ### キャプチャータイプ すべての決済手段が[手動キャプチャー](https://docs.stripe.com/terminal/payments/collect-card-payment.md#capture-payment)に対応しているわけではありません。次の表は、どの決済手段が手動キャプチャーに対応しているかを示しています。 | 決済手段 | 手動によるキャプチャー | | -------------- | ----------- | | `card_present` | ✓ サポート対象 | | `affirm` | ✓ サポート対象 | | `wechat_pay` | ❌ サポート対象外 | | `paynow` | ❌ サポート対象外 | 最も幅広い決済手段に対応するには、`capture_method` を `automatic` に設定して PaymentIntent を作成します。自動キャプチャーが必要な決済手段も受け付けながら、カード決済と Affirm の手動キャプチャーにも対応するには、ネストされた `payment_method_options.card_present` 属性の `capture_method` を `manual` に設定します。 ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=1000 \ -d currency=usd \ -d "payment_method_types[]=card_present" \ -d "payment_method_types[]=wechat_pay" \ -d capture_method=automatic \ -d "payment_method_options[card_present][capture_method]=manual" ``` ## 支払いを処理する カード決済とは異なり、QR コード決済の処理は非同期で行われます。QR コード決済手段で PaymentIntent を処理すると、Stripe はその決済に固有の QR コードを生成します。 決済を処理すると、リーダーに顧客の QR コードが表示され、顧客がモバイルデバイスでスキャンします。顧客がデバイスで決済を完了するとすぐに、リーダーが更新され、完了した決済が反映されます。 > リーダーが支払いの結果を表示するまでの所要時間は、使用された決済手段によって異なります。通常、リーダーは数秒後に更新されます。 QR コード決済は、支払いの即時処理と、収集と確定の 2 段階フローの両方に対応しています。 #### 即時に処理する - [PaymentIntent を処理する](https://docs.stripe.com/api/terminal/readers/process_payment_intent.md) 支払いを回収するには、作成した PaymentIntent の ID と、取引に使用するリーダーを指定して、Stripe にリクエストを送信します。 一部の決済手段 (例: [Affirm](https://docs.stripe.com/api/terminal/readers/process_payment_intent.md#process_payment_intent-process_config-return_url)) では、PaymentIntent を確定する際に [return_url](https://docs.stripe.com/api/terminal/readers/process_payment_intent.md#process_payment_intent-process_config-return_url) が必要です。これは、顧客が決済手段のアプリまたはサイトで決済を認証またはキャンセルした後にリダイレクトされる URL です。PaymentIntent の確定時に独自の [return_url](https://terminal-statics.stripe.com/terminal-checkout/assets/index.html) を指定できます。指定しない場合、Stripe がホストする汎用のランディングページが表示されます。 ```curl curl https://api.stripe.com/v1/terminal/readers/tmr_xxx/process_payment_intent \ -u "<>:" \ -d payment_intent=pi_xxx \ --data-urlencode "process_config[return_url]=https://my.store.com/payment-completed" ``` 支払いを処理すると、Stripe はすぐに、リーダーがアクションを受信した確認として、HTTP `200` ステータスコードでリクエストに応答します。ほとんどの場合、リクエストは `in_progress` ステータスの [reader (リーダー)](https://docs.stripe.com/api/terminal/readers.md) を返します。ただし、処理は非同期で行われるため、支払いがすぐに完了した場合、アクションのステータスに最終状態 (`succeeded` または `failed`) がすでに反映されていることがあります。 これと同時にリーダーの画面は、顧客にカードを挿入するか、QR コード決済を選択するように求める UI に切り替わります。QR コード決済の場合、デバイスで支払いを完了した顧客が支払いのステータスを更新します。[リーダーの状態を確認](https://docs.stripe.com/terminal/payments/collect-card-payment.md?terminal-sdk-platform=server-driven#verify-reader)するには、`terminal.reader.action_succeeded` Webhook をリッスンするか、リーダーと PaymentIntent のステータスをポーリングして、支払いのステータスを取得します。 ```curl curl https://api.stripe.com/v1/terminal/readers/tmr_xxx \ -u "<>:" ``` ```json { "id": "tmr_xxx", "object": "terminal.reader", ... "status": "online", "action": { "type": "process_payment_intent", "process_payment_intent": { "payment_intent": "pi_xxx" }, "status": "in_progress", "failure_code": null, "failure_message": null } } ``` #### 収集、検査、確認 ### PaymentMethod を収集する - [決済手段を収集する](https://docs.stripe.com/api/terminal/readers/collect_payment_method.md) 支払いを回収するには、作成した PaymentIntent の ID と、取引に使用するリーダーを指定して、Stripe にリクエストを送信します。 決済手段の収集を開始すると、Stripe はすぐに HTTP `200` ステータスコードでこのリクエストに応答し、`in_progress` のアクションステータスで[リーダー](https://docs.stripe.com/api/terminal/readers.md)に返します。これと同時にリーダーの画面は、顧客にカードを挿入するか、QR コード決済を選択するように求める UI に切り替わります。 ```curl curl https://api.stripe.com/v1/terminal/readers/tmr_xxx/collect_payment_method \ -u "<>:" \ -d payment_intent=pi_xxx ``` リーダーが決済手段のデータを収集すると、PaymentMethod はサーバー側の PaymentIntent に追加され、Reader オブジェクトに `action.collect_payment_method.payment_method` として保存されます。[リーダーの状態を確認](https://docs.stripe.com/terminal/payments/collect-card-payment.md?terminal-sdk-platform=server-driven#verify-reader)するには、`terminal.reader.action_updated` をリッスンするか、リーダーのアクションステータスをポーリングして、PaymentMethod を調べます。この時点で、選択する決済手段を決定し、PaymentMethod の他のデータを確認することが可能です。 ### PaymentIntent を処理する - [PaymentIntent を確定する](https://docs.stripe.com/api/terminal/readers/confirm_payment_intent.md) 決済手段が正常に収集されたら、PaymentIntent の処理に進むことができます。 PaymentIntent の確定は非同期で行われます。`terminal.reader.action_succeeded` Webhook をリッスンするか、リーダーと PaymentIntent のステータスをポーリングすることで、支払いのステータスを取得できます。 一部の決済手段 (例: [Affirm](https://docs.stripe.com/api/terminal/readers/process_payment_intent.md#confirm_payment_intent-confirm_config-return_url)) では、PaymentIntent を確定する際に [return_url](https://docs.stripe.com/api/terminal/readers/process_payment_intent.md#confirm_payment_intent-confirm_config-return_url) が必要です。これは、顧客が決済手段のアプリまたはサイトで決済を認証またはキャンセルした後にリダイレクトされる URL です。PaymentIntent の確定時に独自の [return_url](https://terminal-statics.stripe.com/terminal-checkout/assets/index.html) を指定できます。指定しない場合、Stripe がホストする汎用のランディングページが表示されます。 ```curl curl https://api.stripe.com/v1/terminal/readers/tmr_xxx/confirm_payment_intent \ -u "<>:" \ -d payment_intent=pi_xxx \ --data-urlencode "confirm_config[return_url]=https://my.store.com/payment-completed" ``` QR コード決済では、支払いの確定後にリーダーの画面が UI に切り替わり、顧客がスキャンするための QR コードが表示されます。デバイスで支払いを完了した顧客が支払いを更新すると、`terminal.reader.action_succeeded` イベントが配信されます。 顧客が QR コードによる決済のキャンセルを選択し、戻るボタンをタップすると、支払いインテントの確定は `terminal.reader.action_failed` イベントで失敗し、リーダーはスプラッシュ画面に戻ります。 ### リーダーを解放して別の決済を実行 顧客がデバイスで決済を完了するまでに数分間かかる場合があります。リーダーに完了した決済の結果が反映されるのを待つ代わりに、リーダーを別の顧客の決済に使用できます。 顧客が QR コードをスキャンし、デバイスに切り替えて決済を完了したら、[cancel_action](https://docs.stripe.com/api/terminal/readers/object.md#terminal_reader_object-action-cancel_action) エンドポイントを使用してリーダーをリセットします。 ```curl curl -X POST https://api.stripe.com/v1/terminal/readers/tmr_xxx/cancel_action \ -u "<>:" ``` 決済を処理するリーダーのアクションをキャンセルした後も、決済インテントは `requires_action` ステータスのままになり、顧客は決済を完了できます。`payment_intent.succeeded` Webhook と `payment_intent.payment_failed` Webhook を使用して、完了した決済の結果を照合します。Webhook を使用して [PaymentIntent を監視](https://docs.stripe.com/payments/payment-intents/verifying-status.md#webhooks)する方法をご覧ください。 ## 顧客体験 PaymentIntent を[process](https://docs.stripe.com/terminal/payments/additional-payment-methods.md#handle-payment)すると、顧客はリーダー画面に表示された QR コードをスキャンします。 決済手段によっては、顧客はモバイルアプリ (ほとんどのデジタルウォレット) で決済を迅速に確定するか、融資オファーを評価するより長いプロセス (後払い決済手段) を完了します。以下のセクションでは、スマートリーダーでサポートされている決済手段の決済フローを示します。 #### Affirm 店舗での顧客体験を最高まで高め、後払いオプションの認知を広める方法については、[Affirm のトレーニングリソース](https://businesshub.affirm.com/hc/en-us/articles/30660865631892-Stripe-User-Affirm-Resources)をご覧ください。 ![](https://d37ugbyn3rpeym.cloudfront.net/videos/terminal/affirm-customer-experience.mp4) #### WeChat Pay ![](https://d37ugbyn3rpeym.cloudfront.net/videos/terminal/wechat-pay-customer-experience.mp4) #### PayNow ![](https://docs.stripecdn.com/50c48b010444a4c4db73126c3ecc68f555ab3a59940349a72558d934f274b666.mp4) ## テスト *サンドボックス* (A sandbox is an isolated test environment that allows you to test Stripe functionality in your account without affecting your live integration. Use sandboxes to safely experiment with new features and changes)では、携帯電話の QR コードスキャンアプリを使用して QR コードをスキャンできます。この QR コードのペイロードには URL が含まれ、これによって Stripe がホストするテスト決済ページが表示されます。そこでテスト決済をオーソリするか、失敗させることができます。 ### Affirm サンドボックス アカウントが Affirm に登録されている場合、QR コード URL により、Affirm がオンラインで提供するサンドボックスページに移動します。そこで決済プロセスを完了できます。Affirm サンドボックスにリダイレクトされると、SSN の末尾 4 桁を入力するように求められることがあります。Affirm では、テスト目的で `0000` または `5678` を使用することをお勧めします。 アカウントが Affirm に登録されていない場合は、Stripe がオンラインで提供するテスト決済画面に移動します。 > [present_payment_method](https://docs.stripe.com/api/terminal/readers/present_payment_method.md) エンドポイントでは、QR コードの決済手段を指定できません。 # JavaScript > This is a JavaScript for when terminal-sdk-platform is js. View the full page at https://docs.stripe.com/terminal/payments/additional-payment-methods?terminal-sdk-platform=js. > #### スマートリーダーの推奨事項 > > [BBPOS WisePOS E リーダー](https://docs.stripe.com/terminal/payments/setup-reader/bbpos-wisepos-e.md)、[Stripe Reader S700/S710](https://docs.stripe.com/terminal/readers/stripe-reader-s700-s710.md)、[Verifone リーダー](https://docs.stripe.com/terminal/payments/setup-reader/verifone.md)などのスマートリーダーでは、JavaScript SDK ではなく[サーバー主導の実装](https://docs.stripe.com/terminal/payments/setup-integration.md?terminal-sdk-platform=server-driven)を使用することをお勧めします。 > > JavaScript SDK では、POS とリーダーが、有効なローカル DNS と同じローカルネットワーク上にある必要があります。サーバー主導型の統合では、代わりに Stripe API を使用するため、複雑なネットワーク環境ではよりシンプルになります。ニーズに最適なプラットフォームの選択に役立つ[プラットフォーム比較](https://docs.stripe.com/terminal/payments/setup-reader.md#sdk)をご覧ください。 ## PaymentIntent を作成する QR コードインターフェイスでカード以外の決済手段を受け付けるには、[PaymentIntent を作成](https://docs.stripe.com/api/payment_intents.md)し、希望の決済手段タイプを `payment_method_types` パラメーターに含めます。 - チェックアウトフローで顧客にすべての支払い方法を提示するには、`card_present`とカード以外の支払い方法を組み合わせてください。[offline](https://docs.stripe.com/terminal/features/operate-offline/overview.md) 環境で主に運用する場合は、この機能を有効にすることをお勧めします。オフラインモードではカードのみがサポートされているためです。 - カードを使いたくない場合は、カード以外の支払い方法のみをサポートしてください。 - どの決済手段の決済フローに顧客を誘導するかがわかっている場合は、決済手段のタイプを 1 つ選択します。 ### キャプチャータイプ すべての決済手段が[手動キャプチャー](https://docs.stripe.com/terminal/payments/collect-card-payment.md#capture-payment)に対応しているわけではありません。次の表は、どの決済手段が手動キャプチャーに対応しているかを示しています。 | 決済手段 | 手動によるキャプチャー | | -------------- | ----------- | | `card_present` | ✓ サポート対象 | | `affirm` | ✓ サポート対象 | | `wechat_pay` | ❌ サポート対象外 | | `paynow` | ❌ サポート対象外 | 最も幅広い決済手段に対応するには、`capture_method` を `automatic` に設定して PaymentIntent を作成します。自動キャプチャーが必要な決済手段も受け付けながら、カード決済と Affirm の手動キャプチャーにも対応するには、ネストされた `payment_method_options.card_present` 属性の `capture_method` を `manual` に設定します。 ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=1000 \ -d currency=usd \ -d "payment_method_types[]=card_present" \ -d "payment_method_types[]=wechat_pay" \ -d capture_method=automatic \ -d "payment_method_options[card_present][capture_method]=manual" ``` ## 支払いを処理する カード決済とは異なり、QR コード決済の処理は非同期で行われます。QR コード決済手段で PaymentIntent を処理すると、Stripe はその決済に固有の QR コードを生成します。 決済を処理すると、リーダーに顧客の QR コードが表示され、顧客がモバイルデバイスでスキャンします。顧客がデバイスで決済を完了するとすぐに、リーダーが更新され、完了した決済が反映されます。 > リーダーが支払いの結果を表示するまでの所要時間は、使用された決済手段によって異なります。通常、リーダーは数秒後に更新されます。 #### 収集、検査、確認 ### PaymentMethod を収集する - [collectPaymentMethod (JavaScript)](https://docs.stripe.com/terminal/references/api/js-sdk.md#collect-payment-method) 支払いを回収するには、作成した PaymentIntent オブジェクトを SDK に渡します。またアプリをリーダーに接続する必要があります。 決済手段の収集を開始すると、リーダーは顧客にタップするか、カードを挿入するか、QR コード決済手段を含む「その他の決済手段」を使用するように求めます。 ```javascript async () => { // clientSecret is the client_secret from the PaymentIntent you created in Step 1. const result = await terminal.collectPaymentMethod(clientSecret); if (result.error) { // Placeholder for handling result.error } else { // Placeholder for processing result.paymentIntent } } ``` このメソッドは、接続されたリーダーを使用して決済手段のデータを収集し、そのデータをローカルの PaymentIntent に関連付けます。この時点で、選択する決済手段を決定できます。 ### PaymentIntent を処理する - [processPayment (JavaScript)](https://docs.stripe.com/terminal/references/api/js-sdk.md#process-payment) 決済手段が正常に収集されたら、PaymentIntent の処理に進むことができます。 SDK を使用した PaymentIntent の処理は同期的であり、決済が完了するまで`processPayment`がブロックされます。 QR コード決済の場合、この方法ではリーダー画面が UI に切り替わり、顧客がスキャンできる QR コードが表示されます。顧客がデバイスで決済を完了すると、決済が更新され、メソッドが戻ります。 顧客が決済のキャンセルを選択した場合、SDK はエラーを返します。 一部の決済手段 (例: Affirm) では、PaymentIntent を確定する際に [return_url](https://docs.stripe.com/api/payment_intents/confirm.md#confirm_payment_intent-return_url) が必要です。これは、顧客が決済手段のアプリまたはサイトで決済を認証またはキャンセルした後にリダイレクトされる URL です。PaymentIntent の確定時に独自の [return_url](https://docs.stripe.com/api/payment_intents/confirm.md#confirm_payment_intent-return_url) を指定できます。指定しない場合、Stripe がホストする[汎用のランディングページ](https://terminal-statics.stripe.com/terminal-checkout/assets/index.html)が表示されます。 ```javascript async () => { const result = await terminal.processPayment(paymentIntent, { config_override: { return_url: "https://stripe.com" }}); if (result.error) { // Placeholder for handling result.error } else if (result.paymentIntent) { // Placeholder for notifying your backend to capture result.paymentIntent.id } } ``` ### リーダーを解放して別の決済を実行 顧客がデバイスで決済を完了するまでに数分間かかる場合があります。リーダーに完了した決済の結果が反映されるのを待つ代わりに、リーダーを別の顧客の決済に使用できます。 - [cancelProcessPayment](https://docs.stripe.com/terminal/references/api/js-sdk.md#cancel-process-payment) 顧客が QR コードをスキャンし、デバイスに切り替えて決済を完了したら、[cancelProcessPayment](https://docs.stripe.com/terminal/references/api/js-sdk.md#cancel-process-payment) を呼び出してリーダーをリセットします。 決済を処理するリーダーのアクションをキャンセルした後も、決済インテントは `requires_action` ステータスのままになり、顧客は決済を完了できます。`payment_intent.succeeded` Webhook と `payment_intent.payment_failed` Webhook を使用して、完了した決済の結果を照合します。Webhook を使用して [PaymentIntent を監視](https://docs.stripe.com/payments/payment-intents/verifying-status.md#webhooks)する方法をご覧ください。 ## 顧客体験 PaymentIntent を[process](https://docs.stripe.com/terminal/payments/additional-payment-methods.md#handle-payment)すると、顧客はリーダー画面に表示された QR コードをスキャンします。 決済手段によっては、顧客はモバイルアプリ (ほとんどのデジタルウォレット) で決済を迅速に確定するか、融資オファーを評価するより長いプロセス (後払い決済手段) を完了します。以下のセクションでは、スマートリーダーでサポートされている決済手段の決済フローを示します。 #### Affirm 店舗での顧客体験を最高まで高め、後払いオプションの認知を広める方法については、[Affirm のトレーニングリソース](https://businesshub.affirm.com/hc/en-us/articles/30660865631892-Stripe-User-Affirm-Resources)をご覧ください。 ![](https://d37ugbyn3rpeym.cloudfront.net/videos/terminal/affirm-customer-experience.mp4) #### WeChat Pay ![](https://d37ugbyn3rpeym.cloudfront.net/videos/terminal/wechat-pay-customer-experience.mp4) #### PayNow ![](https://docs.stripecdn.com/50c48b010444a4c4db73126c3ecc68f555ab3a59940349a72558d934f274b666.mp4) ## テスト *サンドボックス* (A sandbox is an isolated test environment that allows you to test Stripe functionality in your account without affecting your live integration. Use sandboxes to safely experiment with new features and changes)では、携帯電話の QR コードスキャンアプリを使用して QR コードをスキャンできます。この QR コードのペイロードには URL が含まれ、これによって Stripe がホストするテスト決済ページが表示されます。そこでテスト決済をオーソリするか、失敗させることができます。 ### Affirm サンドボックス アカウントが Affirm に登録されている場合、QR コード URL により、Affirm がオンラインで提供するサンドボックスページに移動します。そこで決済プロセスを完了できます。Affirm サンドボックスにリダイレクトされると、SSN の末尾 4 桁を入力するように求められることがあります。Affirm では、テスト目的で `0000` または `5678` を使用することをお勧めします。 アカウントが Affirm に登録されていない場合は、Stripe がオンラインで提供するテスト決済画面に移動します。 # iOS > This is a iOS for when terminal-sdk-platform is ios. View the full page at https://docs.stripe.com/terminal/payments/additional-payment-methods?terminal-sdk-platform=ios. ## PaymentIntent を作成する QR コードインターフェイスでカード以外の決済手段を受け付けるには、[PaymentIntent を作成](https://docs.stripe.com/api/payment_intents.md)し、希望の決済手段タイプを `payment_method_types` パラメーターに含めます。 - チェックアウトフローで顧客にすべての支払い方法を提示するには、`card_present`とカード以外の支払い方法を組み合わせてください。[offline](https://docs.stripe.com/terminal/features/operate-offline/overview.md) 環境で主に運用する場合は、この機能を有効にすることをお勧めします。オフラインモードではカードのみがサポートされているためです。 - カードを使いたくない場合は、カード以外の支払い方法のみをサポートしてください。 - どの決済手段の決済フローに顧客を誘導するかがわかっている場合は、決済手段のタイプを 1 つ選択します。 ### キャプチャータイプ すべての決済手段が[手動キャプチャー](https://docs.stripe.com/terminal/payments/collect-card-payment.md#capture-payment)に対応しているわけではありません。次の表は、どの決済手段が手動キャプチャーに対応しているかを示しています。 | 決済手段 | 手動によるキャプチャー | | -------------- | ----------- | | `card_present` | ✓ サポート対象 | | `affirm` | ✓ サポート対象 | | `wechat_pay` | ❌ サポート対象外 | | `paynow` | ❌ サポート対象外 | 最も幅広い決済手段に対応するには、`capture_method` を `automatic` に設定して PaymentIntent を作成します。自動キャプチャーが必要な決済手段も受け付けながら、カード決済と Affirm の手動キャプチャーにも対応するには、ネストされた `payment_method_options.card_present` 属性の `capture_method` を `manual` に設定します。 #### Swift ```swift import UIKit import StripeTerminal class PaymentViewController: UIViewController { // ... // Action for a "Checkout" button func checkoutAction() throws { let params = try PaymentIntentParametersBuilder(amount: 1000, currency: "usd") .setPaymentMethodTypes( [PaymentMethodType.cardPresent, PaymentMethodType.wechatPay] ) .setCaptureMethod(CaptureMethod.automatic) .setPaymentMethodOptionsParameters( PaymentMethodOptionsParametersBuilder( cardPresentParameters: CardPresentParametersBuilder() .setCaptureMethod(CardPresentCaptureMethod.manual) .build() ) .build() ) .build() Terminal.shared.createPaymentIntent(params) { createResult, createError in if let error = createError { print("createPaymentIntent failed: \(error)") } else if let paymentIntent = createResult { print("createPaymentIntent succeeded") // ... } } } // ... } ``` ## 支払いを処理する カード決済とは異なり、QR コード決済の処理は非同期で行われます。QR コード決済手段で PaymentIntent を確定すると、Stripe はその決済に固有の QR コードを生成します。 決済を確定すると、リーダーに顧客の QR コードが表示され、顧客がモバイルデバイスでスキャンします。顧客がデバイスで決済を完了するとすぐに、リーダーが更新され、完了した決済が反映されます。 > リーダーが支払いの結果を表示するまでの所要時間は、使用された決済手段によって異なります。通常、リーダーは数秒後に更新されます。 #### 収集、検査、確認 ### PaymentMethod を収集する - [collectPaymentMethod (iOS)](https://stripe.dev/stripe-terminal-ios/docs/Classes/SCPTerminal.html#/c:objc\(cs\)SCPTerminal\(im\)collectPaymentMethod:delegate:completion:) 支払いを回収するには、作成した PaymentIntent オブジェクトを SDK に渡します。またアプリをリーダーに接続する必要があります。 決済手段の収集を開始すると、リーダーは顧客にタップするか、カードを挿入するか、QR コード決済手段を含む「その他の決済手段」を使用するように求めます。リーダーは、決済手段の選択と QR コードの表示を自動的に処理します。 #### Swift ```swift import UIKit import StripeTerminal class PaymentViewController: UIViewController, ReaderDisplayDelegate { // Label for displaying messages from the card reader let readerMessageLabel = UILabel(frame: .zero) var collectCancelable: Cancelable? = nil // ... // Action for a "Checkout" button func checkoutAction() throws { let params = try PaymentIntentParametersBuilder(amount: 1000, currency: "usd").build() Terminal.shared.createPaymentIntent(params) { createResult, createError in if let error = createError { print("createPaymentIntent failed: \(error)") } else if let paymentIntent = createResult { print("createPaymentIntent succeeded") self.collectCancelable = Terminal.shared.collectPaymentMethod(paymentIntent) { collectResult, collectError in if let error = collectError { print("collectPaymentMethod failed: \(error)") } else if let paymentIntent = collectResult { print("collectPaymentMethod succeeded") // ... Confirm the payment } } } } } } // MARK: MobileReaderDelegate - only needed for mobile readers, this is the delegate set during connectReader func reader(_ reader: Reader, didRequestReaderInput inputOptions: ReaderInputOptions = []) { readerMessageLabel.text = Terminal.stringFromReaderInputOptions(inputOptions) } func reader(_ reader: Reader, didRequestReaderDisplayMessage displayMessage: ReaderDisplayMessage) { readerMessageLabel.text = Terminal.stringFromReaderDisplayMessage(displayMessage) } // MARK: ReaderDisplayDelegate func terminal(_ terminal: Terminal, didRequestReaderInput inputOptions: ReaderInputOptions = []) { readerMessageLabel.text = Terminal.stringFromReaderInputOptions(inputOptions) } func terminal(_ terminal: Terminal, didRequestReaderDisplayMessage displayMessage: ReaderDisplayMessage) { readerMessageLabel.text = Terminal.stringFromReaderDisplayMessage(displayMessage) } ``` このメソッドは、接続されたリーダーを使用して決済手段のデータを収集し、そのデータをローカルの PaymentIntent に関連付けます。この時点で、選択する決済手段を決定できます。 ### PaymentIntent を確定する - [confirmPaymentIntent (iOS)](https://stripe.dev/stripe-terminal-ios/docs/Classes/SCPTerminal.html#/c:objc\(cs\)SCPTerminal\(im\)confirmPaymentIntent:completion:) 決済手段が正常に収集されたら、PaymentIntent の確定に進むことができます。 SDK を使用した PaymentIntent の確定は同期的であり、決済が完了するまで`confirmPaymentIntent`がブロックされます。 QR コード決済の場合、この方法ではリーダーの画面が UI に切り替わり、顧客がスキャンできる QR コードが表示されます。リーダーは QR コードの表示を自動的に処理します。顧客がデバイスで決済を完了すると、決済が更新され、メソッドが戻ります。 顧客が決済のキャンセルを選択した場合、SDK はエラーを返します。 一部の決済手段 (例: Affirm) では、PaymentIntent を確定する際に [return_url](https://docs.stripe.com/api/payment_intents/confirm.md#confirm_payment_intent-return_url) が必要です。これは、顧客が決済手段のアプリまたはサイトで決済を認証またはキャンセルした後にリダイレクトされる URL です。PaymentIntent の確定時に独自の [return_url](https://docs.stripe.com/api/payment_intents/confirm.md#confirm_payment_intent-return_url) を指定できます。指定しない場合、Stripe がホストする[汎用のランディングページ](https://terminal-statics.stripe.com/terminal-checkout/assets/index.html)が表示されます。 #### Swift ```swift let confirmConfig = try ConfirmPaymentIntentConfigurationBuilder().setReturnUrl("https://stripe.com").build() // ... Confirm the payment self.confirmCancelable = Terminal.shared.confirmPaymentIntent(collectPaymentMethodPaymentIntent, confirmConfig: confirmConfig) { confirmResult, confirmError in if let error = confirmError { print("confirmPaymentIntent failed: \(error)") } else if let confirmedPaymentIntent = confirmResult { print("confirmPaymentIntent succeeded") // Notify your backend to capture the PaymentIntent if let stripeId = confirmedPaymentIntent.stripeId { APIClient.shared.capturePaymentIntent(stripeId) { captureError in if let error = captureError { print("capture failed: \(error)") } else { print("capture succeeded") } } } else { print("Payment collected offline"); } } } ``` ### リーダーを解放して別の決済を実行 顧客がデバイスで決済を完了するまでに数分間かかる場合があります。リーダーに完了した決済の結果が反映されるのを待つ代わりに、リーダーを別の顧客の決済に使用できます。 - [Cancelable (iOS)](https://stripe.dev/stripe-terminal-ios/docs/Classes/SCPCancelable.html) 顧客が QR コードをスキャンし、デバイスに切り替えて決済を完了したら、iOS SDK から返された `Cancelable` オブジェクトを使用してアクションをキャンセルし、リーダーをリセットします。 決済を確定するリーダーのアクションをキャンセルした後も、決済インテントは `requires_action` ステータスのままになり、顧客は決済を完了できます。`payment_intent.succeeded` Webhook と `payment_intent.payment_failed` Webhook を使用して、完了した決済の結果を照合します。Webhook を使用して [PaymentIntent を監視](https://docs.stripe.com/payments/payment-intents/verifying-status.md#webhooks)する方法をご覧ください。 ## 顧客体験 PaymentIntent を[confirm](https://docs.stripe.com/terminal/payments/additional-payment-methods.md#handle-payment)すると、顧客はリーダー画面に表示された QR コードをスキャンします。 決済手段によっては、顧客はモバイルアプリ (ほとんどのデジタルウォレット) で決済を迅速に確定するか、融資オファーを評価するより長いプロセス (後払い決済手段) を完了します。以下のセクションでは、スマートリーダーでサポートされている決済手段の決済フローを示します。 #### Affirm 店舗での顧客体験を最高まで高め、後払いオプションの認知を広める方法については、[Affirm のトレーニングリソース](https://businesshub.affirm.com/hc/en-us/articles/30660865631892-Stripe-User-Affirm-Resources)をご覧ください。 ![](https://d37ugbyn3rpeym.cloudfront.net/videos/terminal/affirm-customer-experience.mp4) #### WeChat Pay ![](https://d37ugbyn3rpeym.cloudfront.net/videos/terminal/wechat-pay-customer-experience.mp4) #### PayNow ![](https://docs.stripecdn.com/50c48b010444a4c4db73126c3ecc68f555ab3a59940349a72558d934f274b666.mp4) ## テスト *サンドボックス* (A sandbox is an isolated test environment that allows you to test Stripe functionality in your account without affecting your live integration. Use sandboxes to safely experiment with new features and changes)では、携帯電話の QR コードスキャンアプリを使用して QR コードをスキャンできます。この QR コードのペイロードには URL が含まれ、これによって Stripe がホストするテスト決済ページが表示されます。そこでテスト決済をオーソリするか、失敗させることができます。 ### Affirm サンドボックス アカウントが Affirm に登録されている場合、QR コード URL により、Affirm がオンラインで提供するサンドボックスページに移動します。そこで決済プロセスを完了できます。Affirm サンドボックスにリダイレクトされると、SSN の末尾 4 桁を入力するように求められることがあります。Affirm では、テスト目的で `0000` または `5678` を使用することをお勧めします。 アカウントが Affirm に登録されていない場合は、Stripe がオンラインで提供するテスト決済画面に移動します。 # Android > This is a Android for when terminal-sdk-platform is android. View the full page at https://docs.stripe.com/terminal/payments/additional-payment-methods?terminal-sdk-platform=android. ## PaymentIntent を作成する QR コードインターフェイスでカード以外の決済手段を受け付けるには、[PaymentIntent を作成](https://docs.stripe.com/api/payment_intents.md)し、希望の決済手段タイプを `payment_method_types` パラメーターに含めます。 - チェックアウトフローで顧客にすべての支払い方法を提示するには、`card_present`とカード以外の支払い方法を組み合わせてください。[offline](https://docs.stripe.com/terminal/features/operate-offline/overview.md) 環境で主に運用する場合は、この機能を有効にすることをお勧めします。オフラインモードではカードのみがサポートされているためです。 - カードを使いたくない場合は、カード以外の支払い方法のみをサポートしてください。 - どの決済手段の決済フローに顧客を誘導するかがわかっている場合は、決済手段のタイプを 1 つ選択します。 ### キャプチャータイプ すべての決済手段が[手動キャプチャー](https://docs.stripe.com/terminal/payments/collect-card-payment.md#capture-payment)に対応しているわけではありません。次の表は、どの決済手段が手動キャプチャーに対応しているかを示しています。 | 決済手段 | 手動によるキャプチャー | | -------------- | ----------- | | `card_present` | ✓ サポート対象 | | `affirm` | ✓ サポート対象 | | `wechat_pay` | ❌ サポート対象外 | | `paynow` | ❌ サポート対象外 | 最も幅広い決済手段に対応するには、`capture_method` を `automatic` に設定して PaymentIntent を作成します。自動キャプチャーが必要な決済手段も受け付けながら、カード決済と Affirm の手動キャプチャーにも対応するには、ネストされた `payment_method_options.card_present` 属性の `capture_method` を `manual` に設定します。 #### Kotlin ```kotlin val paymentMethodTypes = listOf(PaymentMethodType.CARD_PRESENT,PaymentMethodType.WECHAT_PAY) val params = PaymentIntentParameters.Builder( paymentMethodTypes = paymentMethodTypes ) .setAmount(1000) .setCurrency("usd") .setCaptureMethod(CaptureMethod.Automatic) .setPaymentMethodOptionsParameters( PaymentMethodOptionsParameters.Builder() .setCardPresentParameters( CardPresentParameters.Builder() .setCaptureMethod(CardPresentCaptureMethod.Manual) .build() ) .build() ) .build() Terminal.getInstance().createPaymentIntent( params, object : PaymentIntentCallback { override fun onSuccess(paymentIntent: PaymentIntent) { // Placeholder for handling successful operation } override fun onFailure(e: TerminalException) { // Placeholder for handling exception } } ) ``` ## 支払いを処理する カード決済とは異なり、QR コード決済の処理は非同期で行われます。QR コード決済手段で PaymentIntent を確定すると、Stripe はその決済に固有の QR コードを生成します。 決済を確定すると、リーダーに顧客の QR コードが表示され、顧客がモバイルデバイスでスキャンします。顧客がデバイスで決済を完了するとすぐに、リーダーが更新され、完了した決済が反映されます。 > リーダーが支払いの結果を表示するまでの所要時間は、使用された決済手段によって異なります。通常、リーダーは数秒後に更新されます。 #### 収集、検査、確認 ### PaymentMethod を収集する - [collectPaymentMethod (Android)](https://stripe.dev/stripe-terminal-android/core/com.stripe.stripeterminal/-terminal/collect-payment-method.html) 支払いを回収するには、作成した PaymentIntent オブジェクトを SDK に渡します。またアプリをリーダーに接続する必要があります。 決済手段の収集を開始すると、リーダーは顧客にタップするか、カードを挿入するか、QR コード決済手段を含む「その他の決済手段」を使用するように求めます。リーダーは、決済手段の選択と QR コードの表示を自動的に処理します。 #### Kotlin ```kotlin val cancelable = Terminal.getInstance().collectPaymentMethod( paymentIntent, object : PaymentIntentCallback { override fun onSuccess(paymentIntent: PaymentIntent) { // Placeholder for handling successful operation } override fun onFailure(e: TerminalException) { // Placeholder for handling exception } } ) ``` このメソッドは、接続されたリーダーを使用して決済手段のデータを収集し、そのデータをローカルの PaymentIntent に関連付けます。この時点で、選択する決済手段を決定できます。 ### PaymentIntent を確定する - [confirmPaymentIntent (Android)](https://stripe.dev/stripe-terminal-android/core/com.stripe.stripeterminal/-terminal/confirm-payment-intent.html) 決済手段が正常に収集されたら、PaymentIntent の確定に進むことができます。 SDK を使用した PaymentIntent の確定は同期的であり、決済が完了するまで`confirmPaymentIntent`がブロックされます。 QR コード決済の場合、この方法ではリーダーの画面が UI に切り替わり、顧客がスキャンできる QR コードが表示されます。リーダーは QR コードの表示を自動的に処理します。顧客がデバイスで決済を完了すると、決済が更新され、メソッドが戻ります。 顧客が決済のキャンセルを選択した場合、SDK はエラーを返します。 一部の決済手段 (例: Affirm) では、PaymentIntent を確定する際に [return_url](https://docs.stripe.com/api/payment_intents/confirm.md#confirm_payment_intent-return_url) が必要です。これは、顧客が決済手段のアプリまたはサイトで決済を認証またはキャンセルした後にリダイレクトされる URL です。PaymentIntent の確定時に独自の [return_url](https://docs.stripe.com/api/payment_intents/confirm.md#confirm_payment_intent-return_url) を指定できます。指定しない場合、Stripe がホストする[汎用のランディングページ](https://terminal-statics.stripe.com/terminal-checkout/assets/index.html)が表示されます。 #### Kotlin ```kotlin val confirmConfig = ConfirmPaymentIntentConfiguration.Builder().setReturnUrl("https://stripe.com/").build() val cancelable = Terminal.getInstance().confirmPaymentIntent( paymentIntent, object : PaymentIntentCallback { override fun onSuccess(paymentIntent: PaymentIntent) { // Placeholder handling successful operation } override fun onFailure(e: TerminalException) { // Placeholder for handling exception } }, confirmConfig ) ``` ### リーダーを解放して別の決済を実行 顧客がデバイスで決済を完了するまでに数分間かかる場合があります。リーダーに完了した決済の結果が反映されるのを待つ代わりに、リーダーを別の顧客の決済に使用できます。 - [Cancelable (Android)](https://stripe.dev/stripe-terminal-android/external/com.stripe.stripeterminal.external.callable/-cancelable/index.html) 顧客が QR コードをスキャンし、デバイスに切り替えて決済を完了したら、Android SDK から返される `Cancelable` オブジェクトを使用してアクションをキャンセルし、リーダーをリセットします。 決済を確定するリーダーのアクションをキャンセルした後も、決済インテントは `requires_action` ステータスのままになり、顧客は決済を完了できます。`payment_intent.succeeded` Webhook と `payment_intent.payment_failed` Webhook を使用して、完了した決済の結果を照合します。Webhook を使用して [PaymentIntent を監視](https://docs.stripe.com/payments/payment-intents/verifying-status.md#webhooks)する方法をご覧ください。 ## 顧客体験 PaymentIntent を[confirm](https://docs.stripe.com/terminal/payments/additional-payment-methods.md#handle-payment)すると、顧客はリーダー画面に表示された QR コードをスキャンします。 決済手段によっては、顧客はモバイルアプリ (ほとんどのデジタルウォレット) で決済を迅速に確定するか、融資オファーを評価するより長いプロセス (後払い決済手段) を完了します。以下のセクションでは、スマートリーダーでサポートされている決済手段の決済フローを示します。 #### Affirm 店舗での顧客体験を最高まで高め、後払いオプションの認知を広める方法については、[Affirm のトレーニングリソース](https://businesshub.affirm.com/hc/en-us/articles/30660865631892-Stripe-User-Affirm-Resources)をご覧ください。 ![](https://d37ugbyn3rpeym.cloudfront.net/videos/terminal/affirm-customer-experience.mp4) #### WeChat Pay ![](https://d37ugbyn3rpeym.cloudfront.net/videos/terminal/wechat-pay-customer-experience.mp4) #### PayNow ![](https://docs.stripecdn.com/50c48b010444a4c4db73126c3ecc68f555ab3a59940349a72558d934f274b666.mp4) ## テスト *サンドボックス* (A sandbox is an isolated test environment that allows you to test Stripe functionality in your account without affecting your live integration. Use sandboxes to safely experiment with new features and changes)では、携帯電話の QR コードスキャンアプリを使用して QR コードをスキャンできます。この QR コードのペイロードには URL が含まれ、これによって Stripe がホストするテスト決済ページが表示されます。そこでテスト決済をオーソリするか、失敗させることができます。 ### Affirm サンドボックス アカウントが Affirm に登録されている場合、QR コード URL により、Affirm がオンラインで提供するサンドボックスページに移動します。そこで決済プロセスを完了できます。Affirm サンドボックスにリダイレクトされると、SSN の末尾 4 桁を入力するように求められることがあります。Affirm では、テスト目的で `0000` または `5678` を使用することをお勧めします。 アカウントが Affirm に登録されていない場合は、Stripe がオンラインで提供するテスト決済画面に移動します。 # 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/payments/additional-payment-methods?terminal-sdk-platform=react-native. ## PaymentIntent を作成する QR コードインターフェイスでカード以外の決済手段を受け付けるには、[PaymentIntent を作成](https://docs.stripe.com/api/payment_intents.md)し、希望の決済手段タイプを `payment_method_types` パラメーターに含めます。 - チェックアウトフローで顧客にすべての支払い方法を提示するには、`card_present`とカード以外の支払い方法を組み合わせてください。[offline](https://docs.stripe.com/terminal/features/operate-offline/overview.md) 環境で主に運用する場合は、この機能を有効にすることをお勧めします。オフラインモードではカードのみがサポートされているためです。 - カードを使いたくない場合は、カード以外の支払い方法のみをサポートしてください。 - どの決済手段の決済フローに顧客を誘導するかがわかっている場合は、決済手段のタイプを 1 つ選択します。 ### キャプチャータイプ すべての決済手段が[手動キャプチャー](https://docs.stripe.com/terminal/payments/collect-card-payment.md#capture-payment)に対応しているわけではありません。次の表は、どの決済手段が手動キャプチャーに対応しているかを示しています。 | 決済手段 | 手動によるキャプチャー | | -------------- | ----------- | | `card_present` | ✓ サポート対象 | | `affirm` | ✓ サポート対象 | | `wechat_pay` | ❌ サポート対象外 | | `paynow` | ❌ サポート対象外 | 最も幅広い決済手段に対応するには、`capture_method` を `automatic` に設定して PaymentIntent を作成します。自動キャプチャーが必要な決済手段も受け付けながら、カード決済と Affirm の手動キャプチャーにも対応するには、ネストされた `payment_method_options.card_present` 属性の `capture_method` を `manual` に設定します。 ```js const {error, paymentIntent} = await createPaymentIntent({ amount: 1000, currency: "usd", paymentMethodTypes: ["card_present", "wechat_pay"], captureMethod: "automatic", paymentMethodOptions: { captureMethod: "manual" } }); ``` ## 支払いを処理する カード決済とは異なり、QR コード決済の処理は非同期で行われます。QR コード決済手段で PaymentIntent を確定すると、Stripe はその決済に固有の QR コードを生成します。 決済を確定すると、リーダーに顧客の QR コードが表示され、顧客がモバイルデバイスでスキャンします。顧客がデバイスで決済を完了するとすぐに、リーダーが更新され、完了した決済が反映されます。 > リーダーが支払いの結果を表示するまでの所要時間は、使用された決済手段によって異なります。通常、リーダーは数秒後に更新されます。 #### 収集、検査、確認 ### PaymentMethod を収集する - [collectPaymentMethod (React Native)](https://stripe.dev/stripe-terminal-react-native/api-reference/interfaces/StripeTerminalSdkType.html#collectpaymentmethod) 支払いを回収するには、作成した PaymentIntent オブジェクトを SDK に渡します。またアプリをリーダーに接続する必要があります。 決済手段の収集を開始すると、リーダーは顧客にタップするか、カードを挿入するか、QR コード決済手段を含む「その他の決済手段」を使用するように求めます。リーダーは、決済手段の選択と QR コードの表示を自動的に処理します。 ```js const { paymentIntent, error } = await collectPaymentMethod({ paymentIntent: paymentIntent }); if (error) { // Placeholder for handling exception } // Placeholder for processing PaymentIntent ``` このメソッドは、接続されたリーダーを使用して決済手段のデータを収集し、そのデータをローカルの PaymentIntent に関連付けます。この時点で、選択する決済手段を決定できます。 ### PaymentIntent を確定する - [confirmPaymentIntent (React Native)](https://stripe.dev/stripe-terminal-react-native/api-reference/interfaces/StripeTerminalSdkType.html#confirmpaymentintent) 決済手段が正常に収集されたら、PaymentIntent の確定に進むことができます。 SDK を使用した PaymentIntent の確定は同期的であり、決済が完了するまで`confirmPaymentIntent`がブロックされます。 QR コード決済の場合、この方法ではリーダーの画面が UI に切り替わり、顧客がスキャンできる QR コードが表示されます。リーダーは QR コードの表示を自動的に処理します。顧客がデバイスで決済を完了すると、決済が更新され、メソッドが戻ります。 顧客が決済のキャンセルを選択した場合、SDK はエラーを返します。 一部の決済手段 (例: Affirm) では、PaymentIntent を確定する際に [return_url](https://docs.stripe.com/api/payment_intents/confirm.md#confirm_payment_intent-return_url) が必要です。これは、顧客が決済手段のアプリまたはサイトで決済を認証またはキャンセルした後にリダイレクトされる URL です。PaymentIntent の確定時に独自の [return_url](https://docs.stripe.com/api/payment_intents/confirm.md#confirm_payment_intent-return_url) を指定できます。指定しない場合、Stripe がホストする[汎用のランディングページ](https://terminal-statics.stripe.com/terminal-checkout/assets/index.html)が表示されます。 ```js const { paymentIntent, error } = await confirmPaymentIntent(paymentIntent); if (error) { // Placeholder for handling exception return; } // Placeholder for notifying your backend to capture paymentIntent.id ``` ### リーダーを解放して別の決済を実行 顧客がデバイスで決済を完了するまでに数分間かかる場合があります。リーダーに完了した決済の結果が反映されるのを待つ代わりに、リーダーを別の顧客の決済に使用できます。 - [cancelConfirmPaymentIntent (React Native)](https://stripe.dev/stripe-terminal-react-native/api-reference/interfaces/StripeTerminalSdkType.html#cancelconfirmpaymentintent) 顧客が QR コードをスキャンし、デバイスに切り替えて決済を完了したら、[cancelConfirmPaymentIntent](https://stripe.dev/stripe-terminal-react-native/api-reference/interfaces/StripeTerminalSdkType.html#cancelconfirmpaymentintent) を呼び出してリーダーをリセットします。 決済を確定するリーダーのアクションをキャンセルした後も、決済インテントは `requires_action` ステータスのままになり、顧客は決済を完了できます。`payment_intent.succeeded` Webhook と `payment_intent.payment_failed` Webhook を使用して、完了した決済の結果を照合します。Webhook を使用して [PaymentIntent を監視](https://docs.stripe.com/payments/payment-intents/verifying-status.md#webhooks)する方法をご覧ください。 ## 顧客体験 PaymentIntent を[confirm](https://docs.stripe.com/terminal/payments/additional-payment-methods.md#handle-payment)すると、顧客はリーダー画面に表示された QR コードをスキャンします。 決済手段によっては、顧客はモバイルアプリ (ほとんどのデジタルウォレット) で決済を迅速に確定するか、融資オファーを評価するより長いプロセス (後払い決済手段) を完了します。以下のセクションでは、スマートリーダーでサポートされている決済手段の決済フローを示します。 #### Affirm 店舗での顧客体験を最高まで高め、後払いオプションの認知を広める方法については、[Affirm のトレーニングリソース](https://businesshub.affirm.com/hc/en-us/articles/30660865631892-Stripe-User-Affirm-Resources)をご覧ください。 ![](https://d37ugbyn3rpeym.cloudfront.net/videos/terminal/affirm-customer-experience.mp4) #### WeChat Pay ![](https://d37ugbyn3rpeym.cloudfront.net/videos/terminal/wechat-pay-customer-experience.mp4) #### PayNow ![](https://docs.stripecdn.com/50c48b010444a4c4db73126c3ecc68f555ab3a59940349a72558d934f274b666.mp4) ## テスト *サンドボックス* (A sandbox is an isolated test environment that allows you to test Stripe functionality in your account without affecting your live integration. Use sandboxes to safely experiment with new features and changes)では、携帯電話の QR コードスキャンアプリを使用して QR コードをスキャンできます。この QR コードのペイロードには URL が含まれ、これによって Stripe がホストするテスト決済ページが表示されます。そこでテスト決済をオーソリするか、失敗させることができます。 ### Affirm サンドボックス アカウントが Affirm に登録されている場合、QR コード URL により、Affirm がオンラインで提供するサンドボックスページに移動します。そこで決済プロセスを完了できます。Affirm サンドボックスにリダイレクトされると、SSN の末尾 4 桁を入力するように求められることがあります。Affirm では、テスト目的で `0000` または `5678` を使用することをお勧めします。 アカウントが Affirm に登録されていない場合は、Stripe がオンラインで提供するテスト決済画面に移動します。