> ## Documentation Index
> Fetch the complete documentation index at: https://supastack.dev/llms.txt
> Use this file to discover all available pages before exploring further.
> For the full documentation corpus in one file, fetch: https://supastack.dev/llms-full.txt

# 支付與訂閱

Stripe 結賬、套餐管理與 entitlement 邊界。

## 選擇並測試您的支付服務

計費處理付款。訪問許可權作為權利單獨儲存。完成持久帳戶設定，然後在正在執行的 Web 應用程式中開啟 /billing 以檢視計劃介面。通過 BILLING_PROVIDER=local，您正在探索當地行為而不是收集真金白銀。

選擇一個受支援的支付提供商，按照其設定指南進行操作，建立您自己的測試產品和價格，並將指定的伺服器設定複製到 apps/web/.env.local. 中，儲存並重新啟動 Web 伺服器。使用該提供商的沙箱指令完成一項簽出，然後在提供商的 Webhook 到達後檢查工作區的訪問狀態。 Webhook 是提供商向您的伺服器傳送的有關付款事件的簽名訊息。

僅成功頁面並不能解鎖功能。如果結帳完成但訪問仍處於非活動狀態，請在重複付款之前檢查提供商的 Webhook 傳送和伺服器的事件處理。測試取消和過期訪問也是如此。手機購買使用單獨的 RevenueCat/商店設定，而不是此 Web 結帳。

[選擇計費介面卡及其設定](https://supastack.dev/zh-tw/docs/modules/billing-configuration.md)

[自行設定產品和價格](https://supastack.dev/zh-tw/docs/web/project-structure.md)

[在測試環境中設定Stripe](https://supastack.dev/zh-tw/docs/web/setup-payments.md)


## Web 計費

Web應用程式支援您使用BILLING_PROVIDER選擇的計費提供商；條紋是一種選擇。開啟/計費網路計劃和訂閱管理。按照所選提供商的指南，在匹配的測試或即時環境中設定其僅伺服器憑據、產品或價格 ID 以及 Webhook 驗證設定。


## 通過許可權授權

結賬跳轉不是訪問已啟用的證據。服務端持有的許可權決定工作區能否使用付費能力。即使介面已經隱藏了該動作，也要在動作邊界檢查這個許可權。


## 驗證生命週期

用沙箱事件驗證啟用、更新、取消與 webhook 處理。保證重複事件安全，並確保失效的許可權會阻止付費操作。原生移動購買仍是單獨的 RevenueCat 整合邊界。


## 安裝與配置

套餐目錄位於 src/product-plans.ts,驅動 /billing 介面和 /choose-plan 入門步驟。計費在伺服器端配置:BILLING_PROVIDER=stripe、STRIPE_SECRET_KEY、每個套餐和週期的 price id,以及 STRIPE_WEBHOOK_SECRET。Lemon Squeezy 可作為替代介面卡。

按席位計費的套餐使用可編輯的席位步進器（src/seat-count.ts），席位數量會隨結賬會話一起傳遞，使計費席位數與工作區保持一致。套餐還可以在 src/product-plans.ts 中宣告 meteredUsage，由每小時執行的 billing.usage-report 任務將 usage_counter 增量上報至 Stripe 計費計量器；同時工作區所有者可在“設定 → 用量”（src/usage-meters.ts 中的 USAGE_METERS）中設定每月 AI 預算與各計量器的硬性上限。

```
Checkout: POST /api/billing/checkout
Portal:   POST /api/billing/portal
Webhook:  POST /api/billing/webhook  (signature-verified)
```


## 實現流程

結賬重定向只是一個待定的意圖 —— 當簽名的 webhook 到達並且伺服器擁有的 entitlement 更新時,訪問許可權才會改變。即使介面已經隱藏了付費操作,也要用伺服器邊界的 entitlement 檢查(entitlement-gate.tsx / entitlement-check.ts)對其進行門禁。

客戶門戶管理套餐變更、取消和支付方式。讓訂閱狀態對工作區成員可讀,並將原生移動端購買放在單獨的 RevenueCat 邊界之後。


## 下一篇

[資料庫與遷移](https://supastack.dev/zh-tw/docs/web/database.md)
