# 時間加成 (/features/promotions/bonuses)





時間加成 [#時間加成]

透過時間加成贈送顧客更多使用時間，提升年繳轉換率或延長試用體驗。

***

額外月份 [#額外月份]

年繳方案贈送額外月份，首期週期延長，續約時恢復標準週期。

運作方式 [#運作方式]

顧客購買年繳方案時，額外獲得指定月數的使用時間，付款金額維持原價。

**範例：**

* 年繳再送 2 個月 → 首期 14 個月，續約時恢復 12 個月
* 年繳再送 1 個月 → 首期 13 個月，續約時恢復 12 個月

適用場景 [#適用場景]

* **年繳促銷** - 鼓勵顧客選擇年繳而非月繳
* **周年慶活動** - 限時加碼回饋
* **VIP 專屬優惠** - 忠實顧客獨享

訂閱週期 [#訂閱週期]

```
使用額外月份優惠（送 2 個月）
        ↓
首期週期：14 個月
付款金額：原年繳價格
        ↓
14 個月後續約
        ↓
續約週期：12 個月（恢復標準週期）
付款金額：原年繳價格
```

限制條件 [#限制條件]

額外月份優惠**僅適用於年繳方案**。

如果顧客嘗試在月繳方案使用：

* 系統顯示「此優惠碼僅適用於年繳方案」
* 引導顧客切換到年繳方案

建立額外月份優惠 [#建立額外月份優惠]

1. 前往「優惠促銷」
2. 點擊「建立優惠」
3. 選擇「額外月份」類型
4. 設定贈送月數
5. 系統自動限定年繳方案
6. 儲存

***

延長試用 [#延長試用]

延長產品的試用期，讓顧客有更多時間體驗。

<Callout type="info">
  延長試用是在產品原有試用期的基礎上增加天數。關於試用期的完整運作方式（信用卡驗證、狀態流程、試用轉正式等），請參考[試用期文件](/features/payments/trials)。
</Callout>

運作方式 [#運作方式-1]

在產品原有試用期的基礎上，額外增加指定天數的試用時間。

**範例：**

* 產品原有 7 天試用 + 延長 7 天 = 共 14 天試用
* 產品原有 14 天試用 + 延長 14 天 = 共 28 天試用

適用場景 [#適用場景-1]

* **特定客群優惠** - 為特定用戶提供更長試用期
* **行銷活動** - 限時延長試用吸引註冊
* **客戶挽留** - 對猶豫的潛在客戶提供額外體驗時間
* **企業客戶** - B2B 客戶通常需要更長評估期

與免費試用的差異 [#與免費試用的差異]

| 特性   | 產品試用期 | 延長試用優惠   |
| ---- | ----- | -------- |
| 設定位置 | 產品設定  | 優惠設定     |
| 適用對象 | 所有顧客  | 持有優惠碼的顧客 |
| 彈性   | 固定天數  | 可依活動調整   |
| 追蹤   | 產品層級  | 可追蹤優惠成效  |

建立延長試用優惠 [#建立延長試用優惠]

1. 前往「優惠促銷」
2. 點擊「建立優惠」
3. 選擇「延長試用」類型
4. 設定額外試用天數
5. 設定其他限制（可選）
6. 儲存

顧客體驗 [#顧客體驗]

顧客在結帳時會看到：

```
試用期：21 天（原 7 天 + 額外 14 天）
試用期結束後將以 $299/月 收費
```

***

組合使用 [#組合使用]

時間加成可與價格優惠組合使用，創造更吸引人的促銷方案。

範例組合 [#範例組合]

| 組合            | 效果              |
| ------------- | --------------- |
| 延長試用 + 首期特價   | 21 天試用 + 首月 $1  |
| 額外月份 + 百分比折扣  | 買 12 送 2 + 9 折  |
| 延長試用 + 固定金額折扣 | 14 天試用 + 折 $100 |

注意事項 [#注意事項]

* 組合優惠需確保商業邏輯合理
* 建議設定使用次數上限控制成本
* 追蹤組合優惠的整體 ROI

***

技術整合 [#技術整合]

套用時間加成優惠 [#套用時間加成優惠]

```typescript
const response = await fetch('https://api.recur.tw/v1/checkout/sessions', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer sk_test_xxx',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    productId: 'prod_xxx',
    mode: 'SUBSCRIPTION',
    promotionCode: 'EXTRA2MONTHS', // 額外月份優惠碼
    successUrl: 'https://your-site.com/success',
    cancelUrl: 'https://your-site.com/cancel',
  }),
});
```

相關 Webhook 事件 [#相關-webhook-事件]

訂閱相關事件的 payload 會包含時間加成資訊：

| 欄位                   | 說明               |
| -------------------- | ---------------- |
| `trial_ends_at`      | 試用結束日期（含延長試用天數）  |
| `current_period_end` | 當前週期結束（含額外月份）    |
| `coupon`             | 優惠資訊（含 bonus 設定） |

**重要事件：**

* `subscription.created` - 訂閱建立，`current_period_end` 已包含額外月份
* `subscription.activated` - 訂閱啟用，`trial_ends_at` 已包含延長試用
* `subscription.trial_ending` - 延長試用即將結束（提前 3 天通知）
* `subscription.renewed` - 續訂時恢復標準週期（不再包含額外月份）

訂閱資料 [#訂閱資料]

**延長試用範例：**

原本 7 天試用 + 延長 14 天 = 共 21 天：

```json
{
  "id": "sub_xxx",
  "status": "trialing",
  "trial_ends_at": "2024-02-05T00:00:00Z",
  "current_period_start": "2024-01-15T00:00:00Z",
  "current_period_end": "2024-02-05T00:00:00Z",
  "coupon": {
    "id": "cpn_trial14",
    "name": "延長試用 14 天",
    "discount_type": "PERCENTAGE",
    "discount_amount": 0,
    "duration": "ONCE"
  }
}
```

**額外月份範例：**

年繳 12 個月 + 額外 2 個月 = 首期 14 個月：

```json
{
  "id": "sub_xxx",
  "status": "active",
  "trial_ends_at": null,
  "current_period_start": "2024-01-15T00:00:00Z",
  "current_period_end": "2025-03-15T00:00:00Z",
  "next_billing_date": "2025-03-15T00:00:00Z",
  "coupon": {
    "id": "cpn_bonus2m",
    "name": "年繳再送 2 個月",
    "discount_type": "PERCENTAGE",
    "discount_amount": 0,
    "duration": "ONCE"
  }
}
```

<Callout type="info">
  **續訂恢復標準週期**

  額外月份僅在首期生效。續訂時 `current_period_end` 會恢復為標準 12 個月週期。
</Callout>

詳細 Webhook payload 格式請參考 [Webhook 事件類型](/guides/webhooks/events)。

***

最佳實踐 [#最佳實踐]

1. **明確說明價值** - 讓顧客清楚知道獲得多少額外時間
2. **設定合理天數** - 延長試用不宜過長，避免降低轉換急迫性
3. **追蹤轉換率** - 比較有無時間加成的轉換差異
4. **搭配提醒機制** - 在試用或首期即將結束前發送通知
5. **限定使用條件** - 考慮限定首次購買或特定商品
