非表示ジョブを完了する公開プレビュー
最初の非表示ジョブを完了する方法をご紹介します。
この例では、非表示ジョブを使用して顧客の個人データを非表示にします。これにより、Stripe API とダッシュボードでは、そのデータにアクセスできなくなります。
最初のジョブを作成し、テスト顧客を非表示にする
RedactionJob オブジェクトは、操作する主要なオブジェクトであり、すべての非表示リクエストを管理するための中核となる、抽象化オブジェクトです。RedactionJob オブジェクトを使用して、対象のオブジェクトを示し、それらが適格であることを確認してから、非表示を実行できます。
ジョブを作成すると、指定されたオブジェクトの非表示の適格性の確認が開始されます。Customer オブジェクトの場合、非表示ジョブは、PaymentIntents、Charges、Subscriptions、Invoices、PaymentMethods、Notifications など、その顧客に関連するすべてのオブジェクトを識別します。これらのオブジェクトの中には、顧客が購入したり、または支払いの詳細を追加したりできる頻度に直接関連する、何百ものレコードが含まれる場合があります。
同じ顧客が所有するオブジェクトに追加の ID を指定できますが、明示的に定義する必要はありません。新しいジョブごとに非表示にするオブジェクト識別子は 10 個に制限されています。
テストデータを使用して顧客を設定する
非表示のジョブを作成する前に、テスト環境でテスト顧客を作成するところから始めましょう。Stripe ダッシュボード に移動し、 顧客を追加 をクリックします。そして、ダイアログボックスにテスト情報を入力します。テスト顧客を作成したら、cus_ ID をコピーします。
Stripe ダッシュボードまたは API を使用して、Stripe の実装で使用する追加オブジェクト (PaymentIntents、Charges、PaymentMethods、継続的な Subscriptions など) を作成できます。この Customer オブジェクトに対して、基本的な未確定の PaymentIntent を以下のように作成します。
詳しくは、PaymentIntents 導入ガイド をご覧ください。
この最初の実行では、後でジョブのケイパビリティを示すために、この PaymentIntent を未完了のままにします。ダッシュボードで顧客を表示すると、以下のように表示されます。

