> ## Documentation Index
> Fetch the complete documentation index at: https://docs.didit.me/llms.txt
> Use this file to discover all available pages before exploring further.

# Shopify KYCアプリ - 本人確認・年齢確認

> DiditのShopifyアプリで、チェックアウト時の本人確認・年齢制限・KYCをノーコードで導入できます。フルKYCは1件$0.33から、毎月$10の無料枠付きで契約不要です。

Diditの本人確認と年齢制限を、Shopifyストアに数分で追加できます。
**Didit Verify** Shopifyアプリは、任意のページ（アカウント、チェックアウト、カスタムランディングページ）に配置できるテーマブロックをインストールし、本人確認セッションをサーバー側で作成します。APIキーは埋め込みアプリ内に保持され、ストアフロントに公開されることはありません。
検証結果はShopify管理画面のアプリ内にある**Verifications**タブに直接表示されるため、別途バックエンドを用意する必要はありません。独自のバックエンドを運用するマーチャントは、[Webhook](https://docs.didit.me/ja/integration/webhooks.md)および[Didit API](https://docs.didit.me/ja/sessions-api/retrieve-session.md)からも結果を取得できます。
Shopify経由で収集した本人確認データにアクセスするために、Didit Business Consoleにログインする必要はありません。

## 前提条件

* Shopifyストア（プランは問いません）
* ワークフローを1つ以上作成済みの[Didit Console](https://business.didit.me)アカウント

***

### ステップ1: アプリをインストールする

1. インストールリンクを開きます。

   [[https://admin.shopify.com/oauth/install?client\_id=cafa0d15227fb59bd47470b23eae7469](https://admin.shopify.com/oauth/install?client_id=cafa0d15227fb59bd47470b23eae7469)](https://admin.shopify.com/oauth/install?client_id=cafa0d15227fb59bd47470b23eae7469)

2. ストアを選択します（複数のストアをお持ちの場合）

3. **Install**をクリックして、アプリをストアに追加します

> [!NOTE]
>
> このアプリが要求する権限スコープは`read_customers`の1つのみです。このスコープは、**Allow customer-approved prefill**が有効になっており、かつログイン中の顧客が任意の共有チェックボックスを選択した場合に限り、情報の事前入力と照合に使用されます。

***

### ステップ2: Diditの認証情報を設定する

インストールが完了すると、Didit VerifyがShopify管理画面内で開きます。
**Settings**から、アプリをDiditアカウントに接続します。

#### APIキーを取得する

1. [Didit Business Console](https://business.didit.me)にログインします
2. 左側のサイドバーで**API & Webhooks**に移動します
3. APIキーをコピーします

![Didit Business ConsoleでAPIキーを取得する方法](https://mintcdn.com/didit-0f962782/gKLcMCmiLycklBol/images/shopify-how-to-get-api-key.jpg?fit=max\&auto=format\&n=gKLcMCmiLycklBol\&q=85\&s=9027ca685cc296a400e78d320a566453)

4. Shopifyの設定画面にある**Didit API Key**フィールドにAPIキーを貼り付けます

#### ワークフローIDを取得する

1. Didit Business Consoleで**Workflows**に移動します
2. 使用するワークフローを選択します（または新しく作成します）
3. **Workflow ID**（`xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx`のようなUUID）をコピーします

![Didit Business ConsoleでワークフローIDを取得する方法](https://mintcdn.com/didit-0f962782/gKLcMCmiLycklBol/images/shopify-how-to-get-workflow-id.jpg?fit=max\&auto=format\&n=gKLcMCmiLycklBol\&q=85\&s=529dc681169efc0a6cdc96d6c0e0a605)

4. **Didit Workflow ID**フィールドにワークフローIDを貼り付けます

#### 設定を保存する

保存する前に、**Data retention**で保持期間を選択してください。
この期間はストアの既存および今後のすべての検証に適用されるため、ストアに必要な期間を選択してください。
**Save Settings**をクリックします。
次のような成功メッセージが表示されます。

![Shopifyの設定が正常に保存された画面](https://mintcdn.com/didit-0f962782/gKLcMCmiLycklBol/images/shopify-settings-saved-successfuly.jpg?fit=max\&auto=format\&n=gKLcMCmiLycklBol\&q=85\&s=93dcf3469f902876ae831075da75a628)

***

### ステップ3: テーマに検証ボタンを追加する

1. Shopify管理画面で**Online Store** → **Themes**に移動します
2. 公開中のテーマで**Customize**をクリックします
3. 検証ボタンを配置したいページ（例: アカウントページ、カスタムページ）に移動します
4. **Add section**または**Add block**をクリックします
5. **Apps**タブに移動します
6. **Didit Verify**を選択します

テーマに検証ボタンが表示されます。ドラッグすると、セクション内で位置を変更できます。

***

## 検証データへのアクセス

Shopifyのアプリ審査（要件5.1.5）では、Shopifyでホストされるフローを通じて収集したデータに、外部のダッシュボードだけでなく**Shopify管理画面またはアプリのコンテキスト内**でマーチャントがアクセスできることが求められます。
Didit Verifyアプリは追加設定なしでこの要件を満たします。バックエンド、Webhookの受信側、カスタムUIは必要ありません。

### 検証タブ (デフォルト、ノーコード)

Shopify管理画面で**アプリ** → **Didit Verify** → **検証**を開くと、ストアフロントを通じて収集したすべての検証セッションが、ステータス、顧客、国、タイムスタンプとともにショップ単位で表示されます。
セッションを選択すると、判定の概要、本人情報のフィールド、個々の検証チェック、警告、利用可能な証拠を確認できます。
Shopify管理画面から離れることなく、**設定**、**検証**、**プライバシー**、**Human review**の各タブを切り替えられます。
設定を保存すると、これらのタブは引き続き利用できます。

> [!NOTE]
>
> 検証タブは、Shopify管理画面からアプリを開いた場合にのみデータを読み込みます。ページを開き直すよう求めるメッセージが表示された場合は、Shopify管理画面のサイドバーから**アプリ** → **Didit Verify**に戻ってください。

Didit Business Console（`business.didit.me`）は、設定（APIキー、ワークフロー、Webhookの送信先）のための別の管理画面です。
Shopifyを通じて収集した検証データを閲覧するためにBusiness Consoleを使うようマーチャントに案内しないでください。それではShopifyのデータアクセス要件を満たしません。
Business Consoleが必要なのは、初期設定と認証情報の取得のときだけです。

### 独自のバックエンドを運用するマーチャント向け (任意)

独自のバックエンドを運用していて、たとえばフルフィルメントのロジックをトリガーするために検証データのコピーをそこに保持したい場合、Diditは上記の検証タブに加えて、Webhookとオンデマンドの API でも結果を配信します。

**1. 検証セッションの作成**

ShopifyアプリがDiditのAPIキーを使ってサーバー側でセッションを作成します。顧客はテーマブロック（モーダルまたは埋め込み）で検証フローを完了します。

**2. Webhookによる結果の配信**

セッションが終了ステータスに達すると、DiditはDidit Business Consoleの**API・Webhook**で設定した送信先に、署名付きの`status.updated` Webhookを送信します。
`Approved`、`Declined`、`In Review`、`Abandoned`の各ステータスでは、Webhookの本文に完全な[判定オブジェクト](https://docs.didit.me/ja/integration/webhooks.md#ペイロードの構造)が含まれます。これは`GET /v3/session/{id}/decision/`が返すものと同じスキーマです。
その他の終了ステータス（例: `Expired`、`Kyc Expired`）では、判定ペイロードを含まずにステータスの変更のみが配信されます。セッションの状態を確認するにはAPIを呼び出してください。

**3. オンデマンドでの取得 (任意)**

バックエンドからいつでも[`GET /v3/session/{sessionId}/decision/`](https://docs.didit.me/ja/sessions-api/retrieve-session)を呼び出して、完全な判定ペイロード（本人情報のフィールド、ライブネス、AML、顔照合など）を取得することもできます。

#### Shopify向けのWebhookの設定

1. [Didit Business Console](https://business.didit.me)で、**API・Webhook** → **Webhook**に移動します
2. バックエンドのエンドポイント（HTTPS、公開アクセス可能）を指すWebhookの送信先を作成します
3. 少なくとも`status.updated`と`data.updated`のイベントをサブスクライブします
4. 返される`secret_shared_key`を保存し、受信したWebhookのHMAC-SHA256署名の検証に使用します

完全な仕様、Node.js/Python/PHPでの署名検証の例、再試行の動作については、[Webhookガイド](https://docs.didit.me/ja/integration/webhooks.md)を参照してください。

#### APIによるセッションの判定の取得

```bash theme={null}
curl https://verification.didit.me/v3/session/<SESSION_ID>/decision/ \
  -H "x-api-key: <YOUR_API_KEY>"
```

レスポンスには、`session_kind`、`status`、およびすべての機能の配列（`id_verifications`、`liveness_checks`、`face_matches`、`aml_screenings`など）が含まれます。完全なレスポンススキーマとフィールドのリファレンスについては、[Retrieve Session](https://docs.didit.me/ja/sessions-api/retrieve-session.md)を参照してください。

***

## 設定オプション

### 設定ページの項目

これらの設定は、アプリの設定画面（Shopify管理画面の**Apps** → **Didit Verify**からアクセス可能）で行います。

| 設定 | 説明 |
| - | - |
| **APIキー** | DiditのAPIキー（必須） |
| **ワークフロー ID** | 使用する検証ワークフロー（必須） |
| **ベンダーデータ** | Didit Consoleでセッションをユーザーに紐付ける方法: **顧客ID**（`shopify-<customer-id>`として送信）、**Customer Email**、**Shop + Customer ID**（`<shop-domain>-<customer-id>`として送信）、または**なし**。顧客がログインしている場合にのみ適用されます。 |
| **コールバックURL** | 検証後にユーザーをリダイレクトする任意のURL。Diditは`verificationSessionId`と`status`をクエリパラメーターとして付加します。 |
| **Callback Method** | リダイレクトを処理するデバイス: **Default (initiator)**、**Initiator**、**Completer**、または**両方** |
| **言語** | 検証UIの言語（自動検出または特定の言語） |
| **Require Customer Login** | 有効にすると、ログインしている顧客のみが検証を行えます |
| **Allow customer-approved prefill** | ログインしている顧客の氏名、メールアドレス、電話番号、住所を事前入力および本人確認のために共有する任意のチェックボックスを表示します。情報は顧客がチェックボックスを選択した場合にのみ送信されます。 |
| **Automatically delete after (days)** | ストアが検証記録を必要とする期間を選択します。選択した期間は、このストアの既存および今後の記録に適用されます。削除は取り消せません。 |

### 顧客のプライバシーに関する選択

ストアフロントのブロックには、事前入力および本人確認のためにアカウント情報を共有する任意のチェックボックスがあります。
チェックを入れない場合、顧客は自分で情報を入力できます。

**Verification choices**では、サインインしている顧客は、人によるレビューをリクエストするか、同意を撤回して検証データの削除をリクエストできます。
人によるレビューをリクエストすると、自動検証が一時停止され、**Apps → Didit Verify → Human review**にリクエストが追加されます。
そのリクエストを完了する前に、顧客に連絡し、適切な代替手段を手配してください。
人によるレビューのリクエストを完了しても、検証や購入が承認されるわけではありません。

同意を撤回すると、既存の認証リンクは直ちに停止し、削除の処理中は新たな検証が行えなくなります。
ストアフロントはリクエストの受領を確認しますが、削除がすでに完了したとは表示しません。

## プライバシーリクエストへの対応

**Apps → Didit Verify → Privacy**を開くと、Shopifyまたはストアフロントから受け取った顧客データのエクスポートリクエストと削除リクエストを追跡できます。

* **顧客データのエクスポート:** 準備されたZIPをダウンロードし、安全なカスタマーサポートの手順で顧客に提供してから、**I have delivered this export**を選択します。
* **顧客データの削除:** 顧客のストアに関連付けられた認証記録、アップロードされたファイル、人によるレビューのリクエストがすべて削除されるまで、リクエストは処理中のままです。
* **対応が必要:** リクエストに表示される指示に従って、欠落している顧客IDを解決してください。プロファイルに別のストアや別の目的のデータが含まれている場合は、Diditサポートにお問い合わせください。

エクスポートには、リクエスト元のストアと顧客に関連付けられた認証記録、アップロードされたファイル、人によるレビューのリクエストが含まれます。
一時的なダウンロードは7日後に期限切れになります。必要に応じて、**Retry after resolving**を使用して新しいダウンロードを準備してください。
ダウンロードしたエクスポートは、貴社のカスタマーサポートおよびデータ保護の手順に従って取り扱う必要があります。

保持期間は**Settings → Data retention**で設定します。
それより古い認証データは自動的に削除され、新しい認証は引き続き利用できます。
ストア固有の期間が選択されていない場合は、既存のアプリケーションレベルの保持設定が引き続き適用されます。
対応が必要な保持リクエストがないか、**Privacy**を確認してください。

削除リクエストが**Deleted**と表示されると、削除は元に戻せず、削除されたメディアは利用できなくなります。
消費済みのクレジットと、別途管理されているブロックリストのエントリには影響しません。

## テーマブロックの設定

これらの設定は、Shopifyのテーマエディターで、Didit Verifyブロックを選択して行います。

#### 接続

| 設定 | 説明 |
| - | - |
| **Mode** | **App workflow**(推奨)は、アプリの設定に保存されたワークフローを使用します。**UniLink workflow**は、連携済みのDiditアカウントの公開ワークフローリンクを使用します。どちらのモードでもストアに関連付けられたセッションが作成され、結果はアプリで確認できます。 |
| **UniLink URL** | UniLinkモードでのみ使用します。アプリの設定で連携したDiditアカウントの有効なリンクを使用してください。顧客はストアのアカウントにログインする必要があります。 |

#### 表示

| 設定 | 説明 |
| - | - |
| **Display Mode** | **Modal** - ポップアップのオーバーレイで認証を開きます。**Embedded** - ボタンの下にインラインで認証を表示します。 |
| **Show close button** | 認証モーダルを閉じるXボタンの表示/非表示を切り替えます |
| **Exit confirmation dialog** | 認証を閉じる前にユーザーに確認を求めます |
| **Auto-close on completion** | 認証が完了したときにモーダルを自動的に閉じます |
| **Debug logging** | トラブルシューティング用にブラウザコンソールのログを有効にします |

#### ボタンの外観

| 設定 | 説明 |
| - | - |
| **Button text** | ボタンに表示されるテキスト(デフォルト: "Verify your Identity") |
| **Success text** | 認証に成功した後に表示されるテキスト(デフォルト: "Identity Verified ✓") |
| **Background color** | ボタンの背景色 |
| **Text color** | ボタンのテキストの色 |
| **Border radius** | ボタンの角の丸み(0–50px) |
| **Vertical padding** | 上下のパディング(0–40px) |
| **Horizontal padding** | 左右のパディング(0–60px) |
| **Font size** | ボタンのテキストサイズ(10–32px) |

***

## 推奨設定

ほとんどのストアには、次の設定をおすすめします。

* **Mode:** App workflow(アプリの設定に保存されたワークフローを使用)
* **Display Mode:** Modal(どこでも動作し、レイアウトの問題がない)
* **Require Customer Login:** 有効(認証を顧客アカウントに紐付ける)
* **Allow customer-approved prefill:** 有効(ストアの情報を共有するかどうかを顧客が選択できる)

***

## テスト

1. テーマをプレビューするか、ストアにアクセスします
2. Didit Verifyボタンがあるページに移動します
3. **Verify your Identity**をクリックします
4. 認証フローを完了します
5. バックエンドでWebhookの配信を確認するか、[GET /v3/session/{id}/decision/](https://docs.didit.me/ja/sessions-api/retrieve-session.md)を呼び出して認証結果を取得します

> [!NOTE]
>
> サンドボックスは無料なので(サンドボックスの各アプリケーションは24時間ごとに500件のテストセッションを作成できます)、フロー全体を費用をかけずにテストできます。本番モードでは、Freeプランに毎月\$10分のクレジットが含まれます。

***

## トラブルシューティング

### ボタンをクリックしても何も起こらない

* 設定でAPIキーとWorkflow IDを保存したことを確認してください
* Workflow IDがAPIキーと同じアプリケーションに属していることを確認してください
* ブロックの設定で**Debug logging**を有効にし、ブラウザコンソールでエラーを確認してください

### "Didit credentials not configured"エラー

* このストアについて、アプリにAPIキーまたはWorkflow IDが保存されていません。**Apps** → **Didit Verify**を開き、両方のフィールドを入力して**Save Settings**をクリックしてください

### "You must be logged in to verify your identity"というメッセージが表示される

* **Require Customer Login**が有効になっています(デフォルト)。顧客はまずストアのアカウントにログインする必要があります。ゲストの認証が必要な場合は、アプリの設定でこの設定を無効にしてください

### 設定が保存されない

* "API key validation failed" - [Didit Business Console](https://business.didit.me)からAPIキーをコピーし直し、余分なスペースがないことを確認してください
* "This workflow does not belong to your application" - Workflow IDが、APIキーとは異なるDiditアプリケーションに属しています。両方を同じアプリケーションからコピーしてください

## サポート（24時間365日）

導入から運用開始まで、当社のチームがサポートします。

> [card] [メール](mailto:hello@didit.me)
>
> [hello@didit.me](mailto:hello@didit.me)までメールでお問い合わせください。


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.