# 入會審核與生效

> 協會如何接納會員，何時繳納會費，會員卡何時在入場時有效——以及該如何告知從您的網站申請入會的人。

URL: https://developers.vimine.network/zh-hant/guides/admission/

成為會員不是一筆付款：而是**協會的一項決定**。根據義大利《第三部門法典》（第 23 條），除非章程另有規定，由管理機構決定是否接受入會申請。Vimine 上的每個協會都會聲明自己如何接納會員，您的整合在顯示表單之前就應讀取這一資訊。

## 申請之前：預期結果

```
GET https://api.vimine.network/v1/aps/{slug}
→ { "aps": { …, "admission": { "model": "board", "delay_hours": 24 }, "approval_required": true } }
```

| `admission.model` | 申請會怎樣 |
| --- | --- |
| `board` | 申請保持**待處理**，直到理事會（或其授權的人）接受；會費在獲准入會**之後**繳納 |
| `provisional` | 會員立即獲臨時入會；理事會稍後追認 |
| `automatic` | 條件一滿足，會員資格即生效：免費類型立即生效，收費類型在繳納會費後生效 |

`delay_hours` 是從獲准入會到會員卡**可以使用**之間的小時數（0 = 立即）。許多擁有對公眾開放場地的協會都採取這一審慎做法：會員資格自獲准入會起生效，但會員卡要過一段時間才能在入場時使用。請在對方入會時告知：一句“您的會員卡將在 24 小時後可用”，就能避免在門口發生爭執。

`approval_required` 為相容而保留：當模式為 `board` 時，它為 `true`。請讀取 `admission`。

## 申請的回應

`POST /v1/me/membership`、`POST /v1/enroll/confirm` 和 `GET /v1/me/membership` 給出的資訊相同，欄位也相同：

| 欄位 | 含義 |
| --- | --- |
| `status` | `pending` · `active` · `suspended` · `revoked` · `rejected` |
| `pending_reasons` | 仍在等待的原因，**按順序**排列：`approval`（協會尚需決定），然後是 `payment`（會費）。生效後為空 |
| `payment_open` | 現在可以繳納會費嗎？在獲准入會之前為 `false`：**獲准入會後才開放繳費** |
| `valid_from` | 會員卡何時可以使用，用於處於間隔期內的有效會員資格；否則為 `null` |
| `usable` *（僅 `GET /v1/me/membership`）* | 會員卡此刻是否可在入場時使用 |
| `card` *（僅 `GET /v1/me/membership`）* | 簽名權杖——會員資格生效之前為 `null` |

採用 `board` 模式且類型收費時，順序如下：

1. 申請 → `pending`、`["approval", "payment"]`、`payment_open: false`——**不要顯示**付款說明或付款按鈕；
2. 協會接受申請 → `["payment"]`、`payment_open: true`——現在可以顯示了；申請人也會收到一封電子郵件；
3. 會費已記錄 → `active`，可能帶有一個未來的 `valid_from`；
4. 過了 `valid_from` → `usable: true`，會員卡在任何人核驗時都傳回 `valid`。

在入會審核開始之前，申請會員資格的人就必須**已識別身份**——透過稅號，或透過出生日期、出生地和出生國：未識別身份的個人資料會傳回 `identification_required`。此後，無論有沒有稅號，入會審核對所有人都一樣（參見[沒有義大利稅號的會員](https://developers.vimine.network/zh-hant/guides/members-without-cf/)）。

## 申請未獲接受時

`rejected` 是一種獨立的結果：它不是撤銷（撤銷針對的是原本的會員），而是一份**未獲接受**的申請。該決定附有理由，由協會通知申請人；申請人可以在六十天內要求由會員大會作出裁決。對您的整合而言：沒有會員卡，也沒有可以提供的付款方式；正確的提示是請當事人聯絡協會。

## 已生效但尚不可用的會員卡

在間隔期內，會員卡**已經存在**——會員能看到它，也能儲存到 Wallet——但還不算數：

- `GET /v1/me/membership` → `status: "active"`、`verdict: "not_yet_valid"`、`usable: false`、`valid_from`；
- `GET /v1/verify/{token}` → `{ "status": "inactive", "reason": "not_yet_valid", "valid_from": "…" }`；
- `POST /v1/checkins` → `verdict: "not_yet_valid"`，並帶有 `valid_from`；**掃描照樣會被記錄**；
- 權杖在 `nbf` 中攜帶同一時刻：離線掃描器自己就能得出相同的結果（參見[嵌入與會員卡核驗](https://developers.vimine.network/zh-hant/guides/embed-and-verify/)）。

對於僅限會員的活動，如果活動在 `valid_from` 之前開始，報名資格會傳回 `membership_not_yet_valid`；對於之後開始的活動，會員照常報名。

## 變更內容（2026-09-19 版）

全部為新增，但比對取值的人會注意到：

- `status` 可能為 **`rejected`**；`verdict` 可能為 **`not_yet_valid`**；`/v1/verify` 的 `reason` 也可能為 `not_yet_valid`；
- `pending_reasons` 是**有序的**（`approval` 在 `payment` 之前）：此前順序沒有意義；
- 新欄位 `admission`、`payment_open`、`valid_from`、`usable`；`payment_instructions` 只在開放繳費後才出現；
- 在會員資格生效之前，`card` 為 `null`——`/v1/me/membership/card`、`card.svg`、`card/email`、`wallet/google` 傳回 `409 not_active`；
- 新增一個不具備活動報名資格的原因：`membership_not_yet_valid`。