ダッシュボードでの未確定の支払い
非表示ジョブを作成する
編集可能なオブジェクトがいくつか追加された Customer が作成されたので、テスト顧客 ID を使用して非表示ジョブを作成します。リクエストは次のようになります。
{ "id": "prj_xxx", "object": "privacy.redaction_job", "created": 1234567890, "livemode": false, "status": "validating", "validation_behavior": "error" }
デフォルトでは、validation_ は error に設定されています。これは設定可能であり、詳細についてはガイドの次のステップで説明します。
非表示ジョブオブジェクトを表示する
ジョブのステータスが変わると、Stripe は Webhook を送信します。Stripe ダッシュボードで Webhook イベントを表示できます。詳細については、Webhook のドキュメントをご覧ください。
非表示ジョブの取得を使用して、ジョブのステータスを確認することもできます。
ジョブのステータスが validating と表示されます。これは、指定されたオブジェクトと関連オブジェクトが非表示の対象となるかどうかの確認を、ジョブが現在行っていることを意味します。このプロセスは、指定されたオブジェクトに関連するオブジェクトの数によっては、時間がかかる場合があります。
ジョブでエラーや制限が見つからなかった場合、ステータスは ready に変わります。それ以外の場合は、failed に変わります。
すでに PaymentIntent を作成していて、それを未完了のままにしていた場合、ステータスは failed になります。
検証エラーを確認する
ジョブが失敗した場合は、検証エラーエンドポイントを使用してエラーのリストを確認できます。以前に作成した未完了の PaymentIntent から、以下のレスポンスが表示されます。
{ "object": "list", "data": [ { "id": "prjve_123", "object": "privacy.redaction_job_validation_error", "code": "invalid_state", "erroring_object": { "id": "pi_123", "object_type": "payment_intent" }, "message": "PaymentIntent is not finalized. Confirm or cancel the PaymentIntent." } ], "has_more": false, "url": "/v1/privacy/redaction_jobs/:job/validation_errors" }
エラーメッセージは、オブジェクトを非表示にできない理由を示しています。これらの制限された内容は、オブジェクトの非表示に対応できるかどうかと、製品の動作とが混在しています。一部のオブジェクトを非表示にすると異なる結果になる可能性があるため、オブジェクトを非表示にする前にお客様側で何らかのアクションを行う必要があります。この例では、Stripe APIまたはダッシュボードを使用して、PaymentIntentを確認またはキャンセルすることで、必要なアクションを実行できます。ユースケースによっては、顧客データを維持するビジネス上の理由がない場合、非表示にされたジョブの検証動作を使用して、推奨される修正を自動的に適用することができます。
検証の動作
検証動作には、error と fix の 2 つのモードがあります。モードは次のように更新できます。
{ "id": "prj_xxx", "object": "privacy.redaction_job", "created": 1234567890, "livemode": false, "status": "failed", "validation_behavior": "fix" }
必要に応じて、以下を使用して validation_ を error に戻すこともできます。
検証の動作を設定しても、構成が変更されるだけで、その他の変更はありません。修正アクションはジョブの実行時に適用されます。修正の検証は破壊的な動作として扱います。修正のリストと、適用される修正を確認できます。
非表示ジョブを再度検証する
ジョブが検証に失敗した場合、そのジョブは failed ステータスのままになります。validation_ または手動による変更によってすべての検証エラーに対処した後、ジョブを検証します。
{ "id": "prj_xxx", "object": "privacy.redaction_job", "created": 1234567890, "livemode": false, "status": "validating", "validation_behavior": "fix" }
PaymentIntent の例では、検証動作を修正すると、検証エラーが解決されます。他の Stripe プロダクトでオブジェクトを非表示にする場合は、ステップを繰り返して検証エラーを確認します。このエラーはすべて解決され、ジョブのステータスが ready になります。
{ "id": "prj_xxx", "object": "privacy.redaction_job", "created": 1234567890, "livemode": false, "status": "ready", "validation_behavior": "fix" }
非表示ジョブを実行する
ジョブが ready ステータスになったら、実行できます。これにより、ジョブは redacting ステータスになります。これ以上の対応は必要ありません。
{ "id": "prj_xxx", "object": "privacy.redaction_job", "created": 1234567890, "livemode": false, "status": "redacting", "validation_behavior": "fix" }
検証が完了すると、ステータスが succeeded に移行します。
{ "id": "prj_xxx", "object": "privacy.redaction_job", "created": 1234567890, "livemode": false, "status": "succeeded", "validation_behavior": "fix" }
ダッシュボードと API で非表示となった関連オブジェクトも表示されます。
{ "id": "cus_xxx", "object": "customer", "deleted": true }
{ "id": "pi_xxx", "object": "payment_intent", "amount": 999, ... "amount_received": 999, ... "confirmation_method": "automatic", "created": 1234567890, "currency": "usd", "customer": "cus_xxx", "description": "[redacted]", "last_payment_error": null, "latest_charge": "ch_xxx", ... "payment_method": "pm_xxx", "payment_method_configuration_details": { "id": "pmc_xxx", "parent": null }, ... }
非表示ジョブをキャンセルする
検証後、非表示前の任意の時点で、ジョブをキャンセルしてすべての変更を破棄できます。一度に任意のオブジェクトと対話できるジョブは 1 つだけであるため、同じオブジェクトを直接または暗黙的に編集する複数のジョブを作成すると、後のジョブでエラーが発生します。任意のジョブをキャンセルすると、オブジェクトが解放され、他のジョブがオブジェクトを再び編集できるようになります。
PaymentIntent を使用したサンプルジョブはすでに実行されているため、そのジョブをキャンセルすることはできません。これをテストするには、次のように新しい非表示ジョブを作成してキャンセルします。
「このオブジェクトは別のアクティブなジョブによって処理されています」という検証エラーが発生した場合は、そのジョブをキャンセルすることでオブジェクトを解放できます。
顧客を検索する
個人に関連する情報を非表示にするには、関連付けられている Customer オブジェクト ID を特定します。これは、Customer Search エンドポイント、ダッシュボードの顧客ページ、またはページの上部にあるダッシュボードの検索バーを使用して確認できます。
顧客が見つかったら、ID をコピーします。ダッシュボードを使用している場合は、顧客 ID のすぐ下をクリックしてコピーできます。