For AI agents: fetch the complete documentation index at /llms.txt, the full documentation corpus at /llms-full.txt, the agent skill at /skill.md, or this page as Markdown at /zh-tw/docs/web/billing.md (or send Accept: text/markdown).
支付與訂閱
Stripe 結賬、套餐管理與 entitlement 邊界。
選擇並測試您的支付服務
計費處理付款。訪問許可權作為權利單獨儲存。完成持久帳戶設定,然後在正在執行的 Web 應用程式中開啟 /billing 以檢視計劃介面。通過 BILLING_PROVIDER=local,您正在探索當地行為而不是收集真金白銀。
選擇一個受支援的支付提供商,按照其設定指南進行操作,建立您自己的測試產品和價格,並將指定的伺服器設定複製到 apps/web/.env.local. 中,儲存並重新啟動 Web 伺服器。使用該提供商的沙箱指令完成一項簽出,然後在提供商的 Webhook 到達後檢查工作區的訪問狀態。 Webhook 是提供商向您的伺服器傳送的有關付款事件的簽名訊息。
僅成功頁面並不能解鎖功能。如果結帳完成但訪問仍處於非活動狀態,請在重複付款之前檢查提供商的 Webhook 傳送和伺服器的事件處理。測試取消和過期訪問也是如此。手機購買使用單獨的 RevenueCat/商店設定,而不是此 Web 結帳。
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 邊界之後。