# 本人確認チェック

Stripe Identity がサポートするさまざまな本人確認チェックについてご紹介します。

Stripe Identity は、6 種類の本人確認チェック (書類、顔写真、ID 番号、住所、電話番号、メール) に対応しています。

本人確認チェックの種類によって、ユーザーから提供してもらう情報やその対応範囲、確認手順が異なります。いずれかのチェックを導入した後は、実装をわずかに変更するだけで別のチェックを追加できます。

## Before you begin

- ダッシュボードで [Stripe Identity を有効にします](https://dashboard.stripe.com/identity/application)。
- [サーバー側の Stripe SDK](https://docs.stripe.com/sdks/server-side.md) を設定します。

# 顔写真


書類チェックを行うことで、不正な本人確認書類の使用を未然に防ぐことができますが、不正行為者が盗まれた正規書類を入手する可能性は依然としてあります。こうしたケースを防ぐため、Stripe Identity ではユーザーに対し顔写真のチェックを行うことができます。

顔写真チェックでは、公的な本人確認書類 (顔写真付き) とユーザーの顔写真から、顔の形などの生物学的特徴を検出し、機械学習アルゴリズムを使用して、両方の顔写真が同一人物のものであることを確認します。

EU など一部の地域では、個人情報保護法により、生体認証技術の使用が正当である理由を示すか、生体認証以外の認証手段を提供することが義務付けられています。代替となる認証手段を用意するか、法律顧問に相談されることをお勧めします。

## 利用可能対象

顔写真チェックで使用できるのは、以下の国の公的な本人確認書類 (顔写真付き) です。

- AD
- AE
- AF
- AG
- AL
- AM
- AO
- AR
- AT
- AU
- AW
- AZ
- BA
- BB
- BD
- BE
- BF
- BG
- BH
- BJ
- BM
- BN
- BO
- BR
- BS
- BW
- BY
- BZ
- CA
- CD
- CG
- CH
- CI
- CL
- CM
- CN
- CO
- CR
- CV
- CW
- CY
- CZ
- DE
- DK
- DO
- DZ
- EC
- EE
- EG
- ES
- ET
- FI
- FJ
- FR
- GB
- GD
- GE
- GF
- GG
- GH
- GI
- GM
- GN
- GP
- GR
- GT
- GU
- GY
- HK
- HN
- HR
- HT
- HU
- ID
- IE
- IL
- IM
- IN
- IQ
- IS
- IT
- JE
- JM
- JO
- JP
- KE
- KG
- KH
- KR
- KW
- KY
- KZ
- LA
- LB
- LC
- LI
- LK
- LT
- LU
- LV
- MA
- MC
- MD
- ME
- MG
- MK
- ML
- MM
- MN
- MO
- MQ
- MR
- MT
- MU
- MV
- MW
- MX
- MY
- MZ
- NA
- NC
- NG
- NI
- NL
- NO
- NP
- NZ
- OM
- PA
- PE
- PF
- PG
- PH
- PK
- PL
- PR
- PS
- PT
- PY
- QA
- RE
- RO
- RS
- RU
- RW
- SA
- SC
- SE
- SG
- SI
- SK
- SL
- SN
- SO
- SR
- SV
- SX
- TC
- TD
- TG
- TH
- TN
- TR
- TT
- TW
- TZ
- UA
- UG
- US
- UY
- UZ
- VE
- VG
- VI
- VN
- YT
- ZA
- ZM
- ZW

## 顔写真チェックを追加する

アプリケーションに顔写真チェックを追加するには、まず [本人確認書類を収集と検証](https://docs.stripe.com/identity/verify-identity-documents.md) のガイドに従ってください。

[VerificationSession を作成](https://docs.stripe.com/api/identity/verification_sessions/create.md)する際、[options.document.require_matching_selfie](https://docs.stripe.com/api/identity/verification_sessions/create.md#create_identity_verification_session-options-document-require_matching_selfie) パラメーターを使用して顔写真チェックを有効にします。

```curl
curl https://api.stripe.com/v1/identity/verification_sessions \
  -u "<<YOUR_SECRET_KEY>>:" \
  -d type=document \
  -d "options[document][require_matching_selfie]=true"
```

これにより、政府発行の写真付き身分証明書とユーザーの顔写真を要求する確認フローが構成されます。

## 顔写真チェックの結果にアクセスする

送信された `VerificationSession` を Stripe が処理すると、チェックの結果に応じてセッションのステータスが以下のように変化します。

- `verified`: 書類チェックと顔写真チェックの両方に成功しました。セッションの [verified_outputs](https://docs.stripe.com/api/identity/verification_sessions/object.md#identity_verification_session_object-verified_outputs) には、書類から抽出された情報が含まれています。
- `requires_input`: 書類チェックと顔写真チェックのうち、少なくとも一方が失敗しました。

キャプチャーされた顔写真や書類画像を取得するには、セッションの [last_verification_report](https://docs.stripe.com/api/identity/verification_sessions/object.md#identity_verification_session_object-last_verification_report) フィールドを[展開](https://docs.stripe.com/api/expanding_objects.md)して、関連する [VerificationReport](https://docs.stripe.com/api/identity/verification_reports.md) を取得します。このレポートには画像のファイル ID が含まれています。

#### Node.js

```javascript

// Don't put any keys in code. See https://docs.stripe.com/keys-best-practices.
// Find your keys at https://dashboard.stripe.com/apikeys.
const stripe = require('stripe')('<<YOUR_SECRET_KEY>>');
const verificationSession = await stripe.identity.verificationSessions.retrieve(
  '{{SESSION_ID}}',
  {
    expand: ['last_verification_report'],
  }
);
const verificationReport = verificationSession.last_verification_report;
```

`VerificationReport` には、書類チェックと顔写真チェックの結果を保持する [document](https://docs.stripe.com/api/identity/verification_reports/object.md#identity_verification_report_object-document) フィールドと [selfie](https://docs.stripe.com/api/identity/verification_reports/object.md#identity_verification_report_object-selfie) フィールドがあります。以下の `VerificationReport` の例では、書類チェックと顔写真チェックの両方が成功しています。

```json
{
  "id": "vr_orWziM4j7CiRL8J4vQmXgW2w",
  "object": "identity.verification_report",
  "type": "document",
  "verification_session": "vs_orWziM4j7CiRL8J4vQmXgW2w",
  "created": 1611776872,
  "livemode": true,
  "options": {
    "document": {
      "require_matching_selfie": true
    }
  },
  "document": {
    "status": "verified",
    "error": null,
    "first_name": "Jenny",
    "last_name": "Rosen",
    "address": {
      "line1": "1234 Main St.",
      "city": "San Francisco",
      "state": "CA",
      "postal_code": "94111",
      "country": "US"
    },
    "type": "id_card",
    "expiration_date": {
      "day": 17,
      "month": 7,
      "year": 2030
    },
    "files": ["file_orWziM4j7CiRL8J4vQmXgW2w", "file_orWziM4j7CiRL8J4vQmXgW2w"],
    "issued_date": {
      "day": 27,
      "month": 4,
      "year": 2021
    },
    "issuing_country": "US"
  },
  "selfie": {
    "status": "verified",
    "error": null,
    "document": "file_orWziM4j7CiRL8J4vQmXgW2w",
    "selfie": "file_orWziM4j7CiRL8J4vQmXgW2w"
  }
}
```

収集された書類と顔の画像にアクセスするには、[検証結果へのアクセス](https://docs.stripe.com/identity/access-verification-results.md) を参照してください。

## 顔写真チェックの失敗に対処する

VerificationReport の [document](https://docs.stripe.com/api/identity/verification_reports/object.md#identity_verification_report_object-document) フィールドと [selfie](https://docs.stripe.com/api/identity/verification_reports/object.md#identity_verification_report_object-selfie) フィールドには、収集されたデータのほか、チェックが成功したかどうかを示す `status` フィールドおよび `error` フィールドが含まれています。

`status` フィールドでは、各チェックが成功したかどうかを確認できます。表示される可能性のある値は以下のとおりです。

- `verified`: 本人確認チェックは成功し、収集されたデータが真正なものであることが確認されました。
- `unverified`: 本人確認チェックが失敗しました。詳細については `error` ハッシュを参照してください。

本人確認チェックが失敗した場合、`error` フィールドに含まれる `code` と `reason` の値から失敗の理由を確認できます。本人確認の失敗をプログラムで処理するには `error.code` を使用します。`reason` フィールドには失敗の理由を説明するメッセージが含まれており、ユーザーに表示することができます。

### 書類チェックの失敗

失敗の詳細はレポートの [document.error](https://docs.stripe.com/api/identity/verification_reports/object.md#identity_verification_report_object-document-error) フィールドに表示されます。

| エラーコード                        | 説明                                                                                                                                                                                          |
| ----------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `document_expired`            | 提供された身分証明書の有効期限が切れています。                                                                                                                                                                     |
| `document_unverified_other`   | Stripe は、提供された本人確認書類を確認できませんでした。[対応している書類タイプのリストをご覧ください](https://docs.stripe.com/identity/verification-checks.md?type=document)。                                                            |
| `document_type_not_supported` | 提供された本人確認書類は、セッションで[許可されている書類のタイプ](https://docs.stripe.com/api/identity/verification_sessions/create.md#create_identity_verification_session-options-document-allow_document_types)ではありません。 |

### 顔写真チェックの失敗

失敗の詳細はレポートの [selfie.error](https://docs.stripe.com/api/identity/verification_reports/object.md#identity_verification_report_object-selfie-error) フィールドに表示されます。

| エラーコード                          | 説明                           |
| ------------------------------- | ---------------------------- |
| `selfie_document_missing_photo` | 提供された身分証明書に顔の写真が含まれていませんでした。 |
| `selfie_face_mismatch`          | 撮影された顔の画像は文書の顔と一致しませんでした。    |
| `selfie_unverified_other`       | Stripeは、提供された顔写真を確認できませんでした。 |
| `selfie_manipulated`            | 撮影された顔の画像が加工処理されていました。       |


## See also

- [ユーザーの本人確認書類を確認する](https://docs.stripe.com/identity/verify-identity-documents.md)
- [Verification Session API](https://docs.stripe.com/identity/verification-sessions.md#create)
