# 非表示ジョブを完了する 最初の非表示ジョブを完了する方法をご紹介します。 この例では、非表示ジョブを使用して顧客の個人データを非表示にします。これにより、Stripe API とダッシュボードでは、そのデータにアクセスできなくなります。 ## 最初のジョブを作成し、テスト顧客を非表示にする [RedactionJob](https://docs.stripe.com/api/privacy/redaction-job.md) オブジェクトは、操作する主要なオブジェクトであり、すべての非表示リクエストを管理するための中核となる、抽象化オブジェクトです。RedactionJob オブジェクトを使用して、対象のオブジェクトを示し、それらが適格であることを確認してから、非表示を実行できます。 ```curl curl https://api.stripe.com/v1/privacy/redaction_jobs \ -u "<>:" \ -d "objects[customers][]=cus_1xx" \ -d "objects[customers][]=cus_2xx" ``` ジョブを作成すると、指定されたオブジェクトの非表示の適格性の確認が開始されます。`Customer` オブジェクトの場合、非表示ジョブは、PaymentIntents、Charges、Subscriptions、Invoices、PaymentMethods、Notifications など、その顧客に関連するすべてのオブジェクトを識別します。これらのオブジェクトの中には、顧客が購入したり、または支払いの詳細を追加したりできる頻度に直接関連する、何百ものレコードが含まれる場合があります。 同じ顧客が所有するオブジェクトに追加の ID を指定できますが、明示的に定義する必要はありません。新しいジョブごとに非表示にするオブジェクト識別子は 10 個に制限されています。 ## テストデータを使用して顧客を設定する 非表示のジョブを作成する前に、まずサンドボックスでテスト顧客を作成します。[Stripe ダッシュボード](https://dashboard.stripe.com/test/customers)に移動し、**顧客を追加** をクリックして、ダイアログにテスト情報を入力します。顧客を作成したら、`cus_` ID をコピーします。 Stripe ダッシュボードまたは API を使用して、Stripe の実装で使用する追加オブジェクト (`PaymentIntents`、`Charges`、`PaymentMethods`、継続的な `Subscriptions` など) を作成できます。この `Customer` オブジェクトに対して、基本的な未確定の `PaymentIntent` を以下のように作成します。 ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d "objects[amount]=999" \ -d "objects[currency]=usd" \ -d "objects[customer]=ADD_CUS_ID_HERE" \ -d "objects[description]=Test charge" ``` 詳しくは、[PaymentIntents 導入ガイド](https://docs.stripe.com/payments/payment-intents.md#creating-a-paymentintent) をご覧ください。 この最初の実行では、後でジョブのケイパビリティを示すために、この PaymentIntent を未完了のままにします。ダッシュボードで顧客を表示すると、以下のように表示されます。 ![ダッシュボードでの未確定の支払い](https://b.stripecdn.com/docs-statics-srv/assets/payment-in-dashboard.67647e73eec0ab69a78848e01b057293.png) ダッシュボードでの未確定の支払い ## 非表示ジョブを作成する 編集可能なオブジェクトがいくつか追加された Customer が作成されたので、テスト顧客 ID を使用して非表示ジョブを作成します。リクエストは次のようになります。 ```curl curl https://api.stripe.com/v1/privacy/redaction_jobs \ -u "<>:" \ -d "objects[customers][]=ADD_CUS_ID_HERE" ``` ```json { "id": "prj_xxx", "object": "privacy.redaction_job", "created": 1234567890, "livemode": false,"status": "validating", "validation_behavior": "error" } ``` デフォルトでは、`validation_behavior` は `error` に設定されています。これは設定可能であり、詳細についてはガイドの次のステップで説明します。 ## 非表示ジョブオブジェクトを表示する ジョブのステータスが変わると、Stripe は Webhook を送信します。Stripe ダッシュボードで [Webhook イベント](https://dashboard.stripe.com/test/events)を表示できます。詳細については、[Webhook のドキュメント](https://docs.stripe.com/webhooks.md#webhook-endpoint-def)をご覧ください。 [非表示ジョブの取得](https://docs.stripe.com/api/privacy/redaction-job/retrieve.md)を使用して、ジョブのステータスを確認することもできます。 ```curl curl https://api.stripe.com/v1/privacy/redaction_jobs/prj_xxx \ -u "<>:" ``` ジョブのステータスが `validating` と表示されます。これは、指定されたオブジェクトと関連オブジェクトが非表示の対象となるかどうかの確認を、ジョブが現在行っていることを意味します。このプロセスは、指定されたオブジェクトに関連するオブジェクトの数によっては、時間がかかる場合があります。 ジョブでエラーや制限が見つからなかった場合、ステータスは `ready` に変わります。それ以外の場合は、`failed` に変わります。 すでに PaymentIntent を作成していて、それを未完了のままにしていた場合、ステータスは `failed` になります。 ## 検証エラーを確認する ジョブが失敗した場合は、検証エラーエンドポイントを使用してエラーのリストを確認できます。以前に作成した未完了の PaymentIntent から、以下のレスポンスが表示されます。 ```curl curl https://api.stripe.com/v1/privacy/redaction_jobs/prj_xxx/validation_errors \ -u "<>:" ``` ```json { "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 つのモードがあります。モードは次のように更新できます。 ```curl curl https://api.stripe.com/v1/privacy/redaction_jobs/prj_xxx \ -u "<>:" \ -d validation_behavior=fix ``` ```json { "id": "prj_xxx", "object": "privacy.redaction_job", "created": 1234567890, "livemode": false, "status": "failed","validation_behavior": "fix" } ``` 必要に応じて、以下を使用して `validation_behavior` を `error` に戻すこともできます。 ```curl curl https://api.stripe.com/v1/privacy/redaction_jobs/prj_xxx \ -u "<>:" \ -d validation_behavior=error ``` 検証の動作を設定しても、構成が変更されるだけで、その他の変更はありません。修正アクションはジョブの実行時に適用されます。修正の検証は破壊的な動作として扱います。[修正のリスト](https://docs.stripe.com/privacy/redaction.md#fix-validation-behaviors)と、適用される修正を確認できます。 ## 非表示ジョブを再度検証する ジョブが検証に失敗した場合、そのジョブは `failed` ステータスのままになります。`validation_behavior: fix` または手動による変更によってすべての検証エラーに対処した後、ジョブを検証します。 ```curl curl -X POST https://api.stripe.com/v1/privacy/redaction_jobs/prj_xxx/validate \ -u "<>:" ``` ```json { "id": "prj_xxx", "object": "privacy.redaction_job", "created": 1234567890, "livemode": false,"status": "validating", "validation_behavior": "fix" } ``` PaymentIntent の例では、検証動作を修正すると、検証エラーが解決されます。他の Stripe プロダクトでオブジェクトを非表示にする場合は、[ステップ](https://docs.stripe.com/privacy/redaction/example.md#validation-errors)を繰り返して検証エラーを確認します。このエラーはすべて解決され、ジョブのステータスが `ready` になります。 ```curl curl https://api.stripe.com/v1/privacy/redaction_jobs/prj_xxx \ -u "<>:" ``` ```json { "id": "prj_xxx", "object": "privacy.redaction_job", "created": 1234567890, "livemode": false,"status": "ready", "validation_behavior": "fix" } ``` ## 非表示ジョブを実行する ジョブが `ready` ステータスになったら、実行できます。これにより、ジョブは `redacting` ステータスになります。これ以上の対応は必要ありません。 ```curl curl -X POST https://api.stripe.com/v1/privacy/redaction_jobs/prj_xxx/run \ -u "<>:" ``` ```json { "id": "prj_xxx", "object": "privacy.redaction_job", "created": 1234567890, "livemode": false,"status": "redacting", "validation_behavior": "fix" } ``` 検証が完了すると、ステータスが `succeeded` に移行します。 ```json { "id": "prj_xxx", "object": "privacy.redaction_job", "created": 1234567890, "livemode": false,"status": "succeeded", "validation_behavior": "fix" } ``` ダッシュボードと API で非表示となった関連オブジェクトも表示されます。 ```curl curl https://api.stripe.com/v1/customers/cus_xxx \ -u "<>:" ``` ```json { "id": "cus_xxx", "object": "customer","deleted": true } ``` ```curl curl https://api.stripe.com/v1/payment_intents/pi_xxx \ -u "<>:" ``` ```json { "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 を使用したサンプルジョブはすでに実行されているため、そのジョブをキャンセルすることはできません。これをテストするには、次のように[新しい非表示ジョブを作成](https://docs.stripe.com/privacy/redaction/example.md#create-job)してキャンセルします。 ```curl curl -X POST https://api.stripe.com/v1/privacy/redaction_jobs/A_DIFFERENT_REDACTION_JOB_ID/cancel \ -u "<>:" ``` 「このオブジェクトは別のアクティブなジョブによって処理されています」という検証エラーが発生した場合は、そのジョブをキャンセルすることでオブジェクトを解放できます。 ## 顧客を検索する 個人に関連する情報を非表示にするには、関連付けられている `Customer` オブジェクト ID を特定します。これは、[Customer Search エンドポイント](https://docs.stripe.com/api/customers/search.md)、[ダッシュボードの顧客ページ](https://dashboard.stripe.com/customers)、またはページの上部にあるダッシュボードの検索バーを使用して確認できます。 顧客が見つかったら、ID をコピーします。ダッシュボードを使用している場合は、**顧客 ID** のすぐ下をクリックしてコピーできます。 ## See also - [個人データを非表示にする](https://docs.stripe.com/privacy/redaction.md) - [Redaction Jobs API リファレンス](https://docs.stripe.com/api/privacy/redaction-job.md) - [顧客の削除リクエストを処理する](https://docs.stripe.com/privacy/deletion-requests.md)