> ## 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.

# WordPress KYCプラグイン：WooCommerceの年齢確認

> DiditのWordPress・WooCommerceプラグインで、本人確認、年齢制限、KYCをノーコードで導入できます。フルKYCチェックは1件$0.33から。毎月$10分が無料で、契約は不要です。

WordPressサイトやWooCommerceストアに、Diditの本人確認と年齢制限を追加できます。このプラグインは安全なバックエンドプロキシとして動作するため、APIキーはサーバー上に保持されます。ショートコード、WooCommerceのチェックアウトゲート、開発者向けフックを備えているので、JavaScriptを書かずに本人確認を組み込めます。

## 前提条件

* WordPress 6.0以上
* PHP 7.4以上
* [Didit Console](https://business.didit.me)のアカウント

## ステップ1: Diditの認証情報を取得する

1. **[business.didit.me](https://business.didit.me)**でサインアップまたはログインします
2. **API & Webhooks**に移動し、**API Key**をコピーします
3. **Workflows**に移動し、ワークフローを作成または選択して、**Workflow ID**をコピーします

> [!NOTE]
>
> **UniLink URL**を使うと、APIキーなしで認証フローをプレビューできます。
> コンテンツゲートやWooCommerceの認証要件には、APIキーとワークフローIDを指定した**API Session**モードを使用してください。
> UniLinkでの完了だけでは、保護されたコンテンツのロック解除や注文の承認は行われません。

## ステップ2: プラグインをインストールする

1. **[0.3.4リリース](https://github.com/didit-protocol/plugin-wordpress/releases/tag/v0.3.4)**から`didit-verify-0.3.4.zip`をダウンロードします
2. WordPressの管理画面で、**プラグイン → 新規追加 → プラグインのアップロード**に移動します
3. ダウンロードしたZIPファイルを選択し、**今すぐインストール**をクリックします
4. **有効にする**をクリックします

> [!NOTE]
>
> Didit Verifyは[WordPress.org](https://wordpress.org/plugins/didit-verify/)にも掲載されています。
> インストール前にバージョンを確認してください。ここで説明するサーバー確認済みの認証動作を利用するには、0.3.4以降を使用してください。
> 0.3.4以降では、承認済みの認証が後から却下され、期限切れになり、またはレビュー中に戻った場合、保護されたコンテンツへのアクセスが取り消されます。
> ディレクトリに古いバージョンしかない場合は、上記のリリースZIPをインストールしてください。

> [!WARNING]
>
> 0.3.2より前のバージョンからアップグレードした後、以前の承認がサーバーで確認されていないユーザーは、保護されたコンテンツにアクセスしたり、認証が必要なチェックアウトを完了したりする前に、再度認証を行う必要があります。

## ステップ3: プラグインを設定する

**設定 → Didit Verify**に移動します。

### モードを選択する

| モード | 最適な用途 | 必要なもの |
| - | - | - |
| **UniLink** | 簡単なテスト | ワークフローのUniLink URLのみ |
| **API Session**(推奨) | 本番環境での利用 | ワークフローID + APIキー |

**UniLinkの場合:** Modeを「UniLink」に設定し、URLを貼り付けて保存します。

**API Sessionの場合:** Modeを「API Session」に設定し、ワークフローIDとAPIキーを入力して保存します。

> [!NOTE]
>
> APIキーはサーバー上に安全に保存され、訪問者に公開されることはありません。

### セッションオプションを設定する(APIモードのみ)

以下は、より細かく制御するための任意の設定です。

* **Vendor Data**: 各認証をDiditダッシュボード上の特定のユーザーに紐付け、誰が認証したかを追跡できるようにします。デフォルトはWordPressのユーザーID(例: `wp-42`)です。ユーザーのメールアドレスやカスタムプレフィックスを選択するか、無効にすることもできます。
* **Callback URL**: 認証後にユーザーがリダイレクトされる、サイト上のページです。Diditはクエリパラメーターとして`verificationSessionId`と`status`を付加します。
* **Callback Method**: どのデバイスがリダイレクトを処理するかを指定します。`initiator`(開始したデバイス)、`completer`(完了したデバイス)、または`both`です。
* **Language**: 49の言語から選択するか、ブラウザから自動検出させます。

### 表示オプションを設定する

* **Display Mode**: Modal(ポップアップオーバーレイ)またはEmbedded(ページ内にインライン表示)
* **Close Button**: モーダルのXボタンの表示・非表示
* **Exit Confirmation**: 閉じる際に「よろしいですか?」ダイアログを表示
* **Auto-close**: 認証完了時にモーダルを自動で閉じる
* **Debug Logging**: SDKイベントをブラウザのコンソールに記録(トラブルシューティング用)

### ボタンをカスタマイズする

**Button Appearance**では、以下を変更できます。

* ボタンのテキストと成功時のテキスト
* 背景色と文字色
* 角の丸み、パディング、フォントサイズ

値を変更すると、ライブプレビューがリアルタイムで更新されます。

## ステップ4: サイトに認証を追加する

### WooCommerceストアの場合

1. **設定 → Didit Verify → WooCommerce**で、**Require identity verification at checkout**にチェックを入れます
2. 認証セクションを表示する位置を選択します。
   * チェックアウトページの上部
   * 請求先情報の後
   * 注文メモの後
   * 「注文する」の前(推奨)
3. 必要に応じて**Product Scope**を選択します。すべての商品(デフォルト)、選択した商品のみ、または選択した商品以外のすべての商品から選べます。
   商品エディターの**Product data → Advanced**にある**Didit verification**チェックボックスで商品を指定します。
   認証が必要な商品が1つ以上含まれるカートでは、認証が必須になります。
   この範囲は、チェックアウトモードと購入後モードの両方に適用されます。
4. 必要に応じて、**設定 → Didit Verify → WooCommerce**で**Section Title**、**Checkout Message**、**Post-purchase Message**を編集します。空のフィールドにはデフォルトのテキストが使用されます
5. 必要に応じて**Send Billing Data**を有効にすると、顧客の氏名、メールアドレス、電話番号、住所がDiditに自動送信され、事前入力とクロスバリデーションに使用されます

> [!NOTE]
>
> 国コードは、WooCommerceのalpha-2形式から、Diditが必要とするalpha-3形式に自動で変換されます。

顧客が注文するには、サーバーで確認された**承認済み**の判定を受ける必要があります。
これはクラシックチェックアウトとブロックチェックアウトの両方に適用されます。
プラグインは、セッションが現在の購入者のものであり、別の注文ですでに使用されていないことを確認します。
セッションIDは参照用として注文に保存されます。

**After purchase**を選択した場合、サーバーが承認を確認するまで注文は保留のままになります。
ゲスト顧客は、有効な注文キーを使って注文ページから認証できます。
署名付きのステータス更新で承認済みの注文の保留を解除できるよう、**設定 → Didit Verify**に表示されるWebhook URLとシークレットを設定してください。

### 任意のWordPressページの場合

任意の固定ページまたは投稿に、次のショートコードを追加します。

```
[didit_verify]
```

Button Appearanceの設定に沿ったスタイルで、認証ボタンが表示されます。

ページごとにテキストを上書きできます。

```
[didit_verify text="Verify Now" success_text="Done!"]
```

また、特定のページで埋め込みモードを強制することもできます。

```
[didit_verify mode="embedded"]
```

## ステップ5: 認証済みユーザーにコンテンツを限定する (任意)

認証ステータスに応じてコンテンツを表示または非表示にします。

コンテンツの制限には、ログイン済みのユーザーであることと、API Sessionモードで確認された承認が必要です。
ブラウザのコールバックやリダイレクトのクエリパラメーターではアクセスは許可されません。

```
[didit_gate]
This content is only visible to verified users.
[/didit_gate]
```

未認証のユーザーには、メッセージと認証ボタンが表示されます。メッセージはカスタマイズできます。

```
[didit_gate message="Please verify to continue."]Secret content here.[/didit_gate]
```

ユーザーの認証ステータスを任意の場所に表示します。

```
[didit_status]
```

ログイン中のユーザーに対して「Identity Verified」または「Not Verified」と表示されます。

## 認証ステータスの確認

| 確認場所 | 方法 |
| - | - |
| **管理画面** | **Users → All Users**: 「Didit」列に、認証済みユーザーの場合は✓が表示されます |
| **WooCommerceの注文** | 注文詳細にDiditのセッションIDが表示されます |
| **ショートコード** | `[didit_status]`を使うと、任意のページにステータスを表示できます |

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

| 問題 | 解決方法 |
| - | - |
| 「Creating session...」のまま進まない | **Settings → Didit Verify**でWorkflow IDとAPIキーが正しいか確認してください |
| モーダルが開かない | ページに`[didit_verify]`が含まれているか、WooCommerceのチェックアウト時の認証が有効になっているか確認してください |
| 認証UIが別の言語で表示される | **Session Options**で**言語**の設定を変更してください |
| デバッグが必要な場合 | Display Optionsで**Debug Logging**を有効にし、ブラウザのコンソール (F12) を開いてSDKのイベントを確認してください |

## セキュリティ

このプラグインは安全なバックエンドプロキシとして動作します。APIキーがブラウザに渡ることはありません。すべてのセッションリクエストは次の仕組みで保護されています。

1. **CSRF nonce**: リクエストはお使いのWordPressサイトから送信されたものでなければなりません
2. **ログイン必須**: セッションを作成できるのは登録済みのユーザーのみです (設定で変更可能)
3. **レート制限**: ユーザーごとに1時間あたり10セッション、ゲストはIPごとに1時間あたり3セッションまでです
4. **入力のサニタイズ**: すべてのフィールドはサーバー側でホワイトリスト方式で検証され、サニタイズされます

セッションの作成時に、認証は現在の購入者または注文に紐付けられます。
プラグインは、ユーザーまたは注文を承認済みとする前に、Didit APIまたは検証済みのWebhookで判定を確認します。
認証が必須の場合、通常のログイン必須設定が有効になっていても、ゲストチェックアウトでセッションを作成できます。
購入後の認証には、有効な注文キーも必要です。

***

## 開発者向け

### PHPフック

このプラグインは、他のプラグインやテーマからフックできるWordPressアクションを発火します。

```php theme={null}
// When a user completes verification
add_action('didit_verification_completed', function ($user_id, $session_id, $status) {
    // Update CRM, send email, grant access, etc.
}, 10, 3);

// When a user cancels verification
add_action('didit_verification_cancelled', function ($user_id, $session_id) {
    // Log cancellation
}, 10, 2);

// When a session is created server-side
add_action('didit_session_created', function ($url, $user_id, $vendor_data) {
    // Log, notify, etc.
}, 10, 3);
```

### JavaScriptイベント

認証が完了すると、DOMイベントがディスパッチされます。

```javascript theme={null}
document.addEventListener('didit:complete', function (e) {
    console.log('Result:', e.detail); // { type, session }
});
```

### PHPで認証を確認する

```php theme={null}
$is_verified = Didit_Verify::init()->is_user_verified($user_id);
```

サーバー側での確認チェックを含めるには、このヘルパーを使用してください。
従来のユーザーメタデータやブラウザの`didit:complete`イベントだけを根拠にアクセスを許可しないでください。

## リソース

* [プラグインのソースコード (GitHub)](https://github.com/didit-protocol/plugin-wordpress)
* [Didit APIドキュメント](https://docs.didit.me/ja.md)
* [Didit Console](https://business.didit.me)
* [Create Session APIリファレンス](https://docs.didit.me/ja/sessions-api/create-session.md)


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