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

# 註冊小工具

> ENROLLMENT 小工具類型：在 OAuth 之後立即帶使用者完成帳戶設定，並由你選擇他們會看到哪些步驟——身分驗證、資金來源與 PIN。

`ENROLLMENT` 小工具類型會在使用者授權你的應用程式後，立即引導其完成帳戶設定。它的形式與其他小工具類型相同——使用者在授權後會直接被導向某個任務——但有一個不同之處：**你可以選擇使用者會看到哪些設定步驟。**

與付款與收款類型不同，這個小工具不會移動任何資金。沒有金額需要確認，也沒有交易需要核准。

<Note>
  `ENROLLMENT` 目前僅在 **staging** 提供。正式環境即將支援；在此之前，帶有 `transactionType: "ENROLLMENT"` 的正式環境權杖會被拒絕。
</Note>

<Info>
  **先決條件**

  * 已設定 OAuth 的小工具應用程式。請參考 [Configure App Widget](/developers/configure-app-widget)。任何應用程式類型皆可執行此小工具，包括僅限權限的 `OAuth Integration` 應用程式。
  * 使用者必須已授予你的應用程式所需的 scopes。Scopes 是針對整個應用程式檢查，而非逐步檢查。若有缺少，小工具會在第一個步驟前將使用者導向 OAuth 同意畫面，與其他小工具類型相同。不會因為缺少 scope 而跳過或使某個步驟失敗。
  * 與其他小工具類型相同，需要一個 OAuth 使用者與一個 access token。
</Info>

## 選擇步驟

在預先核准的交易權杖中，與 `transactionType: "ENROLLMENT"` 一同傳入有序的 `steps` 陣列：

```javascript theme={null}
import jwt from 'jsonwebtoken';

const generatedToken = jwt.sign(
  {
    apiKey: '', // Your apiKey
    transactionType: 'ENROLLMENT',
    externalId: '', // Your unique identifier for the user
    steps: ['KYC', 'FUNDING_SOURCE', 'PIN'],
    jti: uuidv4(),
  },
  secret, // Your apiSecret
  { expiresIn: '1 day' }
);
```

此小工具類型不需要 `amount`。權杖的其他部分維持不變——請參閱 [Set Up Your Server](/developers/setting-up-your-server)。

### 支援的步驟

| Step             | 使用者需要做什麼                                                                 |
| :--------------- | :----------------------------------------------------------------------- |
| `KYC`            | 完成個人身分驗證，必要時升級到文件拍攝。請參閱 [Verify by Widget](/verify-customers-by-widget)。 |
| `FUNDING_SOURCE` | 連結一個或多個資金來源——透過 Plaid 的銀行帳戶、銀行卡或 PayPal。                                 |
| `PIN`            | 設定其 Fluz 交易 PIN。                                                         |

<Note>
  這個小工具僅執行**個人**身分驗證。商業驗證（KYB）不在其步驟之中——請使用專用的 KYB 小工具類型。請參閱 [Business Registration](/docs/business-registration)。
</Note>

### 順序

步驟會依你列出的順序執行。Fluz 不會重新排序，且沒有無效的組合——三個步驟彼此之間沒有前後相依關係，因此 `["PIN", "FUNDING_SOURCE", "KYC"]` 與 `["KYC", "FUNDING_SOURCE", "PIN"]` 一樣有效。

請依照最符合你產品體驗的順序列出步驟。

## 跳過行為

使用者已經滿足的步驟會被靜默跳過——他們不會看到該步驟的畫面。

| Step             | 何時被跳過      |
| :--------------- | :--------- |
| `KYC`            | 使用者已通過身分驗證 |
| `PIN`            | 使用者已設定 PIN |
| `FUNDING_SOURCE` | **永不**     |

資金來源步驟永遠不會被跳過，因為已經有一個來源的使用者可能還想再新增其他來源。它一定會呈現，並由使用者自行決定何時繼續。

如果你要求的每個步驟都已經滿足，小工具會立即完成，而不會顯示任何步驟畫面。

<Info>
  由於 `FUNDING_SOURCE` 永遠不會自動跳過，凡是包含該步驟的 `steps` 清單至少會顯示一個畫面。若你希望能達到「無事可做、立即完成」的結果，請僅請求 `KYC` 與 `PIN`。
</Info>

## 資金來源步驟

此步驟刻意設計為開放式。使用者在一次造訪中可以新增任意多個資金來源——畫面會列出他們目前已新增的項目，並提供明確的 **Continue** 控制，因此是否前進由他們決定，而不是在第一次成功連結後自動前進。

不想新增任何來源的使用者可以在未新增來源的情況下繼續。

資金來源的變更目前尚未觸發 webhook。專用事件開發中。在正式推出前，請在流程完成後使用 `getWallet` 查詢讀取使用者的資金來源。請參閱 [Funding sources](/features/funding-sources)。

## 完成

當最後一個步驟完成時，小工具會顯示完成畫面。若你提供了 `callbackUrl`，畫面會帶有返回你應用程式的按鈕；否則會提供 **Done** 控制來關閉小工具。

<Warning>
  請不要僅因小工具被關閉就推斷成功——使用者可以在任何時間關閉它。請依賴 `onSuccess` 與 `onError` 回呼，以及各步驟的 webhook：身分驗證事件會獨立於小工具觸發。請參閱 [Webhooks](/fluz-dashboard/webhooks)。
</Warning>

## 被拒絕的權杖

在工作階段開啟時會驗證 `steps` 宣告。以下情況皆會拒絕該工作階段，而不會退化為部分流程：

| 問題                                            | 結果                     |
| :-------------------------------------------- | :--------------------- |
| 完全缺少 `steps`                                  | 缺少參數錯誤                 |
| `steps` 不是陣列，或為空陣列                            | 參數無效錯誤                 |
| `steps` 包含非 `KYC`、`FUNDING_SOURCE` 或 `PIN` 的值 | 參數無效錯誤，會指出不支援的值並列出支援的值 |
| `steps` 列出相同步驟兩次                              | 參數無效錯誤，會指出重複項目         |

使用者會看到一般性的「invalid widget link」畫面——不會顯示具體原因，因為權杖格式錯誤是整合問題，而非使用者能採取行動的事項。請檢查你的權杖產生器，並查看傳送到 `onError` 回呼的錯誤詳細資訊。

## 下一步

<CardGroup cols={2}>
  <Card title="設定你的伺服器" icon="server" href="/developers/setting-up-your-server">
    以你的語言產生預先核准的交易權杖。
  </Card>

  <Card title="嵌入小工具" icon="code" href="/developers/adding-the-js-widget-to-your-page">
    Script 標籤、初始化呼叫、回呼。
  </Card>

  <Card title="以小工具驗證" icon="circle-check-big" href="/verify-customers-by-widget">
    使用者在 KYC 步驟中的實際體驗。
  </Card>

  <Card title="資金來源" icon="coins" href="/features/funding-sources">
    連結完成後你可以對資金來源做什麼。
  </Card>
</CardGroup>
