# ユースケースをテストする 導入をテストする方法をご紹介します。 Stripe のテスト環境、テスト環境、*サンドボックス*を使用すると、実際の請求や決済を行わずに導入をテストできます。これらの環境では、実際の取引に影響を与えたり、実際の資金を移動したりすることなく、実際のオブジェクトの作成をシミュレーションできます。サンドボックスはテスト環境よりも追加機能があり、柔軟性が高いため、テストのニーズに合わせて使用することをお勧めします。また、品質保証 (QA) テストのユースケースを使用し、[Postman コレクション](https://www.getpostman.com/collections/080102f58f29afa081d7)をインポートして、テストプロセスに役立てていただくことをお勧めします。 ## テスト環境 テスト環境では、テスト用のクレジットカードに請求し、テスト用の商品と価格を作成できます。これらの環境では、取引をシミュレーションして、導入が正しく機能することを確認できます。この機能は、本番環境へ移行する前に、Stripe 導入のバグやエラーを特定するのに役立ちます。[テストモードとサンドボックスのどちらを使用するかを判断する方法](https://docs.stripe.com/testing-use-cases.md#compare)についてご確認ください。 Stripe アカウントを作成したら、[Stripe ダッシュボード](https://dashboard.stripe.com/test/apikeys)で一連の[テスト API キー](https://docs.stripe.com/keys.md#obtain-api-keys)を確認できます。これらの API キーを使用して、Stripe API にリクエストを行うことで、シミュレーションされたデータを作成および取得できます。実際の決済の受け付けを開始するには、[アカウントを有効化](https://docs.stripe.com/get-started/account/activate.md)し、アカウント選択機能を使用してテスト環境を終了し、導入で本番 API キーを使用する必要があります。本番環境のシークレットキーをシークレットボールトまたは環境変数に保存します。バージョン管理にチェックインしたソースコードや構成ファイルにキーを保存しないでください。詳細については、[シークレット API キー管理のベストプラクティス](https://docs.stripe.com/keys-best-practices.md)を参照してください。 > #### テスト環境使用時の本番環境への影響 > > ダッシュボードでは、テスト環境で設定を変更すると、本番環境でも設定が変更される場合があります。ダッシュボードのページの多くに通知ボックスがあり、テスト環境では本番環境の設定は無効になっています。この場合、有効になっている設定は安全に使用できます。通知が表示されない限り、テスト環境で変更を行うと、本番環境の設定に変更が反映されるものとご理解ください。 ### テスト環境の比較 テスト環境とサンドボックスは、実際の取引に影響を与えたり、実際の資金を移動したりすることなく、実際のオブジェクトの作成をシミュレーションするテスト環境です。それぞれを使用するタイミングを理解することで、テスト戦略の構築に役立てていただけます。サンドボックスに移行することで、複数の環境、詳細なアクセス制御、分離された設定を使用してテスト機能を強化し、より包括的なテスト戦略を構築してください。 ### テスト環境とサンドボックスの機能の違い 以下の表を参照して、違いを理解し、ニーズに最適な環境を選択してください。 | | テスト環境 | サンドボックス | | --------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------- | | 環境の数 | 1 つの環境を使用する | 最大 5 つの環境を使用 | | アクセス制御 | 役割を持つすべてのユーザーに同じ役割とアクセス権を付与します。 | アクセスの詳細な制御を実行します。管理者のみが自動的にアクセスできます。本番環境にはアクセスできないサンドボックスのみにユーザーを招待します。 | | 設定 | 本番環境とテスト環境間で設定を共有します。多くの設定を個別にテストすることはできません。 | サンドボックスごとに設定を完全に分離します。作成時に本番環境から設定をコピーし、本番導入とは別にテストします。 | | 製品の制限 | テスト環境で *IC+* (A pricing plan where businesses pay the variable network cost for each transaction plus the Stripe fee rather than a flat rate for all transactions. This pricing model provides more visibility into payments costs) の料金体系をテストすることはできません。 | サンドボックスで *IC+* の料金体系をテストすることはできません。 | | バージョンサポート | V1 と[部分的に V2 をサポート](https://docs.stripe.com/api-v2-overview.md#limitations) | V1 および V2 をサポート | | レート制限 | 一貫した[レート制限](https://docs.stripe.com/rate-limits.md)を維持します。 | 一貫したレート制限を維持します。 | | テストカード番号 | 同じ[テストカード番号](https://docs.stripe.com/testing-use-cases.md#test-card-numbers)を使用します。 | 同じテストカード番号を使用します。 | ## テスト環境からサンドボックスへの移行 ダッシュボードでテスト環境からサンドボックスに移行するには、以下のようにします。 1. サンドボックスを作成し、そのサンドボックスへのアクセスを必要とする[ユーザーを招待](https://docs.stripe.com/sandboxes/dashboard/manage-access.md)します。 - [サンドボックスユーザー役割](https://docs.stripe.com/sandboxes/dashboard/manage-access.md#grant-users-access-for-testing-only)をチームメンバーに付与すると、本番ビジネスアカウントに関連付けられたサンドボックスを作成し、作成したサンドボックスを削除するためのアクセス権がチームメンバーに付与されます。テスト環境では、すべてのユーザーに自動的にアクセスできましたが、サンドボックスユーザー役割、管理者役割、開発者役割、サンドボックス管理者役割が付与されたユーザーのみがサンドボックスにアクセスできます。 1. サンドボックスの新しいテスト API キーとアカウント ID を取得します。 1. テスト製品、顧客、サブスクリプション、決済手段など、関連するテストデータを設定します。 - (オプション) [シミュレーション](https://docs.stripe.com/billing/testing/test-clocks.md)を設定します。これは、Billing の組み込みをテストして、想定どおりに動作することを確認するのに役立ちます。サンドボックスで時間の進行をシミュレーションし、Subscriptions などの Billing リソースの状態が変化し、Webhook イベントがトリガーされます。これにより、四半期ごとまたは年次の更新の決済失敗などのシナリオを、長期間待つことなく組み込みがどのように処理するかを確認できます。 1. テストプロセスのうち、特定のテストオブジェクト ID に依存する部分を更新します。これは、サンドボックスで新しいオブジェクトを作成するときに変更されます。 ### テスト環境と本番環境 Stripe API リクエストはすべて、テスト環境か、*本番環境* (Use this mode when you’re ready to launch your app. Card networks or payment providers process payments) のいずれかで発生します。一方の環境の API オブジェクトには、もう一方の環境からアクセスできません。たとえば、テスト環境の[Product (商品) オブジェクト](https://docs.stripe.com/api/products/object.md)を本番環境の決済の一部にすることはできません。 | タイプ | 使用するタイミング | オブジェクト | 使用方法 | 考慮事項 | | ------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | サンドボックス | サンドボックスと関連するテスト API キーを使用してシステムを構築します。サンドボックスでは、カードネットワークとペイメントプロバイダーは決済を処理しません。 | API コールは、シミュレーションされたオブジェクトを返します。たとえば、テストの `account`、`payment`、`customer`、`charge`、`refund`、`transfer`、`balance`、`subscription` オブジェクトを取得して使用することができます。 | [テスト用のクレジットカードとアカウント](https://docs.stripe.com/testing.md#cards)を使用します。実際の支払い方法を受け付けることも、実際のアカウントを処理することもできません。 | [Identity](https://docs.stripe.com/identity.md) による検証チェックは行われません。また、Connect [account (アカウント) オブジェクト](https://docs.stripe.com/api/accounts/object.md)は機密フィールドを返しません。 | | 本番環境 | 実装を立ち上げて実際の支払いを受け付ける準備ができたら、本番環境と関連する本番 API キーを使用します。本番環境では、カードネットワークとペイメントプロバイダーは決済を処理します。 | API コールは、実際のオブジェクトを返します。たとえば、実際の `account`、`payment`、`customer`、`charge`、`refund`、`transfer`、`balance`、`subscription` オブジェクトを取得して使用することができます。 | 実際のクレジットカードを受け付けて、顧客のアカウントを処理します。クレジットカードとアカウントの実際の支払いのオーソリ、支払い、キャプチャーを受け付けることができます。 | 不審請求の申請のフローはより細かく、[テストプロセス](https://docs.stripe.com/testing.md#disputes)はよりシンプルです。また、一部の[支払い方法](https://docs.stripe.com/payments/payment-methods.md)ではフローがさらに細かく、ステップ数が多くなります。 | ダッシュボードのテスト環境が、導入のコードに影響を与えることはありません。コードの動作に影響を与えるのは、テスト環境と本番環境の API キーです。 ### テストカード番号 Stripe は、さまざまな決済シナリオのシミュレーションに使用できる一連の[テストカード番号](https://docs.stripe.com/testing.md#cards)を提供しています。これらのテストカード番号を使用すると、実際の決済や請求を処理することなく、シミュレーション用の決済をテスト環境で作成できます。 テストカード番号を使用すると、任意の将来の有効期限と 3 桁のセキュリティコードを入力して、決済の成功をシミュレーションできます。決済の失敗をシミュレーションする場合は、Stripe が提供する特定のテストカード番号とセキュリティコードを使用できます。 テストカード番号はテスト環境でのみ有効です。実際の決済には使用しないでください。 ### テストデータを削除する すべてのテストデータを Stripe アカウントから削除するには、次の手順を実行してください。 1. 既存の Stripe アカウントを使用して[ダッシュボードにログイン](https://dashboard.stripe.com)します。 1. テスト環境で、**開発者** > **概要**をクリックします。 1. **テストデータ**セクションで、**テストデータをレビュー**をクリックします。このダイアログに、既存のすべてのテストデータオブジェクトのリストが表示されます。 1. **テストデータを削除**をクリックして、削除プロセスを開始します。テストデータの削除を取り消すことはできません。 削除プロセスの実行中は、テスト環境が一時的に使用できなくなります。 > [Meters](https://docs.stripe.com/api/billing/meter.md) オブジェクトは、自動化されたテストデータの削除プロセスでサポートされていないため、手動で削除する必要があります。 ### テストメール デフォルトでは、Stripe はテスト環境で顧客にメールを送信しません。たとえば、サンドボックスで請求書への決済を行うと、顧客に領収書のメールは送信されません。また、テスト環境で API を使用して確定された請求書についても、顧客に領収書メールは送信されません。 テスト環境で Stripe から顧客にメールを送信したい場合は、ダッシュボードで以下を実行できます。 - 請求書を作成して特定の顧客に手動で送信します。 - 決済済みの請求書の領収書を手動で送信します。 メールで請求書や領収書を確認する場合は、`Customer` オブジェクトに [Team](https://dashboard.stripe.com/settings/team) のメールアドレスを設定するか、PaymentIntent に `receipt_email` 属性を設定してください。 ## ユースケースをテストする 次の表には、品質保証 (QA) テストのユースケースが含まれています。 | **ユースケース** | **アクション** | | ------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | 請求の成功 (ただちにキャプチャーする場合) | - エラーはありません。 - 請求は、ダッシュボードの[決済](https://dashboard.stripe.com/payments)の下に**成功**として表示されます。 - Stripe が請求をキャプチャーします。 | | PaymentIntent オーソリ成功 ([売上を後で](https://docs.stripe.com/payments/place-a-hold-on-a-payment-method.md)キャプチャー) | ```json { ... "capture_method": "manual", ... "status": "requires_capture", ... } ``` | | PaymentIntent キャプチャー成功 (売上の即時キャプチャーまたは[売上のキャプチャー](https://docs.stripe.com/payments/place-a-hold-on-a-payment-method.md)) | ```json { ... "status": "succeeded", ... } ``` | | 請求の失敗 | 請求は、ダッシュボードの[決済](https://dashboard.stripe.com/payments)の下に**失敗**として表示されます。 ```json { "error": { "charge": "ch_orWziM4j7CiRL8J4", "code": "card_declined", "decline_code": "<>", "doc_url": "https://docs.stripe.com/error-codes#card-declined", "message": "Your card was declined.", "type": "card_error" } } ``` | | Radar によるブロック | 使用する Radar のバージョンに関係なく、[リスクが高い](https://docs.stripe.com/radar/risk-evaluation.md#high-risk)ため、または[ルール](https://docs.stripe.com/radar/rules.md)により、支払いがブロックされる場合があります。レスポンスは、支払いの失敗の場合と同じです。 | | 不審請求が申し立てられた請求 | - 請求は、ダッシュボードの[決済](https://dashboard.stripe.com/payments)の下に**不審請求の申し立て済み**として表示されます。 - Stripe は、残高から請求金額と不審請求の申し立て手数料を引き落とし、関連する `charge.dispute.created` イベントとともに `Dispute` オブジェクトを作成します。 ```json { "object": { "id": "du_orWziM4j7CiRL8J4", "object": "dispute", "charge_id": "ch_orWziM4j7CiRL8J4", ... "status": "needs_response" } } ``` | | 未解決の請求照会 | 照会は不審請求の申し立てと似ていますが、主な相違点は、照会が不審請求の申し立てに発展しない限り、売上が引き落とされないこと、不審請求が申し立てられるまで返金可能なままであること、およびステータスが異なることです。この場合、Stripe は、`charge.dispute.created` イベントを起動します。 ```json { "object": { "id": "du_orWziM4j7CiRL8J4", "object": "dispute", "charge_id": "ch_orWziM4j7CiRL8J4", ... "is_charge_refundable": true, ... "status": "warning_needs_response" } } ``` | | 不審請求の申し立てに対する主張が認められた | - 顧客の不審請求の申し立ての主張が認められた場合、元の請求の売上から不審請求の申し立て手数料が差し引かれた金額がアカウントに戻されます。 - Stripe は、既存の `Dispute` オブジェクトを更新して、`charge.dispute.closed` イベントを起動します。 ```json { "object": { "id": "du_orWziM4j7CiRL8J4", "object": "dispute", "charge_id": "ch_orWziM4j7CiRL8J4", ... "status": "won" } } ``` | | 不審請求の申し立てに対する主張が認められなかった | 顧客が不審請求の申し立てで主張が認められなかった場合、Stripe は、既存の `Dispute` オブジェクトを更新して、`charge.dispute.closed` イベントを起動します。 ```json { "object": { "id": "du_orWziM4j7CiRL8J4", "object": "dispute", "charge_id": "ch_orWziM4j7CiRL8J4", ... "status": "lost" } } ``` | | 照会に対する主張が認められた | 照会で勝訴した場合、照会を最初に開始した際に売上が削除されなかったため、残高は変わりません。Stripe は、既存の `Dispute` オブジェクトを更新し、`charge.dispute.closed` イベントを起動します。 ```json { "object": { "id": "du_orWziM4j7CiRL8J4", "object": "dispute", "charge_id": "ch_orWziM4j7CiRL8J4", ... "status": "warning_closed" } } ``` | | 照会に対する主張が認められなかった | - 照会で敗訴した場合、不審請求の申し立てにエスカレートします。 - 不審請求の申し立てに発展すると、`charge.dispute.updated` イベントでステータスが変わり、売上は `charge.dispute.funds_withdrawn` イベントで引き落とされます。 ```json { "object": { "id": "du_orWziM4j7CiRL8J4", "object": "dispute", "charge_id": "ch_orWziM4j7CiRL8J4", ... "status": "needs_response" } } ``` | | 返金済みの請求 | 請求は、ダッシュボードの[決済](https://dashboard.stripe.com/payments)の下に**返金済み**として表示されます。 ```json { "id": "re_orWziM4j7CiRL8J4", "object": "refund", "amount": "<>", "charge": "ch_orWziM4j7CiRL8J4", ... "payment_intent": "pi_orWziM4j7CiRL8J4", // if you're using PaymentIntents ... "status": "succeeded" } ``` | | 一部返金済みの請求 | - 請求は、ダッシュボードの[決済](https://dashboard.stripe.com/payments)の下に**返金済み**として表示されます。 - 返金額は請求額とは異なります。一部返金済みの請求に対しても不審請求を申し立てることができます。 ```json { "id": "re_orWziM4j7CiRL8J4", "object": "refund", "amount": "<>", "charge": "ch_orWziM4j7CiRL8J4", ... "payment_intent": "pi_orWziM4j7CiRL8J4", // if you're using PaymentIntents ... "status": "succeeded" } ``` | | アカウント残高がマイナスになる | 必ず Stripe でマイナス残高をテストして、銀行口座が Stripe からの引き落としを受け付けられることを確認してください。 | | 成功した入金 | [入金成功](https://docs.stripe.com/api/events/types.md#event_types-payout.paid)時に Webhook を有効にする場合は (推奨)、イベントの処理内容をテストします。 | | 失敗した入金 | [入金失敗](https://docs.stripe.com/api/events/types.md#event_types-payout.failed)に対して Webhook を有効にする場合 (推奨)、イベントの処理内容をテストします。 | ## Stripe の Postman コレクション Postman は、広く利用されている API 開発ツールです。Stripe を導入する際に、導入のサーバー側コンポーネントをテストする際に必要なツールとともに[決済専用の Postman コレクション](https://www.getpostman.com/collections/080102f58f29afa081d7)をご用意しております。 ### コレクションをインポートする まず、Postman アプリにアクセスする必要があります。ブラウザバージョンまたはデスクトップバージョンを使用できます。アプリを起動したら、コレクションをインポートします。 Web でこのプロセスを開始するには、左上隅にある **Import** ボタンをクリックしてから、 **Link** オプションをクリックします。[Payments コレクション](https://www.getpostman.com/collections/080102f58f29afa081d7)のリンクを挿入します。Postman のデスクトップアプリを使用している場合は、 **File** > **Import** をクリックします。正常にインポートされると、 **Collections** の下にコレクションが表示されます。 ### 回収を使用する コレクションを使用するには、インポートしたコレクションに移動し、 **Variables** をクリックします。Stripe ダッシュボードからテストモードの Stripe [シークレットキー](https://dashboard.stripe.com/test/apikeys)をコピーし、 **secret\_key** 行の **Initial Value** フィールドに貼り付けます。このステップを完了したら、リクエストを開始できます。 コレクション実行中、スクリプトが他の変数を設定します。たとえば、[customer](https://docs.stripe.com/api/customers/create.md)、[price](https://docs.stripe.com/api/prices/create.md)、[charge](https://docs.stripe.com/api/charges/object.md)、または [PaymentIntent](https://docs.stripe.com/api/payment_intents/object.md) を作成すると、システムはその ID をコレクション内のスクリプトで保存し、返金の発行などの後続リクエストでアクセスできるようになります。 ## See also - [導入内容をテストする](https://docs.stripe.com/testing.md) - [サンドボックス](https://docs.stripe.com/sandboxes.md)